%%
%% This is file `pst-sigsys.tex' v 1.4.
%%
%% IMPORTANT NOTICE:
%%
%% (C)
%% Farshid Delgosha (NY - U.S.A.) <fdelgosha@gmail.com>
%%
%% v 1.0: 01/15/2009
%% v 1.1: 04/01/2009
%% v 1.2: 01/15/2010
%% v 1.3: 06/18/2010
%% v 1.4: 03/07/2011
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
%% DESCRIPTION:
%%   `pst-sigsys' is a PSTricks package for drawing block diagrams
%%    related to the signal processing discipline.
%%
%
\csname PSTsigsysLoaded\endcsname
\let\PSTsigsysLoaded\endinput

\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi

\def\pstsigsysFV{1.4}
\def\pstsigsysFD{2011/03/07}
\message{`PST-SigSys' v\pstsigsysFV, \pstsigsysFD\space (fd)}


\SpecialCoor



%--- new pstricks styles ---------------------------------
\newpsstyle{ArrowLen}{arrowsize=1.35mm,arrowlength=1.25,arrowinset=.25}
\newpsstyle{Arrow}{arrows=->,style=ArrowLen}
\newpsstyle{Dash}{linestyle=dashed,dash=.15 .08}
\newpsstyle{Graph}{linewidth=1.25pt,linearc=0}
\newpsstyle{Stem}{linewidth=1.25pt,linestyle=solid,stemhead=*}
\newpsstyle{RoundCorners}{framesep=.125,framearc=.25,linearc=.1}
%--- end new pstricks styles -----------------------------


%--- new pstricks-add styles -----------------------------
\AtBeginDocument{
\ifx\PSTricksAddLoaded\endinput
\newpsstyle{ArrowIn}{ArrowInside=->,style=ArrowLen}
\newpsstyle{DashDot}{linestyle=dashed,dash=.15 .055 .04 .055}
\newpsstyle{Brace}{braceWidth=.02,braceWidthInner=.115,braceWidthOuter=.115,ref=C}
\newpsobject{psBraceUp}{psbrace}{style=Brace,rot=-90,nodesepB=-\pslabelsep}
\newpsobject{psBraceDown}{psbrace}{style=Brace,rot=90,nodesepB=\pslabelsep}
\newpsobject{psBraceRight}{psbrace}{style=Brace,rot=-90,nodesepA=\pslabelsep}
\newpsobject{psBraceLeft}{psbrace}{style=Brace,rot=-90,nodesepA=-\pslabelsep}
\fi
}
%--- end new pstricks-add styles -------------------------


%--- internal macros -------------------------------------
\newdimen\ss@ticklength
\newdimen\ss@signalsep
\newdimen\ss@zerowidth
\newdimen\ss@zeroradius
\newdimen\ss@zeroradiusinc
\newdimen\ss@polewidth
\newdimen\ss@polelength
\newdimen\ss@oplength
\newdimen\ss@opwidth
\newdimen\ss@opsep
\newdimen\ss@ldotssep
\newdimen\ss@ldotssize
\newdimen\ss@aoffset
\newdimen\ss@knoblength
\newdimen\ss@knobwidth
\def\ss@knobangle{}
%
\newdimen\ss@temp@dimA
\newdimen\ss@temp@dimB
\newdimen\ss@temp@dimC
\newcount\ss@temp@cnt
\def\ss@temp{}
\def\ss@temp@choice{}
%
%%% add two numbers %%%
\newdimen\ss@calc@dim
\def\ss@calc{}
\def\ss@addnum#1#2#3{%
\ss@calc@dim=#1pt%
\advance\ss@calc@dim #2pt%
\pst@divide{\ss@calc@dim}{1pt}\ss@calc%
\let#3\ss@calc%
}
%
\def\pst@scale#1{\pssetlength{#1}{\ss@scale#1}}
%
%%% draw a cross %%%
\def\ss@cross@temp{}
\def\pst@cross(#1;#2)#3{%
\ss@addnum{#2}{90}\ss@cross@temp%
\psline[linewidth=#3,arrows=-](-#1;#2)(#1;#2)%
\psline[linewidth=#3,arrows=-](-#1;\ss@cross@temp)(#1;\ss@cross@temp)%
}
%
%%% set frame width %%%
\def\pst@frame@width#1{%
\pssetlength{\ss@temp@dimA}{#1}%
\divide\ss@temp@dimA 2\relax%
\edef\psk@framewidth{\pst@number\ss@temp@dimA}%
}
%
%%% set frame height %%%
\def\pst@frame@height#1{%
\pssetlength{\ss@temp@dimA}{#1}%
\divide\ss@temp@dimA 2\relax%
\edef\psk@frameheight{\pst@number\ss@temp@dimA}%
}
%
%%% set the frame width using the golden ratio %%%
\def\pst@gratio@width#1#2{%
\pssetlength{\ss@temp@dimA}{#1}%
\pssetlength{\ss@temp@dimB}{#2\ss@temp@dimA}%
\divide\ss@temp@dimA 2\relax%
\divide\ss@temp@dimB 2\relax%
\edef\psk@framewidth{\pst@number\ss@temp@dimA}%
\edef\psk@frameheight{\pst@number\ss@temp@dimB}%
}
%
%%% set the frame height using the golden ratio %%%
\def\pst@gratio@height#1#2{%
\pssetlength{\ss@temp@dimA}{#1}%
\pssetlength{\ss@temp@dimB}{#2\ss@temp@dimA}%
\divide\ss@temp@dimA 2\relax%
\divide\ss@temp@dimB 2\relax%
\edef\psk@frameheight{\pst@number\ss@temp@dimA}%
\edef\psk@framewidth{\pst@number\ss@temp@dimB}%
}
%
\newpsstyle{inv@frame}{fillstyle=none,linestyle=none,framearc=0}
%
%%% ss@ifneqdim %%%
\newdimen\ss@if@dimA
\newdimen\ss@if@dimB
\def\ss@ifneqdim#1#2#3{%
\pssetlength{\ss@if@dimA}{#1}%
\pssetlength{\ss@if@dimB}{#2}%
\ifdim\ss@if@dimA=\ss@if@dimB\else%
#3\fi}
%
%%% This is my parser. %%%
\def\ss@parse@temp{}
\def\ss@parseA{}
\def\ss@parseB{}
\def\ss@parseC{}
%
\def\ss@parse@III#1{%
\ss@parse@II{#1}{\ss@parseA}{\ss@parse@temp}%
\ss@parse@II{\ss@parse@temp}{\ss@parseB}{\ss@parseC}%
}
%
\def\ss@parse@II#1#2#3{\expandafter\ss@parse#1 \@nil#2#3}
%
\def\ss@parse#1 #2\@nil#3#4{%
\gdef#3{#1}%
\ifx\@empty#2\@empty%
\gdef#4{}%
\else%
\ss@removespace#2\@nil#4%
\fi%
}
%
\def\ss@removespace#1 \@nil#2{\gdef#2{#1}}
%--- end internal macros ---------------------------------


%--- keys ------------------------------------------------
\define@key[psset]{pst-sigsys}{scale}{\def\ss@scale{#1}}
\define@choicekey*[psset]{pst-sigsys}{xlpos}[\val\ss@temp@choice]{b,t}{%
\ifcase\ss@temp@choice\relax%
\def\ss@xlpos{b}%
\or%
\def\ss@xlpos{t}%
\fi%
}
\define@choicekey*[psset]{pst-sigsys}{ylpos}[\val\ss@temp@choice]{r,l}{%
\ifcase\ss@temp@choice\relax%
\def\ss@ylpos{r}%
\or%
\def\ss@ylpos{l}%
\fi%
}
\define@key[psset]{pst-sigsys}{ticklength}{\pssetlength{\ss@ticklength}{#1}}
\define@key[psset]{pst-sigsys}{signalsep}{\pssetlength{\ss@signalsep}{#1}}
\define@key[psset]{pst-sigsys}{stemhead}[]{\def\ss@stemhead{#1}}
\define@boolkey[psset]{pst-sigsys}[ss@]{stemtag}[true]{}
\define@key[psset]{pst-sigsys}{stemtagformat}[]{\def\ss@stemtagformat{#1}}
\define@boolkey[psset]{pst-sigsys}[ss@]{killzero}[true]{}
\define@key[psset]{pst-sigsys}{order}{\def\ss@order{#1}}
\define@key[psset]{pst-sigsys}{zerowidth}{\pssetlength{\ss@zerowidth}{#1}}
\define@key[psset]{pst-sigsys}{zeroradius}{\pssetlength{\ss@zeroradius}{#1}}
\define@key[psset]{pst-sigsys}{zeroradiusinc}{\pssetlength{\ss@zeroradiusinc}{#1}}
\define@key[psset]{pst-sigsys}{polewidth}{\pssetlength{\ss@polewidth}{#1}}
\define@key[psset]{pst-sigsys}{polelength}{\pssetlength{\ss@polelength}{#1}}
\define@key[psset]{pst-sigsys}{opwidth}{\pssetlength{\ss@opwidth}{#1}}
\define@key[psset]{pst-sigsys}{oplength}{\pssetlength{\ss@oplength}{#1}}
\define@key[psset]{pst-sigsys}{opsep}{\pssetlength{\ss@opsep}{#1}}
\define@choicekey*[psset]{pst-sigsys}{operation}[\val\ss@temp@choice]{plus,times}{%
\ifcase\ss@temp@choice\relax%
\def\ss@angle{0}%
\or%
\def\ss@angle{45}%
\fi%
}
\define@key[psset]{pst-sigsys}{angle}{\def\ss@angle{#1}}
\define@key[psset]{pst-sigsys}{ldotssize}{\pssetlength{\ss@ldotssize}{#1}}
\define@key[psset]{pst-sigsys}{ldotssep}{\pssetlength{\ss@ldotssep}{#1}}
\define@key[psset]{pst-sigsys}{gratioWh}{\pst@gratio@width{#1}{.6180339887}}
\define@key[psset]{pst-sigsys}{gratioWv}{\pst@gratio@width{#1}{1.618033989}}
\define@key[psset]{pst-sigsys}{gratioHh}{\pst@gratio@height{#1}{1.618033989}}
\define@key[psset]{pst-sigsys}{gratioHv}{\pst@gratio@height{#1}{.6180339887}}
\define@key[psset]{pst-sigsys}{aoffset}{\pssetlength{\ss@aoffset}{#1}}
\define@key[psset]{pst-sigsys}{afac}{\def\ss@afac{#1}}
\define@key[psset]{pst-sigsys}{knoblength}{\pssetlength{\ss@knoblength}{#1}}
\define@key[psset]{pst-sigsys}{knobwidth}{\pssetlength{\ss@knobwidth}{#1}}
\define@key[psset]{pst-sigsys}{knobangle}{\def\ss@knobangle{#1}}

\define@key[psset]{pst-sigsys}{framewidth}{\pst@frame@width{#1}}
\define@key[psset]{pst-sigsys}{frameheight}{\pst@frame@height{#1}}
\define@key[psset]{pst-sigsys}{FillColor}{\psset{fillstyle=solid,fillcolor=#1}}
%--- end keys --------------------------------------------


%--- default key values ----------------------------------
\psset[pst-sigsys]{scale=1,angle=0}%  global
\psset[pst-sigsys]{xlpos=b,ylpos=r}%  psaxeslabels
\psset[pst-sigsys]{ticklength=.15}%  psTick
\psset[pst-sigsys]{signalsep=5pt}%  pssignal
\psset[pst-sigsys]{stemhead=*,stemtag=false,stemtagformat=\scriptstyle,killzero=false}%  psstem
\psset[pst-sigsys]{zerowidth=.7pt,zeroradius=.08,zeroradiusinc=.07,order=1}%  pszero
\psset[pst-sigsys]{polewidth=.7pt,polelength=.12}%  pspole
\psset[pst-sigsys]{opwidth=.7pt,oplength=.125,opsep=.1,operation=plus}%  pscircleop and psframeop
\psset[pst-sigsys]{ldotssize=.05,ldotssep=.15}%  psldots
\psset[pst-sigsys]{aoffset=0,afac=1}%  psadaptive
\psset[pst-sigsys]{knobwidth=.7pt,knoblength=1,knobangle=45}%  psknob
%--- end default key values ------------------------------

\pst@addfams{pst-sigsys}


%--- psaxeslabels ----------------------------------------
\def\psaxeslabels{\def\pst@par{}\pst@object{psaxeslabels}}
\def\psaxeslabels@i{\pst@getarrows\psaxeslabels@ii}
\def\psaxeslabels@ii(#1,#2)(#3,#4)(#5,#6)#7#8{{%
\use@par%
\ss@ifneqdim{#3}{#5}{\psline(#3,#2)(#5,#2)}%
\ss@ifneqdim{#4}{#6}{\psline(#1,#4)(#1,#6)}%
%
\if\ss@xlpos t%
\rput(#5,#2){\rput[rb](0,\pslabelsep){#7}}%
\else%
\rput(#5,#2){\rput[rt](0,-\pslabelsep){#7}}%
\fi%
%
\if\ss@ylpos l%
\rput(#1,#6){\rput[tr](-\pslabelsep,0){#8}}%
\else%
\rput(#1,#6){\rput[tl](\pslabelsep,0){#8}}%
\fi%
}\ignorespaces}
%--- end psaxeslabels ------------------------------------


%--- pstick ----------------------------------------------
\def\pstick{\def\pst@par{}\pst@object{pstick}}
\def\pstick@i{\@ifnextchar({\pstick@ii{\ss@angle}}{\pstick@ii}}
\def\pstick@ii#1(#2)#3{{%
\use@par%
\pssetlength{\ss@temp@dimA}{#3}%
\pssetlength{\ss@temp@dimA}{.5\ss@temp@dimA}%
\rput(#2){\psline(-\ss@temp@dimA;#1)(\ss@temp@dimA;#1)}%
}\ignorespaces}
%--- end pstick ------------------------------------------


%--- psTick ----------------------------------------------
\def\psTick{\def\pst@par{}\pst@object{psTick}}
\def\psTick@i{\@ifnextchar({\psTick@ii{\ss@angle}}{\psTick@ii}}
\def\psTick@ii#1(#2){{%
\use@par%
\pstick@ii#1(#2){\ss@ticklength}%
}\ignorespaces}
%--- end psTick ------------------------------------------


%--- pssignal --------------------------------------------
\def\pssignal{\def\pst@par{}\pst@object{pssignal}}
\def\pssignal@i(#1)#2#3{{%
\use@par%
\rput(#1){\rnode{#2}{\psframebox[style=inv@frame,framesep=\ss@signalsep]{#3}}}%
}\ignorespaces}
%--- end pssignal ----------------------------------------


%--- psstem ----------------------------------------------
\def\psstem{\def\pst@par{}\pst@object{psstem}}
\def\psstem@i{\@ifnextchar({\psstem@ii}{\psstem@ii(0,1)}}
\def\psstem@ii(#1,#2)#3{{%
\use@par%
\ss@temp@cnt=#1%
\@for\ss@for@ind:=#3\do{%
\pssetlength{\ss@temp@dimA}{\ss@for@ind}%
\ifss@killzero%
\ifdim\ss@temp@dimA=\z@\else%
\psline{-\ss@stemhead}(\ss@temp@cnt,0)(\ss@temp@cnt,\ss@for@ind)%
\fi\else%
\psline{-\ss@stemhead}(\ss@temp@cnt,0)(\ss@temp@cnt,\ss@for@ind)%
\fi%
%
\ifss@stemtag%
\ifdim\ss@temp@dimA<\z@%
\rput[b](\ss@temp@cnt,\pslabelsep){$\ss@stemtagformat\the\ss@temp@cnt$}%
\else%
\rput[t](\ss@temp@cnt,-\pslabelsep){$\ss@stemtagformat\the\ss@temp@cnt$}%
\fi\fi%
%
\advance\ss@temp@cnt#2}%
}\ignorespaces}
%--- end psstem ------------------------------------------


%--- pszero ----------------------------------------------
\def\pszero{\def\pst@par{}\pst@object{pszero}}
\def\pszero@i(#1)#2{{%
\use@par%
\pst@scale{\ss@zerowidth}%
\pst@scale{\ss@zeroradius}%
\pst@scale{\ss@zeroradiusinc}%
\pssetlength{\ss@temp@dimA}{\ss@zeroradius}%
\ss@temp@cnt=\ss@order%
\loop%
\cnode[linewidth=\ss@zerowidth](#1){\ss@temp@dimA}{#2}%
\psaddtolength{\ss@temp@dimA}{\ss@zeroradiusinc}%
\ifnum\ss@temp@cnt>\@ne%
\advance\ss@temp@cnt-\@ne%
\repeat%
}\ignorespaces}
%--- end pszero ------------------------------------------


%--- pspole ----------------------------------------------
% The main part of this code is borrowed from pst-node
%
\def\pspole{\def\pst@par{}\pst@object{pspole}}
\def\pspole@i(#1)#2{%
\leavevmode%
\hbox{%
\use@par%
\pst@scale{\ss@polelength}%
\pst@scale{\ss@polewidth}%
\pst@@getcoor{#1}%
\pssetlength\pst@dimc{\ss@polelength}%
\pst@dimg=\psk@dimen\pslinewidth%
\advance\pst@dimc-\pst@dimg%
\advance\pst@dimc.5\pslinewidth%
\ifPst@nodealign%
\kern\pst@dimc%
\vrule width\z@ height \pst@dimc depth \pst@dimc%
\fi%
\rput(#1){\pst@cross(\ss@polelength;45){\ss@polewidth}}%
\pst@newnode{#2}{11}{\pst@coor \pst@number\pst@dimc}{\tx@InitCnode}%
\ifPst@nodealign\kern\pst@dimc\fi%
}\ignorespaces}
%--- end pspole ------------------------------------------


%--- pscircleop ------------------------------------------
\def\pscircleop{\def\pst@par{}\pst@object{pscircleop}}
\def\pscircleop@i(#1)#2{{%
\use@par%
\pst@scale{\ss@oplength}%
\pst@scale{\ss@opsep}%
\pst@scale{\ss@opwidth}%
\pst@scale{\pslinewidth}%
\pssetlength{\ss@temp@dimA}{\ss@oplength}%
\psaddtolength{\ss@temp@dimA}{\ss@opsep}%
\cnode(#1){\ss@temp@dimA}{#2}%
\rput(#1){\pst@cross(\ss@oplength;\ss@angle){\ss@opwidth}}%
}\ignorespaces}
%--- end pscircleop --------------------------------------


%--- psframeop -------------------------------------------
\def\psframeop{\def\pst@par{}\pst@object{psframeop}}
\def\psframeop@i(#1)#2{{%
\use@par%
\pst@scale{\ss@oplength}%
\pst@scale{\ss@opsep}%
\pst@scale{\ss@opwidth}%
\pst@scale{\pslinewidth}%
\pssetlength{\ss@temp@dimA}{2\ss@oplength}%
\psaddtolength{\ss@temp@dimA}{2\ss@opsep}%
\fnode[framesize=\ss@temp@dimA](#1){#2}%
\rput(#1){\pst@cross(\ss@oplength;\ss@angle){\ss@opwidth}}%
}\ignorespaces}
%--- end psframeop ---------------------------------------


%--- psdisk ----------------------------------------------
\def\psdisk{\def\pst@par{}\pst@object{psdisk}}
\def\psdisk@i(#1)#2{{%
\use@par%
\pscircle*[linestyle=none,linecolor=\psfillcolor](#1){#2}%
}\ignorespaces}
%--- end psdisk ------------------------------------------


%--- psring ----------------------------------------------
\def\psring{\def\pst@par{}\pst@object{psring}}
\def\psring@i(#1)#2#3{{%
\use@par%
\pssetlength{\ss@temp@dimA}{#2}%
\pssetlength{\ss@temp@dimB}{#3}%
\psaddtolength{\ss@temp@dimB}{-\ss@temp@dimA}%
\pscircle[dimen=inner,linewidth=\ss@temp@dimB,linecolor=\psfillcolor](#1){\ss@temp@dimA}%
}\ignorespaces}
%--- end psring ------------------------------------------


%--- psdiskc ---------------------------------------------
\def\psdiskc{\def\pst@par{}\pst@object{psdiskc}}
\def\psdiskc@i(#1)(#2,#3)#4{{%
\use@par%
\pssetlength{\ss@temp@dimA}{#2}%
\pssetlength{\ss@temp@dimB}{#3}%
\ifdim\ss@temp@dimA>\ss@temp@dimB%
\pssetlength{\ss@temp@dimC}{1.5\ss@temp@dimA}%
\else%
\pssetlength{\ss@temp@dimC}{1.5\ss@temp@dimB}%
\fi%
\psclip{\rput(#1){\psframe[linestyle=none,linecolor=\psfillcolor](-#2,-#3)(#2,#3)}}%
\psring@i(#1){#4}{\ss@temp@dimC}%
\endpsclip%
}\ignorespaces}
%--- end psdiskc -----------------------------------------


%--- psldots ---------------------------------------------
\def\psldots{\def\pst@par{}\pst@object{psldots}}
\def\psldots@i{\@ifnextchar({\psldots@ii{\ss@angle}}{\psldots@ii}}
\def\psldots@ii#1(#2){{%
\use@par%
\pst@scale{\ss@ldotssep}%
\pst@scale{\ss@ldotssize}%
\rput(#2){\psdots[dotsize=\ss@ldotssize](-\ss@ldotssep;#1)(0,0)(\ss@ldotssep;#1)}%
}\ignorespaces}
%--- end psldots -----------------------------------------


%--- ldotsnode -------------------------------------------
\def\ldotsnode{\def\pst@par{}\pst@object{ldotsnode}}
\def\ldotsnode@i{\@ifnextchar({\ldotsnode@ii{\ss@angle}}{\ldotsnode@ii}}
\def\ldotsnode@ii#1(#2)#3{{%
\use@par%
\ss@temp@dimC=.5\ss@signalsep%
\ss@temp@dimB=.5\ss@ldotssize%
\advance\ss@temp@dimB\ss@temp@dimC%
\ss@temp@dimA=\ss@ldotssep%
\advance\ss@temp@dimA\ss@temp@dimB%
\advance\ss@temp@dimA\ss@temp@dimC%
\edef\psk@framewidth{\pst@number\ss@temp@dimA}%
\edef\psk@frameheight{\pst@number\ss@temp@dimB}%
\rput{#1}(#2){\fnode[style=inv@frame](0,0){#3}}%
\psldots{#1}(#2)%
}\ignorespaces}
%--- end ldotsnode ---------------------------------------


%--- psblock ---------------------------------------------
\def\psblock{\def\pst@par{}\pst@object{psblock}}
\def\psblock@i(#1)#2#3{{%
\use@par%
\rput(#1){\rnode{#2}{\psframebox{#3}}}%
}\ignorespaces}
%--- end psblock -----------------------------------------


%--- psfblock --------------------------------------------
\def\psfblock{\def\pst@par{}\pst@object{psfblock}}
\def\psfblock@i(#1)#2#3{{%
\use@par%
\fnode(#1){#2}%
\rput(#1){#3}%
}\ignorespaces}
%--- end psfblock ----------------------------------------


%--- psadaptive ------------------------------------------
\def\psadaptive{\def\pst@par{}\pst@object{psadaptive}}
\def\psadaptive@i{\check@arrow{\psadaptive@ii}}
\def\psadaptive@ii#1(#2)#3{{%
\use@par%
\nodexn{(#1)+(#2)}{ss@nodeA}%
\nodexn{(ss@nodeA)+(\ss@aoffset,0)}{#3}%
\psLNode(#1)(ss@nodeA){-\ss@afac}{ss@nodeB}%
\ifdim\ss@aoffset>\z@%
\ncdiagg[armA=\ss@aoffset,angleA=180]{-}{#3}{#1}%
\else%
\ncdiagg[armA=-\ss@aoffset,angleA=0]{-}{#3}{#1}%
\fi%
\ncline{#1}{ss@nodeB}%
}\ignorespaces}
%--- end psadaptive --------------------------------------


%--- psknob ----------------------------------------------
\def\psknob{\def\pst@par{}\pst@object{psknob}}
\def\psknob@i(#1)#2{{%
\psset{arrows=->}%
\use@par%
\pst@scale{\ss@knobwidth}%
\pst@scale{\ss@knoblength}%
\pssetlength{\ss@temp@dimA}{\psk@radius}%
\pst@scale{\ss@temp@dimA}%
\cnode[linewidth=\ss@knobwidth](#1){\ss@temp@dimA}{#2}%
\pstick[linewidth=\ss@knobwidth]{\ss@knobangle}(#1){\ss@knoblength}%
}\ignorespaces}
%--- end psknob ------------------------------------------


%--- psusampler ------------------------------------------
\def\psusampler{\def\pst@par{}\pst@object{psusampler}}
\def\psusampler@i(#1)#2#3{{%
\use@par%
\psfblock(#1){#2}{$\mathord{\uparrow}#3$}%
}\ignorespaces}
%--- end psusampler --------------------------------------


%--- psdsampler ------------------------------------------
\def\psdsampler{\def\pst@par{}\pst@object{psdsampler}}
\def\psdsampler@i(#1)#2#3{{%
\use@par%
\psfblock(#1){#2}{$\mathord{\downarrow}#3$}%
}\ignorespaces}
%--- end psdsampler --------------------------------------


%--- nclist ----------------------------------------------
\def\nclist{\def\pst@par{}\pst@object{nclist}}
\def\nclist@i{\check@arrow{\nclist@ii}}
\def\nclist@ii#1{\@ifnextchar[{\nclist@iii{#1}}{\nclist@iv{#1}}}
%
\def\nclist@iii#1[#2]#3{{%
\use@par%
\def\ss@prevnode{}%
\@for\ss@for@ind:=#3\do{%
\ifx\@empty\ss@prevnode\@empty%
\let\ss@prevnode\ss@for@ind%
\else%
\ss@parse@III{\ss@for@ind}%
\csname#1\endcsname{\ss@prevnode}{\ss@parseA}%
\ifx\@empty\ss@parseB\@empty\else%
\ifx\@empty\ss@parseC\@empty%
\csname#2\endcsname{\ss@parseB}%
\else%
\csname\ss@parseB\endcsname{\ss@parseC}%
\fi\fi%
\let\ss@prevnode\ss@parseA%
\fi%
}%
}\ignorespaces}
%
\def\nclist@iv#1#2{{%
\use@par%
\def\ss@prevnode{}%
\@for\ss@for@ind:=#2\do{%
\ifx\@empty\ss@prevnode\@empty%
\else%
\csname#1\endcsname{\ss@prevnode}{\ss@for@ind}%
\fi%
\let\ss@prevnode\ss@for@ind%
}%
}\ignorespaces}
%--- end nclist ------------------------------------------


%--- ncstar ----------------------------------------------
\def\ncstar{\def\pst@par{}\pst@object{ncstar}}
\def\ncstar@i{\check@arrow{\ncstar@ii}}
\def\ncstar@ii#1{\@ifnextchar[{\ncstar@iii{#1}}{\ncstar@iv{#1}}}
%
\def\ncstar@iii#1[#2]#3#4{{%
\use@par%
\@for\ss@for@ind:=#3\do{%
\ss@parse@III{\ss@for@ind}%
\csname#1\endcsname{\ss@parseA}{#4}%
\ifx\@empty\ss@parseB\@empty\else%
\ifx\@empty\ss@parseC\@empty%
\csname#2\endcsname{\ss@parseB}%
\else%
\csname\ss@parseB\endcsname{\ss@parseC}%
\fi\fi%
}%
}\ignorespaces}
%
\def\ncstar@iv#1#2#3{{%
\use@par%
\@for\ss@for@ind:=#2\do{\csname#1\endcsname{\ss@for@ind}{#3}}%
}\ignorespaces}
%--- end ncstar ------------------------------------------
\endinput 