% Eingabe der Definitionen fuer die latexdraw-Bilder
% Basis der Makros ist pstricks
% Stand 21.1.98/14.9.96 ab latexdraw V5.5
% to be used with dvips
% Siegert, TUM
\expandafter\ifx\csname LTDsty\endcsname\relax %skip all if latexdraw.sty is already defined
\typeout{pst-latexdraw.sty fuer dvips, Stand: 21.1.1998}
\def\LTDsty{}

\makeatletter
\input{pstricks.tex}
\makeatletter
\renewenvironment{picture}{\psset{unit=\unitlength}\pspicture}{\endpspicture}

%----------------------------------------------------------------------
% Definition der Farben fuer pstricks sollen wie frueher
% in PSlatexdraw.sty bleiben, daher erfolgt setzen einer Farbe
% statt mit setfarbe jetzt mit SetColor!
% Definition fuer \sg@ und \sc@ sind leer
% Farbe oder Grauwert wird fuer pstricks in Farbe SCOLOR definiert
%----------------------------------------------------------------------

\def\colorwert#1{#1}
%Anmerkung: Durch setfarbe Makro farbe definiert
\def\SetColor#1{\setfarbe{#1}\ifnum#1<11\newgray{SCOLOR}{\colorwert{\farbe}}
\else\newrgbcolor{SCOLOR}{\colorwert{\farbe}}\fi
\psset{fillcolor=SCOLOR,linecolor=SCOLOR}\SCOLOR}

% Definition der Farben fuer latexdraw
% Stand 17.9.93/13.5.95 Siegert, TUM
\typeout{Farben fuer dvips, Stand:13.5.1995}
\newcommand{\farbe}{}
\newcommand{\sg@}{} % frueher { setgray }
\newcommand{\sc@}{} % frueher { setrgbcolor }
\newcommand{\setfarbe}[1]{\renewcommand{\farbe}{%
\ifnum #1<0 0 \sg@
\else \ifcase #1
  0 \sg@ \or%black
  1 \sg@ \or%white
  .9 \sg@ \or%gray90
  .8 \sg@ \or%gray80
  .7 \sg@ \or%gray70
  .6 \sg@ \or%gray60
  .5 \sg@ \or%gray50
  .4 \sg@ \or%gray40
  .3 \sg@ \or%gray30
  .2 \sg@ \or%gray20
  .1 \sg@ \or%gray10
1.00 0.00 0.00 \sc@ \or% 255 0 0 red1
1.00 0.65 0.00 \sc@ \or% 255 165 0 orange1
1.00 0.51 0.28 \sc@ \or% 255 130 71 sienna1
1.00 0.84 0.00 \sc@ \or% 255 215 0 gold1
1.00 1.00 0.00 \sc@ \or% 255 255 0 yellow
0.50 1.00 0.00 \sc@ \or% 127 255 0 chartreuse1
0.00 1.00 0.00 \sc@ \or% 0 255 0 green
0.00 1.00 0.50 \sc@ \or% 0 255 127 SpringGreen1
0.00 1.00 1.00 \sc@ \or% 0 255 255 cyan
0.00 0.00 1.00 \sc@ \or% 0 0 255 blue
0.75 0.24 1.00 \sc@ \or% 191 62 255 DarkOrchid1
1.00 0.51 0.98 \sc@ \or% 255 131 250 orchid1
1.00 0.00 1.00 \sc@ \or% 255 0 255 magenta
0.80 0.00 0.00 \sc@ \or% 205 0 0 red3
0.80 0.52 0.00 \sc@ \or% 205 133 0 orange3
0.93 0.23 0.23 \sc@ \or% 238 59 59 brown2
0.93 0.60 0.00 \sc@ \or% 238 154 0 orange2
0.80 0.80 0.00 \sc@ \or% 205 205 0 yellow3
0.40 0.80 0.00 \sc@ \or% 102 205 0 chartreuse3
0.00 0.80 0.00 \sc@ \or% 0 205 0 green3
0.00 0.80 0.40 \sc@ \or% 0 205 102 SpringGreen3
0.00 0.80 0.80 \sc@ \or% 0 205 205 cyan3
0.00 0.00 0.80 \sc@ \or% 0 0 205 blue3
0.60 0.20 0.80 \sc@ \or% 154 50 205 DarkOrchid3
0.80 0.41 0.79 \sc@ \or% 205 105 201 orchid3
0.80 0.00 0.80 \sc@ \or% 205 0 205 magenta3
1.00 0.89 0.88 \sc@ \or% 255 228 225 MistyRose1
1.00 0.85 0.73 \sc@ \or% 255 218 185 PeachPuff1
1.00 0.76 0.76 \sc@ \or% 255 193 193 RosyBrown1
1.00 0.96 0.56 \sc@ \or% 255 246 143 khaki1
1.00 1.00 0.88 \sc@ \or% 255 255 224 LightYellow1
1.00 0.91 0.73 \sc@ \or% 255 231 186 wheat1
0.96 1.00 0.98 \sc@ \or% 245 255 250 MintCream
0.60 1.00 0.60 \sc@ \or% 154 255 154 PaleGreen1
0.88 1.00 1.00 \sc@ \or% 224 255 255 LightCyan1
0.75 0.94 1.00 \sc@ \or% 191 239 255 LightBlue1
1.00 0.88 1.00 \sc@ \or% 255 225 255 thistle1
1.00 0.73 1.00 \sc@ \or% 255 187 255 plum1
1.00 0.94 0.96 \sc@ \or% 255 240 245 LavenderBlush1
0.73 1.00 1.00 \sc@ \or% 187 255 255 PaleTurquoise1
0.76 1.00 0.76 \sc@ \or% 193 255 193 DarkSeaGreen1
0.50 1.00 0.83 \sc@ \or% 127 255 212 aquamarine1
0.00 0.75 1.00 \sc@ \or% 0 191 255 DeepSkyBlue1
0.51 0.44 1.00 \sc@ \or% 131 111 255 SlateBlue1
0.88 0.40 1.00 \sc@ \or% 224 102 255 MediumOrchid1
1.00 0.42 0.42 \sc@ \or% 255 106 106 IndianRed1
1.00 0.08 0.58 \sc@ \or% 255 20 147 DeepPink1
1.00 0.25 0.25 \sc@ \else% 255 64 64 brown1
   0   0   0 \sc@ \fi\fi}%
}


%----------------------------------------------------------------------
% Kommandos fuer Fontdefinitionen
%----------------------------------------------------------------------
\newcommand{\Fnormal}{\normalsize}
\newfont{\FVIpt}{cmr6 scaled 1000}
\newfont{\FVIIIpt}{cmr8 scaled 1000}
\newfont{\FXpt}{cmr10 scaled 1000}
\newfont{\FXIIpt}{cmr12 scaled 1000}
\newfont{\FXIVpt}{cmr12 scaled\magstep1}
\newfont{\FXVIIIpt}{cmr12 scaled\magstep2}

\newfont{\FVIbpt}{cmbx6 scaled 1000}
\newfont{\FVIIIbpt}{cmbx8 scaled 1000}
\newfont{\FXbpt}{cmbx10 scaled 1000}
\newfont{\FXIIbpt}{cmbx12 scaled 1000}
\newfont{\FXIVbpt}{cmbx12  scaled\magstep1}
\newfont{\FXVIIIbpt}{cmbx12 scaled\magstep2}

\newfont{\FVIipt}{cmti7 at 6pt}
\newfont{\FVIIIipt}{cmti8 scaled 1000}
\newfont{\FXipt}{cmti10 scaled 1000}
\newfont{\FXIIipt}{cmti12 scaled 1000}
\newfont{\FXIVipt}{cmti12 scaled\magstep1}
\newfont{\FXVIIIipt}{cmti12 scaled\magstep2}


%----------------------------------------------------------------------
% Neuer Name fuer Definition von rput in pstricks
%----------------------------------------------------------------------
\let\pst@rput=\rput
%
%----------------------------------------------------------------------
% Definition des Macros `rput' \rput[winkel](x_pos,y_pos){Bildobjekt}
%   Dieses gibt an der Stelle (x_pos,y_pos) das um den Winkel `winkel'
%   gedrehte Bildobjekt aus. Winkel in Radian.
%   Der Drehwinkel ist dabei im mathematische positivem Drehsinn in Bogenmass
%   anzugeben.
%----------------------------------------------------------------------
\def\rput[#1](#2,#3)#4{\put(#2,#3){\degrees[-6.28319]\pst@rput[lB]{#1}(0,0){\mbox{#4}}}}
%
%----------------------------------------------
% Definition der Macros `rputc'
%   \rputc[winkel](x_pos,y_pos){Farbe}{Bildobjekt}
% und 'putc'
%   \putc(x_pos,y_pos){Farbe}{Bildobjekt}
%----------------------------------------------

\SetColor{0}
\def\rputc[#1](#2,#3)#4#5{\rput[#1](#2,#3){{\SetColor{#4}#5}}}
\def\putc(#1,#2)#3#4{\put(#1,#2){{\SetColor{#3}#4}}}


%---------------------------------------------------
% Makros fuer die Pfeile:
%\eepicvarpfeile{xa,xe}{drehwinkel radian}{linewidth}
% werden nicht mehr direkt von LaTeX aus aufgerufen
% Aufruf nur noch ueber aLdPfeil oder eLdPfeil
% xa, ya: Position der Pfeilspitze
% Drehwinkel in Radian
% linewidth (ganze Zahl) in \unitlength
%
% \aLdPfeil{xa,xe}{drehwinkel radian}{linewidth}
%     wobei der Pfeil am Anfang des Elementes ist
% \eLdPfeil{xa,xe}{drehwinkel radian}{linewidth}
%     wobei der Pfeil  am Ende des Elementes ist
%---------------------------------------------------
\def\eepicpfeile#1#2#3#4{\ifdim\@wholewidth<0.5pt\eepicvarpfeile{#1}{#2}{1}
                        \else\eepicvarpfeile{#1}{#2}{3}\fi}

\def\eepicvarpfeile#1#2#3{\put(#1){\StdPfeil{\LdLineWidth}{#2}}}

\def\StdPfeil#1#2{\pscustom{\code{#1 .27 mul .6 add  dup scale
   #2 -180 mul 3.14159 div rotate newpath
   0 0 moveto -8 3 lineto -6 0 lineto -8 -3 lineto  fill}}}
\let\aLdPfeil\eepicvarpfeile
\let\eLdPfeil\eepicvarpfeile

%----------------------------------------------------------------------
% Definition \getpslinetype{linetype}
% latexdraw-internes Makro
% stellt gleichzeitig auch Linienstaerke ein!
% SLW steht in pstricks fuer setlinewidth
% CLW steht in pstricks fuer currentlinewidth
% wird anstelle \LdLineWidth bei dashed, ... verwendet
%----------------------------------------------------------------------
\newcommand{\getpslinetype}[1]{\LdLineWidth  SLW \ifcase #1 %
\getsolid \or% 0
\getsolid \or% 1
\getsolid \or% 2
\getdotted{CLW} \or% 3
\getsolid \or% 4
\getdashed{CLW} \or% 5
\getsolid \or% 6
\getdashdotted{CLW} \fi %7
}
%
%
%----------------------------------------------------------------------
% \getsolid
% \getdashdotted{linewidth in pt}
% \getdashed{linewidth in pt}
% \getdotted{linewidth in pt}
% latexdraw-interne Makros zur Definition der Postscriptsequenzen fuer
% die obigen Linientypen
% currentlinewidth ist in pstricks mit CLW abgekuerzt
%----------------------------------------------------------------------
\def\getsolid{[] 0 setdash}
\def\getdashdotted#1{1 setlinecap
[#1 2 #1 div add 2.5 mul dup .6 mul dup 1 exch] 0 setdash}
\def\getdashed#1{1 setlinecap
[#1 2 #1 div  add 2.5 mul dup .6 mul] 0 setdash}
\def\getdotted#1{1 setlinecap
[1 #1 2 #1 div add 1.5 mul] 0 setdash}
%
%
%----------------------------------------------------------------------
% \bezier[linientyp](x1,y1)(x2,y2)(x3,y3)
% \LdpBezier{lineende}(ox1,oy1)(ox2,oy2)(ox3,oy3)
%           [linientyp](x0,y0)(x1,y1)(x2,y2)(x3,y3)
% (0,0)(ox1,oy1)(ox2,oy2)(ox3,oy3) sind die Original-Stuetzpunkte
% (x0,y0)(x1,y1)(x2,y2)(x3,y3) sind wegen Pfeilen modifizierte Punkte
%----------------------------------------------------------------------

\def\bezier{\@ifnextchar [{\@bezierltnull}{\@bezierltnull[1]}}
\def\@bezierltnull[#1]{\@@bezier{\getpslinetype{#1}}(0,0)}
\def\@bezierlt[#1]{\@@bezier{\getpslinetype{#1}}}
\def\LdpBezier#1(#2)(#3)(#4){\@bezierlt}
%\def\@@bezier#1(#2,#3)(#4,#5)(#6,#7)(#8,#9){\pscustom{\code{newpath #1}
%\psbezier(#2,#3)(#4,#5)(#6,#7)(#8,#9)\code{stroke}}}
\def\@@bezier#1(#2,#3)(#4,#5)(#6,#7)(#8,#9){\pscustom{\code{newpath #1}
  \coor(#2,#3)\code{moveto}\coor(#4,#5)(#6,#7)(#8,#9)\code{curveto stroke}}}

%----------------------------------------------------------------------
% \beziergef(x1,y1)(x2,y2)(x3,y3)
% gefuellte Bezier-Kurve
%----------------------------------------------------------------------

\def\beziergef(#1,#2)(#3,#4)(#5,#6){\psbezier*(0,0)(#1,#2)(#3,#4)(#5,#6)}

%----------------------------------------------
% gef"ulltes Dreieck und Viereck
%----------------------------------------------

\def\gefdreieck(#1,#2)(#3,#4){\pspolygon*(0,0)(#1,#2)(#3,#4)}

\def\gefviereck(#1,#2)(#3,#4)(#5,#6){\pspolygon*(0,0)(#1,#2)(#3,#4)(#5,#6)}

%----------------------------------------------------------------------
% Kreise und Kreisboegen (werden auf Ellipsen abgebildet):
% \circle[linientyp]{2*r}
% \circle{2*r}
% \circle*{2*r}
% \arc{2*r}{wa}{we}
% \arc[linientyp]{2*r}{wa}{we}
% \LdpArc{lineende}{owa}{owe}[linientyp]{2*r}{wa}{we}
% r ist der Radius
% wa, we sind Anfangs- und Endwinkel nach TeX
% owa,owe sind unverkuerze (Original) Anfangs- und Endwinkel nach TeX
%----------------------------------------------------------------------

\def\circle{\@ifstar{\@fillcircle}{\@Circle}}
\def\@fillcircle#1{\@fillellipse{#1}{#1}}
\def\@Circle{\@ifnextchar [{\@ldcircle}{\@circle}}
\def\@circle#1{\ellipse{#1}{#1}}
\def\@ldcircle[#1]#2{\ellipse[#1]{#2}{#2}}
\def\arc{\@ifnextchar [{\@ldarc}{\@arc}}
\def\@ldarc[#1]#2#3#4{\ellarc[#1]{#2}{#2}{#3}{#4}}
\def\@arc#1#2#3{\ellarc{#1}{#1}{#2}{#3}}
\def\LdpArc#1#2#3{\arc}
%----------------------------------------------------------------------
% Ellipsen und Ellipsenboegen:
% \ellipse[linientyp]{2*a}{2*b}
% \ellipse{2*a}{2*b}
% \ellipse*{2*a}{2*b}
% \ellarc{2*a}{2*b}{wa}{we}
% \ellarc[linientyp]{2*a}{2*b}{wa}{we}
% \LdpEllarc{lineende}{otexwa}{otexwe}[linientyp]{2*a}{2*b}{wa}{we}
% a ist grosse Achse, b kleine Achse
% wa, we sind Anfangs- und Endwinkel nach TeX
% owa,owe sind unverkuerze (Original) Anfangs- und Endwinkel nach TeX
%----------------------------------------------------------------------

\def\ellipse{\@ifstar{\@fillellipse}{\@Ellipse}}
\def\@fillellipse#1#2{\pscustom{\code{newpath}\dim{#1}\dim{#2}%
\code{scale 0 0 .5 0 360 arc 1}\dim{#1}\code{div 1}\dim{#2}
\code{div scale fill}}}
\def\@Ellipse{\@ifnextchar [{\@ldellipse}{\@ldellipse[1]}}
\def\@ldellipse[#1]#2#3{\@@ldellipse{\getpslinetype{#1}}{#2}{#3}}
\def\@@ldellipse#1#2#3{\pscustom{\code{#1} \dim{#2}\dim{#3}\code{scale 0 0 .5 0
     360 arc 1}\dim{#2}\code{div 1}\dim{#3}\code{div scale closepath stroke}}}
\def\ellarc{\@ifnextchar [{\@ldellarc}{\@ldellarc[1]}}
\def\@ldellarc[#1]#2#3#4#5{\@@ldellarc{\getpslinetype{#1}}{#2}{#3}{#4}{#5}}
\def\@@ldellarc#1#2#3#4#5{\pscustom{\code{newpath #1} \dim{#2}\dim{#3}
\code{scale 0 0 .5 #5 -3.14159 div 180 mul}
\code{#4 -3.14159 div 180 mul arc 1}
\dim{#2}\code{div 1}\dim{#3}\code{div scale stroke}}}
\def\LdpEllarc#1#2#3{\ellarc}

%----------------------------------------------
%% gefuellte Tortenscheiben
%Parameter: grosse Achse (Durchmesser beim Kreis),
%kleine Achse (Durchmesser beim Kreis), Anfangs- und Endwinkel in Grad
%----------------------------------------------
\newcommand{\pieslice}[4]{\pscustom{\code{newpath 0 0 moveto}%
\dim{#1}\dim{#2}\code{scale 0 0 .5 #3 #4 arc 1}%
\dim{#1}\code{div 1}\dim{#2}\code{div scale fill}}}

%----------------------------------------------------------------------
% \ldline[linientyp](x1,y1)(x2,y2)
% verwendet fuer Linien ohne Pfeile oder cap_projecting
%----------------------------------------------------------------------
\def\ldline{\@ifnextchar [{\@ldlinelt}{\@ldlinelt[1]}}
\def\@ldlinelt[#1]{\@@ldlinelt{\getpslinetype{#1}}}
\def\@@ldlinelt#1(#2,#3)(#4,#5){\pscustom{\newpath\code{#1}\moveto(#2,#3)\lineto(#4,#5)\code{stroke}}}


%----------------------------------------------------------------------
% \ldcpline[linientyp](x1,y1)(x2,y2)
% Fuer Linien, die ein CapProjecting--Ende (in Postscript Typ 2) haben
% nur bei solid lines!!!
%----------------------------------------------------------------------
\def\ldcpline{\@ifnextchar [{\@ldcplinelt}{\@ldcplinelt[1]}}

\def\@ldcplinelt[#1]{\@@ldcplinelt{\getpslinetype{#1}}}
\def\@@ldcplinelt#1(#2,#3)(#4,#5){\pscustom{\newpath \code{2 setlinecap #1}
\moveto(#2,#3)\lineto(#4,#5)\code{stroke}}}

%----------------------------------------------------------------------
% \LdpLine{lineende}{(x2,y2)}[linientyp](x1r,y1r)(x2r,y2r)
%   wird verwendet bei Linien mit Pfeilen,
%     (x1r,y1r)(x2r,y2r) sind die verkuerzten Koordinaten,
%     (0,0)(x2,y2) sind unverkuerzte Koordinaten der Linie
%----------------------------------------------------------------------

\def\LdpLine#1#2{\@ldlinelt}

%----------------------------------------------------------------------
% \ldlinewidt{linewidth}{linewidth in pt}
% linewidth ist ganze Zahl 1, 2, ....
% linewidth in pt ist GP-Zahl, von latexdraw berechnet, wird
% nachfolgend immer nur verwendet!
% Makro \LdLineWidth enthaelt Postscriptformel zur Berechnung der
% Linienstaerke fuer die Postscript-Ausgabe (in pt).
%
% Normalerweise ist die Formel in \LdLineWidth einfach der zweite
% Parameter aus \ldlinewidt
% F"ur Folien wird jedoch die Linienstaerke automatisch erhoeht, damit
% die Zeichnung f"ur normale Dokumente und f"ur Folien nicht
% ver"andert, allenfalls skaliert, werden muss.
% Die Striche werden nicht linear verbreitert. Formel dafuer in
% \@widthmodb
% Blanks am Ende von Makros wegen Postscript notwendig!!!
%----------------------------------------------------------------------
\newcommand{\@widthmoda}{ }
\newcommand{\@widthmodb}{dup 1 exch div 1.4 add mul }
\newcommand{\@widthmod}{\@widthmoda}
\newcommand{\LdLineWidth}{ }
\newcommand{\ldlinewidth}[2]{\renewcommand{\LdLineWidth}{#2 \@widthmod}}

%--------------------------------------------------------
% Fuer Zeichnungen auf Folien sollen die Striche automatisch dicker
% gezeichnet werden, ohne dass die urspr"ungliche Zeichnung ver"andert
% werden muss. Dazu kann \ThickLines im LaTeX-Dokument
% aufgerufen werden. Durch den Aufruf \NormalLines  wird wieder die
% urspr"ungliche  Strichstaerke verwendet
%--------------------------------------------------------
\newcommand{\ThickLines}{\renewcommand{\@widthmod}{\@widthmodb}}
\newcommand{\NormalLines}{\renewcommand{\@widthmod}{\@widthmoda}}


%----------------------------------------------------------------------
% nachfolgende Definitionen
% nur noch wegen Kompatibilitaet zu alten Versionen von latexdraw
%----------------------------------------------------------------------
\newsavebox{\Pthinpunkt}
\savebox{\Pthinpunkt}(0,0){$\cdot$}

\newsavebox{\Pthickpunkt}
\savebox{\Pthickpunkt}(0,0){
             \begin{picture}(0,0)
             \setlength{\unitlength}{1mm}
             \put(0,0){\circle*{1}}
             \end{picture}}
% Parameter fuer Pvarpunkt
% 1: Drehwinkel in Radian
% 2: Linienstaerke in unitlength
\newcommand{\Pvarpunkt}[2]{\begin{picture}(0,0)\relax
\rput[#1](0,0){\rule{#2\unitlength}{#2\unitlength}}\relax
\end{picture}}

\def\drawline(#1)(#2){\ldline[1](#1)(#2)}
\def\dottedline#1(#2)(#3){\ldline[3](#2)(#3)}
\def\dashline#1{\@ifnextchar [{\dashdottedline}{\ldline[5]}}
\def\dashdottedline[#1](#2)(#3){\ldline[7](#2)(#3)}
\def\thinlines{\ldlinewidth{1}{.57}}
\def\thicklines{\ldlinewidth{2}{1.14}}
\def\Thicklines{\ldlinewidth{3}{1.71}}


%--------------------------------------------------------
% end latexdraw.sty fuer pstricks und dvips
%--------------------------------------------------------

\fi% closing ifx at the beginning