Last active
August 29, 2015 14:02
-
-
Save daringer/78649db64ff04a3b9849 to your computer and use it in GitHub Desktop.
Fancier MOSFET devices for (La)Tex/Tikz/CircuiTikz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%%% author: Markus Meissner <[email protected]> | |
%%% | |
%%% simple inverter example circuitikz | |
%%% | |
%%% TO USE FANCY MOSFET DEVICES: | |
%%% - get pgfcirctripoles.sty from https://gist.github.com/daringer/78649db64ff04a3b9849 | |
%%% - place it in the _same directory_ as your .tex source file | |
%%% - TeX will now replace the pgfcirctripoles.tex from circuitikz with this one | |
%%% - set some style definitions (see below) | |
%%% - compile your TeX code and use the fancy MOSFET devices | |
%%% | |
%%% HOW IT LOOKS: example_inverter.png | |
\documentclass{article} | |
% use tikz and circuitikz packages | |
\usepackage{tikz} | |
\usepackage[european]{circuitikz} | |
% some fine-tuning of the FANCY MOSFET MODEL | |
\ctikzset{tripoles/mos style/arrows} | |
\ctikzset{tripoles/nmos/gate height = 0.375} | |
\ctikzset{tripoles/nmos/base height = 0.375} | |
\ctikzset{tripoles/nmos/base width = 0.4} | |
\ctikzset{tripoles/pmos/gate height = 0.375} | |
\ctikzset{tripoles/pmos/base height = 0.375} | |
\ctikzset{tripoles/pmos/base width = 0.4} | |
% reduce ground-symbol size | |
\ctikzset{monopoles/ground/width = 0.17} | |
\ctikzset{nodes width = 0.05} | |
\tikzstyle{grey}=[rectangle,fill=black!10,inner sep=0mm,text=black,thick,draw=black!90] | |
\begin{document} | |
\begin{circuitikz}[line width=0.85pt] | |
% bg | |
\node[grey,minimum width=3cm,minimum height=5cm] (bg) at (-0.5,0) {}; | |
% components | |
\draw (0,0) node[nmos,anchor=D] (n1) {} | |
(n1.D) node[pmos,anchor=D] (p1) {}; | |
\draw (n1.S) node[sground] (g1) {}; | |
\draw (p1.S) node[rground,yscale=-1] (g2) {}; | |
% wires | |
\draw (n1.G) -- (p1.G); | |
\end{circuitikz} | |
\end{document} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% Copyright 2007-2009 by Massimo Redaelli | |
% | |
% Changes for fancier MOSFET devices: | |
% Markus Meissner <[email protected]> | |
% | |
% This file may be distributed and/or modified | |
% | |
% 1. under the LaTeX Project Public License and/or | |
% 2. under the GNU Public License. | |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
%% Tripoles | |
%\long\def\pgfcircdeclaremixed{ | |
\pgfdeclareshape{mixer} | |
{ | |
\savedanchor\northwest{% | |
\pgf@y= \pgfkeysvalueof{/tikz/circuitikz/bipoles/length} | |
\pgf@y=\pgfkeysvalueof{/tikz/circuitikz/tripoles/mixer/height}\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{left}{% | |
\northwest | |
\pgf@y=0pt | |
} | |
\anchor{in 1}{ | |
\northwest | |
\pgf@y=0pt | |
} | |
\anchor{in}{ | |
\northwest | |
\pgf@y=0pt | |
} | |
\anchor{in 2}{ | |
\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}} | |
\northwest | |
\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/mixer/margin}\pgf@circ@res@up | |
\pgfscope | |
\pgfpathellipse | |
{\pgfpoint{0pt}{0pt}} | |
{\pgfpoint{\pgf@circ@res@other}{0pt}} | |
{\pgfpoint{0pt}{\pgf@circ@res@other}} | |
\pgfpathmoveto{\pgfpointorigin} | |
\pgfpathmoveto{\pgfpointpolar{135}{\pgf@circ@res@other}} | |
\pgfpathlineto{\pgfpointpolar{-45}{\pgf@circ@res@other}} | |
\pgfpathmoveto{\pgfpointorigin} | |
\pgfpathmoveto{\pgfpointpolar{45}{\pgf@circ@res@other}} | |
\pgfpathlineto{\pgfpointpolar{-135}{\pgf@circ@res@other}} | |
\pgfsetlinewidth{2\pgflinewidth} | |
\pgfusepath{draw} | |
\endpgfscope | |
\pgfpathmoveto{\pgfpoint{0pt}{-\pgf@circ@res@other}} | |
\pgfpathlineto{\pgfpoint{0pt}{-\pgf@circ@res@up}} | |
\pgfpathmoveto{\pgfpoint{-\pgf@circ@res@other}{0pt}} | |
\pgfpathlineto{\pgfpoint{-\pgf@circ@res@up}{0pt}} | |
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@other}{0pt}} | |
\pgfpathlineto{\pgfpoint{\pgf@circ@res@up}{0pt}} | |
\pgfusepath{draw} | |
} | |
} | |
%} | |
\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@[email protected]\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@[email protected]\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@[email protected]\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@[email protected]\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} | |
% gate | |
\pgfscope | |
\pgfpathmoveto{\pgfpoint | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left + 1.25} | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@up}} | |
\pgfpathlineto{\pgfpoint | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left + 1.25} | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate height}\pgf@circ@res@down}} | |
\pgfsetlinewidth{2\pgflinewidth} | |
\pgfusepath{draw} | |
\endpgfscope | |
% if arrows | |
\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 | |
% endif arrows | |
% connection gate | |
\pgfpathmoveto{\pgfpoint | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/nmos/gate width}\pgf@circ@res@left+1.0} | |
{\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}{ | |
% anchors | |
\anchor{S}{ | |
\northeast | |
} | |
\anchor{source}{ | |
\northeast | |
} | |
\anchor{D}{ | |
\northeast | |
\pgf@y=-\pgf@y | |
} | |
\anchor{drain}{ | |
\northeast | |
\pgf@y=-\pgf@y | |
} | |
}{% | |
% right L (2lines) of gate | |
\pgfscope | |
\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} | |
\endpgfscope | |
% if arrows | |
\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 | |
%% endif arrows | |
% below gate line | |
\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}} | |
\pgfusepath{draw} | |
\endpgfscope | |
% left L lines | |
\pgfscope | |
\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}} | |
\endpgfscope | |
\pgfusepath{draw} | |
% gate | |
\pgfscope | |
\pgfsetlinewidth{2\pgflinewidth} | |
\pgfpathmoveto{\pgfpoint | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left+1.25} | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@up}} | |
\pgfpathlineto{\pgfpoint | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left+1.25} | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate height}\pgf@circ@res@down}} | |
\pgfusepath{draw} | |
\endpgfscope | |
\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} | |
% pmos-dot | |
\pgfscope | |
\pgfpathcircle{\pgfpoint | |
{\pgfkeysvalueof{/tikz/circuitikz/tripoles/pmos/gate width}\pgf@circ@res@left + 0.75 - \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}} | |
\pgfsetlinewidth{2\pgflinewidth} | |
\color{white} | |
\pgfsetstrokecolor{black} | |
\pgfusepath{draw,fill} | |
\endpgfscope | |
} | |
\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 | |
} | |
\endinput |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment