You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
679 lines
22 KiB
679 lines
22 KiB
% Copyright 2008 by Till Tantau and others Wibrow
|
|
%
|
|
% This file may be distributed and/or modified
|
|
%
|
|
% 1. under the LaTeX Project Public License and/or
|
|
% 2. under the GNU Public License.
|
|
%
|
|
% See the file doc/generic/pgf/licenses/LICENSE for more details.
|
|
|
|
|
|
%
|
|
% Resistor shape based on a zig-zag-line
|
|
%
|
|
|
|
\pgfdeclareshape{var resistor IEC}
|
|
{%
|
|
\inheritsavedanchors[from=rectangle ee]%
|
|
\inheritanchor[from=rectangle ee]{center}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
\inheritanchorborder[from=rectangle ee]%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
|
|
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
% Middle line
|
|
\pgf@yc=.5\pgf@ya
|
|
\advance\pgf@yc by.5\pgf@yb
|
|
% Height
|
|
\pgf@xc=-.5\pgf@ya
|
|
\advance\pgf@xc by.5\pgf@yb
|
|
% Start point
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yc}}
|
|
% Lines
|
|
\advance\pgf@xb by.1pt%
|
|
\pgfutil@loop%
|
|
\advance\pgf@xa by4\pgf@xc\relax%
|
|
\ifdim\pgf@xa<\pgf@xb%
|
|
\advance\pgf@xa by-3\pgf@xc%
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
|
|
\advance\pgf@xa by2\pgf@xc%
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
|
|
\advance\pgf@xa by\pgf@xc%
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yc}}%
|
|
\pgfutil@repeat%
|
|
\advance\pgf@xb by-.1pt%
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yc}}%
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
%
|
|
% Inductor shape based on a bumpy line
|
|
%
|
|
|
|
\pgfdeclareshape{inductor IEC}
|
|
{%
|
|
\savedanchor\northeast{%
|
|
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
|
|
\pgf@x=\pgf@xa%
|
|
\advance\pgf@x by .5\pgf@xb%
|
|
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
|
|
\pgf@y=\pgf@ya%
|
|
\advance\pgf@y by\pgf@yb%
|
|
}%
|
|
\savedanchor\southwest{%
|
|
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
|
|
\pgf@x=-\pgf@xa%
|
|
\advance\pgf@x by -.5\pgf@xb%
|
|
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\pgf@y=-\pgf@ya%
|
|
}%
|
|
|
|
\anchor{center}{\pgfpointorigin}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
|
|
\anchorborder{%
|
|
\ifdim\pgf@y<0pt%
|
|
% tricky... simpilfy to the origin...
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgf@process{\southwest}%
|
|
\advance\pgf@y by-0.5pt%
|
|
\pgf@xa=\pgf@x%
|
|
\pgf@ya=\pgf@y%
|
|
\pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\pgfqpoint{-\pgf@xa}{-\pgf@ya}}}%
|
|
\else%
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\northeast}}%
|
|
\fi%
|
|
}%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xa=-\pgf@x \pgf@ya=0pt
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
% Height
|
|
\pgf@xc=\pgf@yb%
|
|
% Start point
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{0pt}}
|
|
% Lines
|
|
\advance\pgf@xb by.1pt%
|
|
\pgfutil@loop%
|
|
\advance\pgf@xa by2\pgf@xc\relax%
|
|
\ifdim\pgf@xa<\pgf@xb%
|
|
\pgfpatharc{180}{0}{\pgf@xc}%
|
|
\pgfutil@repeat%
|
|
\advance\pgf@xb by-.1pt%
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{0pt}}%
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
|
|
%
|
|
% Simple capacitor, consisting of two parallel lines
|
|
%
|
|
|
|
\pgfdeclareshape{capacitor IEC}
|
|
{%
|
|
\inheritsavedanchors[from=rectangle ee]%
|
|
\inheritanchor[from=rectangle ee]{center}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
\inheritanchorborder[from=rectangle ee]%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
|
|
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
|
|
%
|
|
% Simple ground, consisting of three lines, getting smaller
|
|
%
|
|
|
|
\pgfdeclareshape{ground IEC}
|
|
{%
|
|
\inheritsavedanchors[from=rectangle ee]%
|
|
\inheritanchor[from=rectangle ee]{center}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
\inheritanchorborder[from=rectangle ee]%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
|
|
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
% First line, simple
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
|
|
% Advance to middle
|
|
\pgfmathsetlength\pgf@xa{.5\pgf@xa+.5\pgf@xb}
|
|
% Make smaller
|
|
\pgfmathsetlength\pgf@yc{.16666\pgf@yb-.16666\pgf@ya}
|
|
\advance\pgf@ya by\pgf@yc
|
|
\advance\pgf@yb by-\pgf@yc
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
|
|
% Make even smaller
|
|
\advance\pgf@ya by\pgf@yc
|
|
\advance\pgf@yb by-\pgf@yc
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
%
|
|
% Battery, consisting of two parallel lines, one smaller than
|
|
% the other
|
|
%
|
|
|
|
\pgfdeclareshape{battery IEC}
|
|
{%
|
|
\inheritsavedanchors[from=rectangle ee]%
|
|
\inheritanchor[from=rectangle ee]{center}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
\inheritanchorborder[from=rectangle ee]%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
|
|
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
% First line, simple
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
|
|
% Make smaller
|
|
\pgfmathsetlength\pgf@yc{.25\pgf@yb-.25\pgf@ya}
|
|
\advance\pgf@ya by\pgf@yc
|
|
\advance\pgf@yb by-\pgf@yc
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
|
|
}%
|
|
}%
|
|
|
|
|
|
%
|
|
% Special diodes
|
|
%
|
|
|
|
|
|
\pgfdeclareshape{breakdown diode IEC}
|
|
{%
|
|
\inheritsavedanchors[from=rectangle ee]%
|
|
\inheritanchor[from=rectangle ee]{center}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
\inheritanchorborder[from=rectangle ee]%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
|
|
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
\pgf@xc=.5\pgf@xa \advance\pgf@xc by.5\pgf@xb
|
|
\pgf@yc=.5\pgf@ya
|
|
\advance\pgf@yc by .5\pgf@yb
|
|
% Triangles:
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@yc}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
|
|
\pgfpathclose
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@yc}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
|
|
\pgfpathclose
|
|
}%
|
|
|
|
|
|
\beforebackgroundpath{
|
|
{
|
|
\pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
|
|
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
\pgf@yc=.5\pgf@ya
|
|
\advance\pgf@yc by.5\pgf@yb
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yc}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yc}}
|
|
\pgfusepathqstroke
|
|
\pgf@xc=.5\pgf@xa
|
|
\advance\pgf@xc by.5\pgf@xb
|
|
\pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}
|
|
\pgf@yc=.5\pgf@yb
|
|
\advance\pgf@yc by-.5\pgf@ya
|
|
\pgftransformscale{\pgf@sys@tonumber{\pgf@yc}}
|
|
\pgfpathmoveto{\pgfqpoint{-.5pt}{-1pt}}
|
|
\pgfpathlineto{\pgfqpoint{0pt}{-1pt}}
|
|
\pgfpathlineto{\pgfqpoint{0pt}{1pt}}
|
|
\pgfpathlineto{\pgfqpoint{.5pt}{1pt}}
|
|
\pgfusepathqstroke
|
|
}
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
|
|
|
|
|
|
% Generic shapes
|
|
%
|
|
% When these shapes are used, you can set a key derived form the
|
|
% shapes name to some code that will be executed as the before
|
|
% background path. This means that the basic shape is fixed, but
|
|
% things like a special line inside the shape or at the border can be
|
|
% added without having to define a whole new shape.
|
|
|
|
|
|
\pgfdeclareshape{generic circle IEC}
|
|
{%
|
|
% This shape is a generic circle, to which you can add something to
|
|
% the before background path using the key
|
|
% /pgf/generic circle IEC/before background
|
|
% When this key is invoked, the transformation matrix will have been
|
|
% setup such that the circle's center is at the origin and that the
|
|
% position \pgfpoint{1pt}{0pt} lies exactly on the top of the circle
|
|
% (and, there, on the middle of the line).
|
|
|
|
\inheritsavedanchors[from=circle ee]%
|
|
\inheritanchorborder[from=circle ee]%
|
|
\inheritanchor[from=circle ee]{north}%
|
|
\inheritanchor[from=circle ee]{north west}%
|
|
\inheritanchor[from=circle ee]{north east}%
|
|
\inheritanchor[from=circle ee]{center}%
|
|
\inheritanchor[from=circle ee]{west}%
|
|
\inheritanchor[from=circle ee]{east}%
|
|
\inheritanchor[from=circle ee]{south}%
|
|
\inheritanchor[from=circle ee]{south west}%
|
|
\inheritanchor[from=circle ee]{south east}%
|
|
\inheritanchor[from=circle ee]{input}%
|
|
\inheritanchor[from=circle ee]{output}%
|
|
\inheritbackgroundpath[from=circle ee]%
|
|
|
|
\beforebackgroundpath{
|
|
{
|
|
\centerpoint%
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgftransformshift{}
|
|
\pgfutil@tempdima=\radius%
|
|
\pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\ifdim\pgf@xb<\pgf@yb%
|
|
\advance\pgfutil@tempdima by-\pgf@yb%
|
|
\else%
|
|
\advance\pgfutil@tempdima by-\pgf@xb%
|
|
\fi%
|
|
\pgftransformscale{\pgf@sys@tonumber{\pgfutil@tempdima}}
|
|
\pgfkeysvalueof{/pgf/generic circle IEC/before background}
|
|
}
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
%
|
|
% Generic diode, based on a rectangle
|
|
%
|
|
|
|
\pgfdeclareshape{generic diode IEC}
|
|
{%
|
|
% This shape is a generic diode, to which you can add something to
|
|
% the before background path using the key
|
|
% /pgf/generic diode IEC/before background
|
|
% When this key is invoked, the transformation matrix will have been
|
|
% setup such that the center is at the tip of the diode. The
|
|
% position \pgfpoint{1pt}{0pt} lies exactly on the top of the
|
|
% (suggested) line before the diode.
|
|
|
|
\inheritsavedanchors[from=rectangle ee]%
|
|
\inheritanchor[from=rectangle ee]{center}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
\inheritanchorborder[from=rectangle ee]%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
|
|
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
% Move tip back a little bit
|
|
\advance\pgf@xb by-.5\pgflinewidth
|
|
% Triangle triangle:
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
|
|
\pgf@yc=.5\pgf@ya
|
|
\advance\pgf@yc by .5\pgf@yb
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yc}}
|
|
\pgfpathclose
|
|
}%
|
|
|
|
|
|
\beforebackgroundpath{
|
|
{
|
|
\pgf@process{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
|
|
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
\pgf@yc=.5\pgf@ya
|
|
\advance\pgf@yc by.5\pgf@yb
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yc}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yc}}
|
|
\pgfusepathqstroke
|
|
\pgftransformshift{\pgfqpoint{\pgf@xb}{\pgf@yc}}
|
|
\pgf@yc=.5\pgf@yb
|
|
\advance\pgf@yc by-.5\pgf@ya
|
|
\pgftransformscale{\pgf@sys@tonumber{\pgf@yc}}
|
|
\pgfkeysvalueof{/pgf/generic diode IEC/before background}
|
|
}
|
|
}%
|
|
}%
|
|
|
|
|
|
\pgfkeys{
|
|
/pgf/generic circle IEC/before background/.initial=,
|
|
/pgf/generic diode IEC/before background/.initial=,
|
|
}%
|
|
|
|
|
|
|
|
|
|
|
|
%
|
|
% Contacts
|
|
%
|
|
|
|
\pgfdeclareshape{make contact IEC}
|
|
{%
|
|
\savedanchor\northeast{%
|
|
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
|
|
\pgf@x=\pgf@xa%
|
|
\advance\pgf@x by .5\pgf@xb%
|
|
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
|
|
\pgf@y=\pgf@ya%
|
|
\advance\pgf@y by\pgf@yb%
|
|
}%
|
|
\savedanchor\southwest{%
|
|
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
|
|
\pgf@x=-.5\pgf@xa%
|
|
\advance\pgf@x by -.5\pgf@xb%
|
|
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\pgf@y=-\pgf@ya%
|
|
}%
|
|
|
|
\anchor{center}{\pgfpointorigin}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
|
|
\anchorborder{%
|
|
\ifdim\pgf@y<0pt%
|
|
% tricky... simplify to the origin...
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgf@process{\southwest}%
|
|
\advance\pgf@y by-0.5pt%
|
|
\pgf@xa=\pgf@x%
|
|
\pgf@ya=\pgf@y%
|
|
\pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\pgfqpoint{-\pgf@xa}{-\pgf@ya}}}%
|
|
\else%
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\northeast}}%
|
|
\fi%
|
|
}%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xa=-\pgf@x \pgf@ya=0pt
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
% Start point
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{0pt}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
%
|
|
% Contacts
|
|
%
|
|
|
|
\pgfdeclareshape{var make contact IEC}
|
|
{%
|
|
\savedanchor\northeast{%
|
|
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
|
|
\pgf@x=\pgf@xa%
|
|
\advance\pgf@x by .5\pgf@xb%
|
|
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
|
|
\pgf@y=\pgf@ya%
|
|
\advance\pgf@y by\pgf@yb%
|
|
}%
|
|
\savedanchor\southwest{%
|
|
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
|
|
\pgf@x=-.5\pgf@xa%
|
|
\advance\pgf@x by -.5\pgf@xb%
|
|
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\pgf@y=-\pgf@ya%
|
|
\pgf@xc=0.083333\pgf@x%
|
|
\advance\pgf@y by\pgf@xc%
|
|
}%
|
|
|
|
\anchor{center}{\pgfpointorigin}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
|
|
\anchorborder{%
|
|
\ifdim\pgf@y<0pt%
|
|
% tricky... simplify to the origin...
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgf@process{\southwest}%
|
|
\pgf@xa=\pgf@x%
|
|
\pgf@ya=\pgf@y%
|
|
\pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\pgfqpoint{-\pgf@xa}{-\pgf@ya}}}%
|
|
\else%
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\northeast}}%
|
|
\fi%
|
|
}%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\northeast}{
|
|
\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xa=-\pgf@x \pgf@ya=0pt
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
\pgf@xc=\pgf@xa
|
|
\pgfutil@tempdima=2\pgf@xb%
|
|
\pgfutil@tempdima=0.083333\pgfutil@tempdima%
|
|
\advance\pgf@xa by \pgfutil@tempdima
|
|
% Circle
|
|
{\pgfpathcircle{\pgfqpoint{\pgf@xa}{0pt}}{\pgfutil@tempdima}}
|
|
% Height
|
|
% Start point
|
|
\pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgfqpoint{\pgf@xa}{0pt}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}}}
|
|
\pgf@xc=\pgf@x
|
|
\pgf@yc=\pgf@y
|
|
\pgfpathmoveto{\pgfpointadd{\pgfqpoint{\pgf@xa}{0pt}}{%
|
|
\pgfpointscale{\pgfutil@tempdima}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
\pgfdeclareshape{break contact IEC}
|
|
{%
|
|
\savedanchor\northeast{%
|
|
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
|
|
\pgf@x=\pgf@xa%
|
|
\advance\pgf@x by .5\pgf@xb%
|
|
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
|
|
\pgf@y=\pgf@ya%
|
|
\advance\pgf@y by\pgf@yb%
|
|
}%
|
|
\savedanchor\southwest{%
|
|
\pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
|
|
\pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
|
|
\pgf@x=-.5\pgf@xa%
|
|
\advance\pgf@x by -.5\pgf@xb%
|
|
\pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
|
|
\pgf@y=-\pgf@ya%
|
|
}%
|
|
|
|
\anchor{center}{\pgfpointorigin}%
|
|
\inheritanchor[from=rectangle ee]{north}%
|
|
\inheritanchor[from=rectangle ee]{south}%
|
|
\inheritanchor[from=rectangle ee]{east}%
|
|
\inheritanchor[from=rectangle ee]{west}%
|
|
\inheritanchor[from=rectangle ee]{north east}%
|
|
\inheritanchor[from=rectangle ee]{north west}%
|
|
\inheritanchor[from=rectangle ee]{south east}%
|
|
\inheritanchor[from=rectangle ee]{south west}%
|
|
\inheritanchor[from=rectangle ee]{input}%
|
|
\inheritanchor[from=rectangle ee]{output}%
|
|
|
|
\anchorborder{%
|
|
\ifdim\pgf@y<0pt%
|
|
% tricky... simplify to the origin...
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgf@process{\southwest}%
|
|
\advance\pgf@y by-0.5pt%
|
|
\pgf@xa=\pgf@x%
|
|
\pgf@ya=\pgf@y%
|
|
\pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\pgfqpoint{-\pgf@xa}{-\pgf@ya}}}%
|
|
\else%
|
|
\pgf@xc=\pgf@x%
|
|
\pgf@yc=\pgf@y%
|
|
\pgf@process{\pgfpointborderrectangle{\pgfqpoint{\pgf@xc}{\the\pgf@yc}}{\northeast}}%
|
|
\fi%
|
|
}%
|
|
|
|
\backgroundpath{
|
|
\pgf@process{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
|
|
\pgf@xa=-\pgf@x \pgf@ya=0pt
|
|
\pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
|
% Start point
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{0pt}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
|
|
% Break point
|
|
\pgf@xc=.2\pgf@xb
|
|
\advance\pgf@xc by-.2\pgf@xa
|
|
\pgfpathmoveto{\pgfqpoint{\pgf@xb}{0pt}}
|
|
\advance\pgf@xb by-\pgf@xc
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{0pt}}
|
|
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
|
|
}%
|
|
}%
|
|
|
|
|
|
|
|
|
|
|
|
\endinput
|
|
|