diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/latexdraw |
Initial commit
Diffstat (limited to 'support/latexdraw')
100 files changed, 19111 insertions, 0 deletions
diff --git a/support/latexdraw/Makefile b/support/latexdraw/Makefile new file mode 100644 index 0000000000..8251da4747 --- /dev/null +++ b/support/latexdraw/Makefile @@ -0,0 +1,237 @@ +# makefile for latexdraw, Stand 19.10.1995/23.12.1996/13.4.98/3.7.98/28.2.99 +# latexdraw is compiled and all files installed +# use +# for hp-ux: make installhp +# for sun solaris: make installsun +# for freebsd: make installfreebsd +# for linux: make installlinux +# +################################################################################ +# you may want to change some of the following definitions for your installation +################################################################################ + +# directory prefix +PREFIX = /usr/local + +# directory for binaries +BINDIR = $(PREFIX)/bin +SUNBINDIR = $(BINDIR) +HPBINDIR = $(BINDIR) +FREEBINDIR = $(BINDIR) +LINUXBINDIR = $(BINDIR) + +# directory for style files +STYLEDIR = $(PREFIX)/teTeX/texmf/tex/lib/inputs/latexdraw +SUNSTYLEDIR = $(STYLEDIR) +HPSTYLEDIR = $(STYLEDIR) +FREESTYLEDIR = $(STYLEDIR) +LINUXSTYLEDIR = $(STYLEDIR) + +# directory for man page +MANDIR = $(PREFIX)/teTeX/texmf/tex/man/man1 +SUNMANDIR = $(MANDIR) +HPMANDIR = $(MANDIR) +FREEMANDIR = $(MANDIR) +LINUXMANDIR = $(MANDIR) + +# directory for documenation +DOCDIR = $(PREFIX)/teTeX/texmf/tex/lib/inputs/latexdraw/doc +SUNDOCDIR = $(DOCDIR) +HPDOCDIR = $(DOCDIR) +FREEDOCDIR = $(DOCDIR) +LINUXDOCDIR = $(DOCDIR) + +# compiler +CC = gcc + +#thread path +SUNTHREAD_DIR = /usr +HPTHREAD_DIR = /usr/local/robotik/DIR/dce-threads +FREETHREAD_DIR = /usr +LINUXTHREAD_DIR = /usr + + +# include directory +INC_DIR = -I/usr/local/include -I/usr/local/include/X11 \ + -I/usr/include -I/usr/include/X11 \ + -I/usr/X11R6/include -I/usr/X11R6/include/X11 \ + -I/usr/include/X11R5 -I/usr/include/X11R5/X11 + +SUNINC_DIR = $(INC_DIR) -I$(SUNTHREAD_DIR)/include +HPINC_DIR = $(INC_DIR) -I$(HPTHREAD_DIR)/include +FREEINC_DIR = $(INC_DIR) -I$(FREETHREAD_DIR)/include +LINUXINC_DIR = $(INC_DIR) -I$(LINUXTHREAD_DIR)/include + +#lib path and libs +LIB_DIR = -L/usr/local/lib -L/usr/lib -L/usr/ccs/lib -L/usr/X11R6/lib +SUNLIB_DIR = $(LIB_DIR) -L$(SUNTHREAD_DIR)/lib +HPLIB_DIR = $(LIB_DIR) -L$(HPTHREAD_DIR)/lib +FREELIB_DIR = $(LIB_DIR) -L$(FREETHREAD_DIR)/lib +LINUXLIB_DIR = $(LIB_DIR) -L$(LINUXTHREAD_DIR)/lib + +#compile without threads +SUNLIBS = -lX11 -lm -lc -lnsl -lsocket +SUNTHREADFLAG = +HPLIBS = -lX11 -lm -lc +HPTHREADFLAG = +FREELIBS = -lX11 -lm -lc +FREETHREADFLAG = +LINUXLIBS = -lX11 -lm -lc +LINUXTHREADFLAG = + +#compile with threads (uncomment if compilation with threads) +#SUNLIBS = -lX11 -lm -lc_r -lnsl -lsocket +#SUNTHREADFLAG = -DTHREAD +HPLIBS = -lX11 -lm -ldce -lc_r +HPTHREADFLAG = -DTHREAD +FREELIBS = -lX11 -lm -lc_r +FREETHREADFLAG = -DTHREAD +#LINUXLIBS = -lX11 -lm -lc -lpthread +#LINUXTHREADFLAG = -DTHREAD + +################################################################################ +# do not change the following definitions +################################################################################ + +# Name of source-file without extension .c +L = latexdraw + +# digitizer not included +DIGI_H = +DIGI_C = +DIGIFLAG= + +# digitizer included +# DIGI_H = digitizer.h +# DIGI_C = digitizer.c +# DIGIFLAG= -DTABLETT + +# compile for SUNSolaris +sunbin solarisbin: + $(CC) $(SUNINC_DIR) $(DIGIFLAG) $(SUNTHREADFLAG) -DSUN -o $(L) $(L).c \ + $(DIGI_C) $(SUNLIB_DIR) $(SUNLIBS) + +# compile for HPUX +hpbin hpuxbin: + $(CC) $(HPINC_DIR) $(DIGIFLAG) $(HPTHREADFLAG) -DHPUX -o $(L) $(L).c \ + $(DIGI_C) $(HPLIB_DIR) $(HPLIBS) + +# compile for freeBSD +freebin freebsdbin: + $(CC) $(FREEINC_DIR) $(DIGIFLAG) $(FREETHREADFLAG) -DFREE -o $(L) $(L).c \ + $(DIGI_C) $(FREELIB_DIR) $(FREELIBS) + +# compile for linux +linuxbin: + $(CC) $(LINUXINC_DIR) $(DIGIFLAG) $(LINUXTHREADFLAG) -DLINUX -o $(L) $(L).c \ + $(DIGI_C) $(LINUXLIB_DIR) $(LINUXLIBS) + +# create compressed tar-file (latexdraw-<majorVersion>.<minorVersion>) +tar: + awk 'BEGIN{LName="$(L)"; gef = 0;\ + x= "#define window_name \"LaTeXdraw (Siegert, TUM, C";\ + lx=length(x);}\ + {if (gef == 1) next; \ + if (substr($$0,1,lx) != x) next;\ + fin=match($$0,"\\)"); \ + LName= LName "-" substr($$0,lx+1,fin-1-lx) ".tar";\ + gef = 1; next;\ + }END{ \ + tarcommand = "tar -cf " LName " bin digitizer doc $(L).c ";\ + tarcommand = tarcommand " Makefile man test texinputs";\ + system(tarcommand);\ + zipcommand = "gzip -f " LName;\ + system(zipcommand);\ + }' < $(L).c + +extract: + ls -1A $(L)*.tar.gz | \ + awk 'BEGIN{Vers1=-1; Vers2=0; Lname="$(L)"; lL=length(Lname);}\ + {if (length == 0) next;\ + Vers = substr($$0,lL+1,length-7); lVers = length(Vers);\ + if (lVers==0) next;\ + if (substr(Vers,1,1) != "-") next;\ + point = match(Vers,"[.]");\ + Vers1n = substr(Vers,2,point-1)+0;\ + Vers2n = substr(Vers,point+1,lVers)+0;\ + if ( (Vers1n > Vers1) || ((Vers1n == Vers1)&&(Vers2n>Vers2)) ) {\ + Vers1=Vers1n; Vers2 = Vers2n; Lname = substr($$0,1,length-7);}\ + }END{\ + unzipcommand = "gunzip " Lname ".tar.gz";\ + extractcommand = "tar -xf " Lname ".tar";\ + zipcommand = "gzip " Lname ".tar";\ + system(unzipcommand);\ + system(extractcommand);\ + system(zipcommand);\ + }' + +# compile and install latexdraw for SUN Solaris from compressed tar-file!!! +installsun suninstall: + make extract + make sunbin + cp $(L) bin/* $(SUNBINDIR) + cp -r doc/* $(SUNDOCDIR) + cp man/man1/* $(SUNMANDIR) + cp texinputs/* $(SUNSTYLEDIR) + + +# compile and install latexdraw for HPUX from compressed tar-file!!! +installhp hpinstall: + make extract + make hpbin + cp $(L) bin/* $(HPBINDIR) + cp -r doc/* $(HPDOCDIR) + cp man/man1/* $(HPMANDIR) + cp texinputs/* $(HPSTYLEDIR) + +# compile and install latexdraw for freeBSD from compressed tar-file!!! +installfreebsd installfreeBSD freebsdinstall freeBSDinstall: + make extract + make freebin + cp $(L) bin/* $(FREEBINDIR) + cp -r doc/* $(FREEDOCDIR) + cp man/man1/* $(FREEMANDIR) + cp texinputs/* $(FREESTYLEDIR) + +# compile and install latexdraw for Linux from compressed tar-file!!! +installlinux linuxinstall: + make extract + make linuxbin + cp $(L) bin/* $(LINUXBINDIR) + cp -r doc/* $(LINUXDOCDIR) + cp man/man1/* $(LINUXMANDIR) + cp texinputs/* $(LINUXSTYLEDIR) + + +############################################################## +# following parts only for internal use by siegert +############################################################## + +atbin: + make freebin + cp texinputs/* $$HOME/latex + +# support to include colors +farben: + awk 'BEGIN{print "Farben nach rgb.txt fuer Ergaenzung latexdraw";}\ + {printf(" eintragefarbname(&nr, \"%s\");\n",$$4);}'\ + rgb.txt >rgb.tmp1 + awk 'BEGIN{print "Farben nach rgb.txt fuer Ergaenzung latexdraw.sty";}\ + {printf(" %.2f %.2f %.2f \\sc@ \\or%% %d %d %d %s\n",\ + $$1/255,$$2/255,$$3/255,$$1,$$2,$$3,$$4);}' rgb.txt >rgb.tmp2 + awk 'BEGIN{print "Farben nach rgb.txt fuer allecolors.tex";}\ + {printf("\\sample{%.2f}{%.2f}{%.2f}{%s}\n",$$1/255,$$2/255,$$3/255,$$4);}'\ + rgb.txt >rgb.tmp3 + +# show testcase with number immediately following test, e.g. make test17 +test%: + cp -p abbtest/$@.tex ./ + latex $@ + rm $@.ps + dvips $@.dvi >$@.ps;\ + ghostview -a4 -magstep -2 $@.ps + rm $@.* + +#####Ende Makefile####### + + diff --git a/support/latexdraw/bin/latex2epc b/support/latexdraw/bin/latex2epc new file mode 100755 index 0000000000..3837202e68 --- /dev/null +++ b/support/latexdraw/bin/latex2epc @@ -0,0 +1,436 @@ +#!/usr/local/dist/bin/perl +# +# **************************************************************** +# LaTeX-Datei, die von latexdraw erzeugt, +# zurueckwandeln in interne LaTeXdraw-Datei +# **************************************************************** +# Stand 23.5.1997 Siegert +# 1. Parameter: Name der vorhandenen latex-Datei +# 2. Parameter: Name der erzeugten latexdraw-Datei + +$zahl = "([0-9.+-]*)"; +$xy = "\\($zahl,$zahl\\)"; +$klzahl = "\\{$zahl\\}"; +$optzahl = "\\[$zahl\\]"; +$star = "\\*"; +$fontbez = "\\\\(F[XVIbi]*pt) "; +$unitlength = "\\\\setlength{\\\\unitlength}{$zahl"; +$bdoc = "\\\\begin{document}"; +$bpic = "\\\\begin{picture}$xy"; + +$ldlinew = "\\\\ldlinewidth$klzahl$klzahl"; +$put = "\\\\put$xy"; +$putc = "\\\\putc$xy$klzahl"; +$rput = "\\\\rput$optzahl$xy"; +$rputc = "\\\\rputc$optzahl$xy$klzahl"; + +$line = "\\\\ldline$xy$xy"; +$line2 = "\\\\ldline$optzahl$xy$xy"; +$line3 = "\\\\ldcpline$xy$xy"; +$line4 = "\\\\ldcpline$optzahl$xy$xy"; +$line5 = "\\\\LdpLine$klzahl\\{$xy\\}$optzahl"; +$gefdreieck = "\\\\gefdreieck$xy$xy"; +$gefviereck = "\\\\gefviereck$xy$xy$xy"; +$circle = "\\\\circle$klzahl"; +$circle2 = "\\\\circle$optzahl$klzahl"; +$ell = "\\\\ellipse$klzahl$klzahl"; +$ell2 = "\\\\ellipse$optzahl$klzahl$klzahl"; +$gefcircle = "\\\\circle$star$klzahl"; +$gefell = "\\\\ellipse$star$klzahl$klzahl"; +$arc = "\\\\arc$klzahl$klzahl$klzahl"; +$arc2 = "\\\\arc$optzahl$klzahl$klzahl$klzahl"; +$arc3 = "\\\\LdpArc$klzahl$klzahl$klzahl$optzahl$klzahl"; +$ellarc = "\\\\ellarc$klzahl$klzahl$klzahl$klzahl"; +$ellarc2 = "\\\\ellarc$optzahl$klzahl$klzahl$klzahl$klzahl"; +$ellarc3 = "\\\\LdpEllarc$klzahl$klzahl$klzahl$optzahl$klzahl$klzahl"; +$pie = "\\\\pieslice$klzahl$klzahl$klzahl$klzahl"; +$bezier = "\\\\bezier$xy$xy$xy"; +$bezier2 = "\\\\bezier$optzahl$xy$xy$xy"; +$bezier3 = "\\\\LdpBezier$klzahl$xy$xy$xy$optzahl"; +$gefbezier = "\\\\beziergef$xy$xy$xy"; + +$text = "\\\\makebox\\(0,0\\)\\[([a-z]+)\\]{"; +$textf = "\\\\makebox\\(0,0\\){"; + +$standardfont = 1; +$textlage{'bl'} = 0; +$textlage{'f'} = 1; +$textlage{'br'} = 2; +$textlage{'b'} = 3; +$textlage{'tl'} = 4; +$textlage{'tr'} = 5; +$textlage{'t'} = 6; +$textlage{'l'} = 7; +$textlage{'r'} = 8; + + +$font{'FVIpt'} = 0; +$font{'FVIIIpt'} = 2; +$font{'FXpt'} = 3; +$font{'FXIIpt'} = 4; +$font{'FXIVpt'} = 5; +$font{'FXVIIIpt'} = 6; + +$font{'FVIbpt'} = 7; +$font{'FVIIIbpt'} = 8; +$font{'FXbpt'} = 9; +$font{'FXIIbpt'} = 10; +$font{'FXIVbpt'} = 11; +$font{'FXVIIIbpt'} = 12; + +$font{'FVIipt'} = 13; +$font{'FVIIIipt'} = 14; +$font{'FXipt'} = 15; +$font{'FXIIipt'} = 16; +$font{'FXIVipt'} = 17; +$font{'FXVIIIipt'} = 18; + + +$ttext = 2; +$tgerade = 3; +$tkreis = 5; +$tkreisgef = 6; +$tkreisbogen = 7; +$tell = 8; +$tellgef = 9; +$tellbogen = 10; +$trechteckgef = 11; +$tbezier = 12; +$tdreieckgef = 13; +$tviereckgef = 14; +$tkreissektorgef= 15; +$tellsektorgef = 16; +$tbeziergef = 17; + + + +if ($#ARGV != 1) {die "number of arguments not 2 (file in, file out)";} + +sub grad { # texwinkel nach latexdraw-Winkel (math) + $wi = @_[0]; + $wi = (1-$wi/(2*3.1415926))*3600; + if (($wi > 3599.9)&&($wi < 3600.1)) {$wi=3600;} + if (($wi > -0.1) && ($wi < 0.1)) {$wi=0;} + while ($wi > 3600) {$wi = $wi - 3600;} + while ($wi < 0) {$wi = $wi + 3600;} + $wi; +} + +sub winkel { # Berechnung Anfangs - und Endwinkel + $endwi = grad(@_[0]); + $anfwi = grad(@_[1]); +} + +sub vorspannpar { # vorspannparameter merken + $xxmin =0; + $yymin=0; + $xxmax=$1; + $yymax=$2; + $dxpixel = $1; + $dypixel = $2; + $breite = $xxmax*$unitl; + $hoehe = $yymax*$unitl; + $querformat = 1; + if ($anzpic == 2) {$querformat = 0;} +} + +sub ausvorspann {# vorspann ausgeben + print AUS "LaTeXdraw (Siegert, TUM, C15.13)\n"; + print AUS $unitl, " (TEXFAKTOR)", "\n"; + print AUS " 2.00000E+00 (TEXDASHLAENGE)", "\n"; + print AUS " 1.80000E+00 (TEXDOTGAP)", "\n"; + print AUS " 8.00000E-01 (TEXINTERDOTGAP)", "\n"; + print AUS "16.667 16.667 525.2 294 1 0 0 1 (GITTERWERTE)\n"; + print AUS "$xxmin $yymin $xxmax $yymax $dxpixel $dypixel ", + "$breite $hoehe $mitdoc $querformat (AUSGABEOPTIONEN)\n"; + $ausgegeben = 1; +} + +sub zeileninit { + $element = 0; # falls Zeichnungselement gefunden = 1 + $rotwinkel = 0; + $lende = 0; + $ltype = 1; + $anfwi = 0; + $endwi = 0; + $laenge1 = 0; + $laenge2 = 0; + $x2 = 0; + $y2 = 0; + $xb1 = 0; + $yb1 = 0; + $xb2 = 0; + $yb2 = 0; +} + +open (EIN, "<$ARGV[0]")|| die "can't open input file $ARGV[0]"; +open (AUS, ">$ARGV[1]")|| die "can't open output file $ARGV[1]"; + +$lwidth = 1; +$unitl = 1; +$anzpic = 0; +$ausgegeben = 0; +$mitdoc = 0; +while (<EIN>) { #zeilenweise Eingabe in $_ + + zeileninit(); + if (/$bdoc/) {$mitdoc = 1;} + if (/$unitlength/) {$unitl = $1;} + if ((/$bpic/x)&&($ausgegeben ==0)) {$anzpic = $anzpic + 1; vorspannpar(); } + if (/$ldlinew/) {$lwidth = $1;} + if (/$put/) {$x1 = $1; $y1 = $2; $color = 0;} + if (/$putc/) {$x1 = $1; $y1 = $2; $color = $3;} + if (/$rput/) {$rotwinkel = grad($1); $x1 = $2; $y1 = $3; $color = 0;} + if (/$rputc/){$rotwinkel = grad($1); $x1 = $2; $y1 = $3; $color = $4;} + + if (/$text/) { # Text mit Lageangabe + $typ = $ttext; + $laenge2 = $textlage{$1}; + $ltype = $standardfont; + $_ = $'; + if (/$fontbez/) {$ltype = $font{$1};} + $TEXT = substr($',0,length($')-3); + $element = 1; + } + + if (/$textf/) { # Text ohne Lageangabe + $typ = $ttext; + $laenge2 = $textlage{'f'}; + $ltype = $standardfont; + $_ = $'; + if (/$fontbez/) {$ltype = $font{$1};} + $TEXT = substr($',0,length($')-3); + $element = 1; + } + + if (/$line/) { + $typ = $tgerade; + $x2 = $x1+$3; + $y2 = $y1+$4; + $element = 1; + } + + if (/$line2/) { + $typ = $tgerade; + $ltype = $1; + $x2 = $x1+$4; + $y2 = $y1+$5; + $element = 1; + } + + if (/$line3/) { # cap projecting + $typ = $tgerade; + $lende = 4; + $x2 = $x1+$3; + $y2 = $y1+$4; + $element = 1; + } + + if (/$line4/) { # cap projecting + $typ = $tgerade; + $lende = 4; + $ltype = $1; + $x2 = $x1+$4; + $y2 = $y1+$5; + $element = 1; + } + + if (/$line5/) { # LdpLine + $typ = $tgerade; + $lende = $1; + $x2 = $x1+$2; + $y2 = $y1+$3; + $ltype = $4; + $element = 1; + } + + + if (/$circle/) { + $typ = $tkreis; + $laenge1 = $1/2; + $laenge2 = $laenge1; + $element = 1; + } + + if (/$circle2/) { + $typ = $tkreis; + $ltype = $1; + $laenge1 = $2/2; + $laenge2 = $laenge1; + $element = 1; + } + + if (/$gefcircle/) { + $typ = $tkreisgef; + $laenge1 = $1/2; + $laenge2 = $laenge1; + $element = 1; + } + + if (/$arc/) { + $typ = $tkreisbogen; + $laenge1 = $1/2; + $laenge2 = $laenge1; + winkel($2,$3); + $element = 1; + } + + if (/$arc2/) { + $typ = $tkreisbogen; + $ltype = $1; + $laenge1 = $2/2; + $laenge2 = $laenge1; + winkel($3,$4); + $element = 1; + } + + if (/$arc3/) { + $typ = $tkreisbogen; + $lende = $1; + winkel($2,$3); + $ltype = $4; + $laenge1 = $5/2; + $laenge2 = $laenge1; + $element = 1; + } + + if (/$ell/) { + $typ = $tell; + $laenge1 = $1/2; + $laenge2 = $2/2; + $element = 1; + } + + if (/$ell2/) { + $typ = $tell; + $ltype = $1; + $laenge1 = $2/2; + $laenge2 = $3/2; + $element = 1; + } + + if (/$gefell/) { + $typ = $tellgef; + $laenge1 = $1/2; + $laenge2 = $2/2; + $element = 1; + } + + if (/$ellarc/) { + $typ = $tellbogen; + $laenge1 = $1/2; + $laenge2 = $2/2; + winkel($3,$4); + $element = 1; + } + + if (/$ellarc2/) { + $typ = $tellbogen; + $ltype = $1; + $laenge1 = $2/2; + $laenge2 = $3/2; + winkel($4,$5); + $element = 1; + } + + if (/$ellarc3/) { + $typ = $tellbogen; + $lende = $1; + winkel($2,$3); + $ltype = $4; + $laenge1 = $5/2; + $laenge2 = $6/2; + $element = 1; + } + + if (/$gefdreieck/) { + $typ = $tdreieckgef; + $x2 = $x1+$1; + $y2 = $y1+$2; + $xb1 = $x1+$3; + $yb1 = $y1+$4; + $element = 1; + } + + if (/$gefviereck/) { + $typ = $tviereckgef; + $xb1 = $x1+$1; + $yb1 = $y1+$2; + $x2 = $x1+$3; + $y2 = $y1+$4; + $xb2 = $x1+$5; + $yb2 = $y1+$6; + $element = 1; + } + + if (/$pie/) { + $typ = $tellsektorgef; + $laenge1 = $1/2; + $laenge2 = $2/2; + if ($laenge1 == $laenge2) {$typ = $tkreissektorgef;} + $anfwi = $3*10; + $endwi = $4*10; + $element = 1; + } + + if (/$bezier/) { + $typ = $tbezier; + $xb1 = $x1+$1; + $yb1 = $y1+$2; + $xb2 = $x1+$3; + $yb2 = $y1+$4; + $x2 = $x1+$5; + $y2 = $y1+$6; + $element = 1; + } + + if (/$bezier2/) { + $typ = $tbezier; + $ltype = $1; + $xb1 = $x1+$2; + $yb1 = $y1+$3; + $xb2 = $x1+$4; + $yb2 = $y1+$5; + $x2 = $x1+$6; + $y2 = $y1+$7; + $element = 1; + } + + if (/$bezier3/) { + $typ = $tbezier; + $lende = $1; + $xb1 = $x1+$2; + $yb1 = $y1+$3; + $xb2 = $x1+$4; + $yb2 = $y1+$5; + $x2 = $x1+$6; + $y2 = $y1+$7; + $ltype = $8; + $element = 1; + } + + if (/$gefbezier/) { + $typ = $tbeziergef; + $xb1 = $x1+$1; + $yb1 = $y1+$2; + $xb2 = $x1+$3; + $yb2 = $y1+$4; + $x2 = $x1+$5; + $y2 = $y1+$6; + $element = 1; + } + + if ($element) { + if ($ausgegeben==0) {ausvorspann();} + $tmp = 100 * $color + $lwidth; + print AUS "$typ $x1 $y1 $x2 $y2 $xb1 $yb1 $xb2 $yb2 $anfwi $endwi ", + "$tmp $lende $ltype $laenge1 $laenge2 $rotwinkel", "\n"; + if ($typ == 2) {print AUS "$TEXT\n";} + } +} + + +print AUS "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"; +print AUS " 0 \n"; +print AUS "0 0\n"; + diff --git a/support/latexdraw/bin/ldstapeldiagramm b/support/latexdraw/bin/ldstapeldiagramm new file mode 100755 index 0000000000..9980e61c74 --- /dev/null +++ b/support/latexdraw/bin/ldstapeldiagramm @@ -0,0 +1,190 @@ +#!/bin/ksh +# Erzeugung Stapeldiagramm (Einzelwerte werden gestapelt) als LaTeXdraw-Datei +# Information, die nachfolgend in einer Zeile, muss auch in der +# Eingabe-Datei in einer Zeile sein +# Trennzeichen zwischen Eingabeeinheiten in einer Zeile ist der Zwischenraum +# Falls nur eine Einheit in einer Zeile verlangt wird, koennen auch +# Zwischenraeume in der Einheit sein +# Die eingegebenen Zahlenwerte werden automatisch normalisiert +# Die Zahlenwerte in einer Zeile werden gestapelt +# Eingabe ueber stdin, Ausgabe ueber stdout +# Leerzeilen werden ueberlesen +# Kommentarzeilen (mit # oder % beginnend) werden ueberlesen +# stdin: unterschrift +# Bezeichnung y-Achse +# Bezeichnung Spalte 1 (x-Achse) Bezeichnung Spalte 2 usw. +# text1 werta wertb wertc ... +# text2 werta wertb wertc ... +# usw. +# +# falls Schluesselwort farbig allein in Zeile auftritt, +# wird farbiges Diagramm erzeugt +# falls Schluesselwort Folie allein in Zeile auftritt, +# wird die Schrift als 18pt-Schrift erzeugt +# (Makro \FXVIIIpt) +# falls Schluesselwort Anmerkung allein in einer Zeile +# auftritt, werden alle folgenden Zeilen als Anmerkungen +# betrachtet und nach der Bildunterschrift zeilenweise +# ausgegeben +# stdout:LaTeXdraw-Datei, die in latexdraw eingelesen werden kann +# Stand 6.3.96 Siegert + +# Dimension ggf durch xpixel und ypixel aendern +# +# Farben durch andere Zuweisung von Werten an farbe[] aenderbar +# Farbnummern aus LaTeXdraw +# Farben spaeter auch durch chatt in LaTeXdraw aenderbar +# Farben werden im Diagramm ggf. zyklisch wiederholt +awk 'BEGIN{xpixel=600; xmm=190; ypixel = 300; + schwarz=0;grau90=2;grau80=3;grau70=4;grau60=5; + grau50=6;grau40=7;grau30=8;grau20=9; grau10=10; + rot=11; gruen=29; blau=33; magenta=36;orange=27; + gelb=14; cyan=32; hellgruen=44; hellblau=52; + hellrot=48; + farbe[1]=schwarz;farbe[2]=grau80;farbe[3]=grau60; + farbe[4]=grau40;farbe[5]=grau20;farbe[6]=grau90; + farbe[7]=grau70;farbe[8]=grau50;farbe[9]=grau30; + farbe[10]=grau10; + anzfarben=10; + farbe[11]=gruen;farbe[12]=blau;farbe[13]=rot; + farbe[14]=magenta;farbe[15]=orange;farbe[16]=cyan; + farbe[17]=hellgruen;farbe[18]=hellblau; + farbe[19]=gelb; + anzffarben=9; + + x0pixel = 250; y0pixel = 130; + xupixel= x0pixel-30; yupixel = y0pixel-70; + schrift=1; anzstapel = 0; anzteilstapel=0; + maxwert=0; unterschrift=""; + yachse = ""; xachse=""; + anzanm=0; istanmerkung = 0; } + {if (NF==0) next; + if (substr($0,1,1)=="#") next; + if (substr($0,1,1)=="%") next; + if (istanmerkung == 1) {anzanm++; anmerkung[anzanm]=$0; next;} + if ((NF==1)&&($1=="farbig")) { + for (k=1;k<=anzffarben;k++) farbe[k]=farbe[k+anzfarben]; + anzfarben=anzffarben; next;} + if ((NF==1)&&($1=="Folie")) {schrift=6; next;} + if ((NF==1)&&($1=="folie")) {schrift=6; next;} + if ((NF==1)&&(substr($1,1,9)=="Anmerkung")) { + istanmerkung = 1; next;} + if ((NF==1)&&(substr($1,1,9)=="anmerkung")) { + istanmerkung = 1; next;} + + if (unterschrift=="") {unterschrift = $0; next; } + if (yachse=="") {yachse = $0; next; } + if (xachse=="") {xachse = $1; + for (s=2;s<=NF;s++) stapelname[s]=$s; + anzteilstapel = NF; next; } + anzstapel++; + text[anzstapel] = $1; anz[anzstapel]=NF; summe = 0; + for (j=2;j<=NF;j++) {wert[100*anzstapel+j]=$j; summe += $j;} + if (summe > max) max = summe; + } + END{ print "LaTeXdraw (Siegert, TUM, C14.14)Digi"; + printf(" %.3f (TEXFAKTOR) \n", xmm/xpixel ); + print " 2.00000E+00 (TEXDASHLAENGE)"; + print " 1.80000E+00 (TEXDOTGAP)"; + print " 8.00000E-01 (TEXINTERDOTGAP)"; + print " 16.667 16.667 562.800 295.000 1.000 0.000 0.000 1.000 (GITTERWERTE)"; + print " 446 295 547 411 101 116 240 160 1 0 (AUSGABEOPTIONEN)"; + + dx = xpixel/2/(anzstapel+1); + yfaktor = ypixel/max; + xakt=x0pixel+dx; + for (k=1;k<=anzstapel;k++) { + yakt=y0pixel; + m = anzfarben; + for (j=2;j<=anz[k];j++) { + m++; if (m>anzfarben) m -= anzfarben; + dy=wert[100*k+j]*yfaktor; + printf("14 %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f 0 3600 %d01 0 1 0 0 0 \n", \ + xakt,yakt,xakt+dx,yakt+dy,xakt+dx,yakt,xakt,yakt+dy,farbe[m]); + yakt = yakt+dy; + } + yakt=y0pixel; + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + xakt,yakt,xakt+dx,yakt); + for (j=2;j<=anz[k];j++) { + dy=wert[100*k+j]*yfaktor; + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + xakt,yakt,xakt,yakt+dy); + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + xakt+dx,yakt,xakt+dx,yakt+dy); + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + xakt,yakt+dy,xakt+dx,yakt+dy); + yakt = yakt+dy; + } + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 2 6 0 \n", \ + xakt+dx/2,y0pixel-10,schrift); + print text[k]; + xakt += 2*dx; + } + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 2 1 0 0 0 \n", \ + x0pixel,y0pixel,x0pixel+xpixel,y0pixel); + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 2 1 0 0 0 \n", \ + x0pixel,y0pixel,x0pixel,y0pixel+ypixel+20); + f=1; + if (max >1) {while (max >f) f = f*10; f=f*0.1; a=max/f;} + if (max <1) {while (max <f) f = f*0.1; a=max/f;} + dy=1; if (a<5) dy = 0.5; + dypixel = dy*f*yfaktor; + yaktpixel=0; + yakt=0; + while (yaktpixel < (ypixel+10)) { + printf("3 %.3f %.3f %.3f %.3f 0 0 0 0 0 3600 1 0 1 0 0 0 \n", \ + x0pixel,y0pixel+yaktpixel,x0pixel-10,y0pixel+yaktpixel); + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 3 8 0 \n", \ + x0pixel-15,y0pixel+yaktpixel,schrift); + printf("%.1f\n",yakt); + yaktpixel +=dypixel; + yakt +=dy; + } + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \ + x0pixel,y0pixel+ypixel+40,schrift); + if (f > 1) printf("%s (Einheit %d) \n", yachse,f,schrift); + if (f == 1) print yachse; + if (f < 1) printf("%s (Einheit 1/%d) \n", yachse,1/f); + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \ + xupixel,yupixel,schrift); + print unterschrift; + + dy =20; + yakt=yupixel-dy/2; + for (j=1;j<=anzanm;j++) { + yakt -= dy; + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \ + xupixel,yakt,schrift); + print anmerkung[j]; } + + dy = 20; + dx = 15; + xakt=x0pixel+xpixel+5; + xakttext=xakt+2*dx; + yakt=y0pixel+2*dy; + m = anzfarben; + for (j=2;j<=anzteilstapel;j++) { + m++; if (m>anzfarben) m -= anzfarben; + yakt += dy; + printf("14 %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f 0 3600 %d01 0 1 0 0 0 \n", \ + xakt,yakt,xakt+dx,yakt+dx,xakt+dx,yakt,xakt,yakt+dx,farbe[m]); + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 7 0 \n", \ + xakttext,yakt+dy/2,schrift); + print stapelname[j];} + + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \ + x0pixel+xpixel+5,y0pixel,schrift); + print xachse + + + print "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "; + print "0 "; + print "0 0 "; + print ; + }' + + + + + diff --git a/support/latexdraw/bin/ldtortendiagramm b/support/latexdraw/bin/ldtortendiagramm new file mode 100755 index 0000000000..634c9c6a87 --- /dev/null +++ b/support/latexdraw/bin/ldtortendiagramm @@ -0,0 +1,129 @@ +#!/bin/ksh +#!/bin/ksh +# Erzeugung Tortendiagramm als LaTeXdraw-Datei +# Information, die nachfolgend in einer Zeile, muss auch in der +# Eingabe-Datei in einer Zeile sein +# Trennzeichen zwischen Eingabeeinheiten in einer Zeile ist der Zwischenraum +# Falls nur eine Einheit in einer Zeile verlangt wird, koennen auch +# Zwischenraeume in der Einheit sein +# Eingabe ueber stdin, Ausgabe ueber stdout +# Leerzeilen werden ueberlesen +# Kommentarzeilen (mit # oder % beginnend) werden ueberlesen +# stdin: unterschrift +# text1 wert1 +# text2 wert2 +# usw +# falls Schluesselwort farbig allein in Zeile auftritt +# wird farbiges Diagramm erzeugt +# falls Schluesselwort Folie allein in Zeile auftritt, +# wird die Schrift als 18pt-Schrift erzeugt +# (Makro \FXVIIIpt) +# falls Schluesselwort Anmerkung allein in einer Zeile +# auftritt, werden alle folgenden Zeilen als Anmerkungen +# betrachtet und nach der Bildunterschrift zeilenweise +# ausgegeben +# stdout:LaTeXdraw-Datei, die in latexdraw eingelesen werden kann +# Stand 6.3.96 Siegert + +# Dimension ggf durch xpixel und ypixel aendern +# Farben durch andere Zuweisung von Werten an farbe[] aenderbar +# Farbnummern aus LaTeXdraw +# Farben spaeter auch durch chatt in LaTeXdraw aenderbar +# Farben werden im Diagramm ggf. zyklisch wiederholt + +awk 'BEGIN{rpixel=125; rmm=40; xmpixel = 500; ympixel = 300; + schwarz=0;grau90=2;grau80=3;grau70=4;grau60=5; + grau50=6;grau40=7;grau30=8;grau20=9; grau10=10; + rot=11; gruen=29; blau=33; magenta=36;orange=27; + gelb=15; cyan=32; hellgruen=44; hellblau=52; + + farbe[1]=schwarz;farbe[2]=grau80;farbe[3]=grau60; + farbe[4]=grau40;farbe[5]=grau20;farbe[6]=grau90; + farbe[7]=grau70;farbe[8]=grau50;farbe[9]=grau30; + farbe[10]=grau10; + anzfarben=10; + farbe[11]=gruen;farbe[12]=blau;farbe[13]=rot; + farbe[14]=magenta;farbe[15]=orange;farbe[16]=cyan; + farbe[17]=hellgruen;farbe[18]=hellblau; + farbe[19]=gelb; + anzffarben=9; + + summe=0; unterschrift=""; schrift=1; i=0; + anzanm=0; istanmerkung = 0; } + {if (NF==0) next; + if (substr($0,1,1)=="#") next; + if (substr($0,1,1)=="%") next; + if (istanmerkung == 1) {anzanm++; anmerkung[anzanm]=$0; next;} + if ((NF==1)&&($1=="farbig")) { + for (k=1;k<=anzffarben;k++) farbe[k]=farbe[k+anzfarben]; + anzfarben=anzffarben; next;} + if ((NF==1)&&($1=="folie")) {schrift=6; next;} + if ((NF==1)&&($1=="Folie")) {schrift=6; next;} + if ((NF==1)&&(substr($1,1,9)=="Anmerkung")) { + istanmerkung = 1; next;} + if ((NF==1)&&(substr($1,1,9)=="anmerkung")) { + istanmerkung = 1; next;} + + if (i==0) {unterschrift = $0; i++; next; } + gruppe[i] = $1; wert[i] = $2; i++; summe = summe + $2; } + END{ wend=900; + xupixel = xmpixel-1.4*rpixel; yupixel = ympixel-1.6*rpixel; + print "LaTeXdraw (Siegert, TUM, C14.14)Digi"; + printf(" %.3f (TEXFAKTOR) \n", rmm/rpixel ); + print " 2.00000E+00 (TEXDASHLAENGE)"; + print " 1.80000E+00 (TEXDOTGAP)"; + print " 8.00000E-01 (TEXINTERDOTGAP)"; + print " 16.667 16.667 562.800 295.000 1.000 0.000 0.000 1.000 (GITTERWERTE)"; + print " 446 295 547 411 101 116 160 240 1 1 (AUSGABEOPTIONEN)"; + m = 1; + for (k=1;k<i;k++) { + wanf=wend-wert[k]*3600/summe; + if (wanf<0) wanf += 3600; + printf("15 %s %s 0 0 0 0 0 0 %.3f %.3f %d01 0 1 %s %s 0.000 \n", \ + xmpixel,ympixel,wanf,wend,farbe[m],rpixel,rpixel); + dw = (wend-wanf); + if (dw < 0) dw +=3600; + wmittel = wanf+dw/2.0; + if (wmittel >= 3600) wmittel -= 3600; + vzc = 1; vzs = 1; tausch = -1; + if (wmittel >=1800) {wmittel -= 1800; vzc = -1; vzs = -1;} + if (wmittel >=900) {wmittel -= 900; tausch = -tausch; + x = vzc; vzc = vzs; vzs = -x;} + if (wmittel >450) {wmittel = 900-wmittel; tausch = -tausch; + x = vzc; vzc = vzs; vzs = x;} + wmittel = wmittel/1800*3.14159; + wq=wmittel*wmittel; + sini = vzs*(wmittel*(1-wq/6*(1-wq/20*(1-wq/42*(1-wq/72))))); + cosi = vzc*(1-wq/2*(1-wq/12*(1-wq/30*(1-wq/56)))); + if (tausch >0) {x=cosi; cosi = sini; sini = x;} + xtpixel = xmpixel+1.2*rpixel*cosi; + ytpixel = ympixel+1.2*rpixel*sini; + richtung=" 4 0 "; + if (xtpixel < xmpixel) richtung = " 9 2 "; + printf("2 %s %s 0 0 0 0 0 0 0 3600 1 2 %d %s 0 \n", \ + xtpixel,ytpixel, schrift, richtung); + printf("%2.1f\%% %s\n", wert[k]/summe*100, gruppe[k]); + wend=wanf; + m++; + if (m>anzfarben) m -= anzfarben; + } + printf("2 %s %s 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \ + xupixel,yupixel,schrift); + print unterschrift; + dy =20; + yakt=yupixel-dy/2; + for (j=1;j<=anzanm;j++) { + yakt -= dy; + printf("2 %.3f %.3f 0 0 0 0 0 0 0 3600 1 2 %d 4 0 0 \n", \ + xupixel,yakt,schrift); + print anmerkung[j]; } + print "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "; + print "0 "; + print "0 0 "; + print ; + }' + + + + + diff --git a/support/latexdraw/digitizer/digitizer.c b/support/latexdraw/digitizer/digitizer.c new file mode 100644 index 0000000000..8fbb886a94 --- /dev/null +++ b/support/latexdraw/digitizer/digitizer.c @@ -0,0 +1,360 @@ +/* Include files for X 11 */ +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +#include <termio.h> +#include <stdio.h> +#include <errno.h> +#include <sys/file.h> +#include <sys/fcntl.h> +#include <string.h> +#include <unistd.h> + +#include "digitizer.h" + +/* ---------------------------------------------------------------------- */ + + +#define DIGI_MSG_LEN 13 /* Laenge der Digitizer Message */ +#define MAX_MSG 5 /* Anzahl der MSG die ueberlesen werden */ +#define DIGI_INIT_STRING "@cG\"" /* Stream-Mode / Grid-Mode */ +#define TRUE (0==0) +#define FALSE (1==0) +/* #define DEBUG Um Debugging einzuschalten */ + +/* ---------------------------------------------------------------------- */ + +/* Modulglobale Variable */ +static int device; +static int win_x, + win_y, + win_w, + win_h; +static int display_height; +static int win_pos_unknown = TRUE; + +/* ---------------------------------------------------------------------- */ + +/* + Position und Groesse des LaTeXDraw-Fensters speichern +*/ +void save_win_pos(x, y, w, h) +int x, y, w, h; +{ + if (win_pos_unknown) + { + /* Erster Aufruf ==> alles merken */ + win_x = x; + win_y = y; + win_w = w; + win_h = h; + win_pos_unknown = FALSE; +#ifdef DEBUG + fprintf(stderr, "Alles neu : (%d|%d|%d|%d)\n", + win_x, win_y, win_w, win_h); +#endif + } + else { + if ((win_w == w) && (win_h == h)) + { + /* Position des Fensters hat sich veraendert */ + win_x = x; + win_y = y; +#ifdef DEBUG + fprintf(stderr, "Neue Position : (%d|%d)\n", win_x, win_y); +#endif + } + else { + /* Groesse des Fensters hat sich veraendert */ + win_w = w; + win_h = h; +#ifdef DEBUG + fprintf(stderr, "Neue Groesse : (%d|%d)\n", win_w, win_h); +#endif + } + } +} + +/* ---------------------------------------------------------------------- */ + +/* + Verbindung zum Digitizer herstellen und Digitizer initialisieren +*/ +int init_digitizer(display) +Display *display; +{ + char config[32]; + int i; + struct termio termbuf; + XWindowAttributes attribs; + + + device = open("/dev/tty01", O_RDWR); + + if (-1 == device) + { + printf("\r\nDevice konnte nicht geoeffnet werden"); + return(-1); + } + + if (-1 == ioctl(device,TCGETA,&termbuf)) + { + printf("\r\nFehler beim lesen der KONFIG, Fehler %d",errno); + return(-1); + } + + + termbuf.c_iflag &= ~(INLCR | ICRNL | IUCLC | ISTRIP | BRKINT); + termbuf.c_oflag &= ~OPOST; + termbuf.c_lflag &= ~(ICANON | ISIG | ECHO); + termbuf.c_cc[VMIN] = 0; + termbuf.c_cc[VTIME] = 0; + + termbuf.c_cflag &= ~CBAUD; + termbuf.c_cflag |= B9600; + termbuf.c_cflag &= ~CSIZE; + termbuf.c_cflag |= CS8; + termbuf.c_cflag &= ~CSTOPB; + termbuf.c_cflag &= ~PARENB; + + if (-1 == ioctl(device,TCSETA,&termbuf)) + { + printf("\r\nFehler device %d",errno); + return(-1); + } + /* presence stream mode */ + strcpy(config, DIGI_INIT_STRING); + + for (i=0; i<strlen(config); i++) + write(device, &config[i], 1); + + /* Groesse des Displays holen und Digitizer skalieren */ + XGetWindowAttributes(display, DefaultRootWindow(display), &attribs); + config[0] = 'r'; + config[1] = attribs.width & 0xff; + config[2] = (attribs.width & 0xff00) >> 8; + config[3] = attribs.height & 0xff; + config[4] = (attribs.height & 0xff00) >> 8; + write(device, config, 5); + + display_height = attribs.height; + + return(1); +} + +/* ---------------------------------------------------------------------- */ + +/* + Aus der seriellen Schnittstelle ankommende Zeichen lesen + Insgesamt werden MAX_MSG Nachrichten eingelesen, von denen die letzte + in *x,*y,*button zurueckgegeben wird +*/ +static int readit(x,y,button) +int *x, + *y, + *button; +{ + /* Zwischenspeicher fuer eingegangene Meldungen */ + static char zwsp[(MAX_MSG+1)*DIGI_MSG_LEN]; + static int count = 0; + + /* Kommandos fuer Digitizer Mode */ + char cmd1[] = "G!"; /* Wert nur nach Bewegung */ + char cmd2[] = "G "; /* Immer Werte senden */ + + char buffer[MAX_MSG*DIGI_MSG_LEN]; + int i,n; + int erg; + + + /* Im Zweifelsfall kein Ergebniss vorhanden */ + erg = 0; + + /* Maximal eine Nachricht einlesen */ + n = read(device, buffer, 4*DIGI_MSG_LEN); + + /* Gelesene Zeichen in den Puffer kopieren */ + if (0 != n) + { + for (i=0; i<n; i++) + zwsp[count++] = buffer[i]; + } + + /* Eine komplette Nachricht da ? */ + while (count >= DIGI_MSG_LEN) + { + /* Ist der String korrekt aufgebaut */ + if (zwsp[12] == 10) + { + /* Korrekter String */ + *x = *y = *button = 0; + for (i=0;i<4;i++) + { + *x = *x * 10 + (zwsp[i] - '0'); + *y = *y * 10 + (zwsp[5+i] - '0'); + } + *button = zwsp[10] - '0'; + + count -= DIGI_MSG_LEN; + for (i=0; i<count ; i++) + zwsp[i] = zwsp[DIGI_MSG_LEN+i]; + + if (*button != 0) + write(device, cmd2, strlen(cmd2)); + else + write(device, cmd1, strlen(cmd1)); + + erg = 1; + } + else + { + /* Nachricht war Muell also neuen Beginn suchen */ + buffer[0] = 0; + while (10 != buffer[0]) + read(device, buffer, 1); + /* Puffer als geloescht markieren */ + count = 0; + } + /* fprintf(stderr,"(%d|%d | %d)\n", *x, *y, *button); */ + } + + + return (erg); +} + +/* ---------------------------------------------------------------------- */ + +/* + Digitizer Koordinaten so umwandeln, dass aus ihnen LaTeXDraw-Koordinaten + werden +*/ +static void translate_digi_to_ltd(x_in, y_in, x_out, y_out) +int x_in, + y_in; +int *x_out, + *y_out; +{ + *x_out = x_in; + *y_out = win_h - y_in; +#ifdef DEBUG + fprintf(stderr, "(%d|%d) ==> (%d|%d)\n", + x_in,y_in, *x_out, *y_out); +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* + Koordianten eines Digitizer-Events in LTD-Koordinaten umrechnen +*/ +void translate_x_to_ltd(x_in, y_in, x_out, y_out) +int x_in, + y_in; +double *x_out, + *y_out; +{ + *x_out = (double)x_in; + /* *y_out = (double)(y_in - win_h); */ + *y_out = (double)(win_h - y_in); +#ifdef DEBUG + fprintf(stderr, "x->digi (%d|%d) ==> (%f|%f)\n", + x_in,y_in, *x_out, *y_out); +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* + Digitizer-Nachrichten erzeugen +*/ +int process_digitizer(display, window) +Display *display; +Window window; +{ + static int old_x = -1; + static int old_y = -1; + static int old_b = -1; + + int x,y, + this_x, + this_y, + this_b; + int stateField[] = {0, + Button2Mask, Button1Mask, + Button4Mask, Button3Mask}; + int buttonField[] = {0, 2, 1, 4, 3}; + long motionEventField[] = {0, + Button2MotionMask, Button1MotionMask, + Button4MotionMask, Button3MotionMask}; + XEvent myEvent; + int event_b; + long event_mask; + + + + /* Wert vom Digitizer holen */ + if (0 == readit(&x, &y, &this_b)) + return(FALSE); + + /* Koordinaten fuer LaTeXDraw umsetzen */ + translate_digi_to_ltd(x,y, &this_x, &this_y); + + if ((this_x != old_x) || (this_y != old_y)) + { + /* Bewegung des Cursors ausfuehren */ + XWarpPointer(display, + None, window, /*DefaultRootWindow(display),*/ + 0, 0, 0, 0, + this_x, + this_y); + old_x = this_x; + old_y = this_y; + + if ((this_b != 0) && (this_b <= 4)) + { + myEvent.type = MotionNotify; + myEvent.xany.display = display; + myEvent.xmotion.window = window; + myEvent.xmotion.x = this_x; + myEvent.xmotion.y = this_y; + myEvent.xmotion.state = stateField[this_b]; + event_mask = motionEventField[this_b]; + XSendEvent(display, PointerWindow, 0, event_mask, &myEvent); + } + } + + + /* Button - Event */ + if ((this_b != abs(old_b)) && (this_b <= 4)) + { + /* Button press oder release */ + if (old_b < 0) + { + event_b = -old_b; + old_b = 0; + myEvent.type = ButtonRelease; + event_mask = ButtonReleaseMask; + } + else + { + event_b = this_b; + old_b = -this_b; + myEvent.type = ButtonPress; + event_mask = ButtonPressMask; + } + + myEvent.xany.display = display; + myEvent.xbutton.window = window; + myEvent.xbutton.x = this_x; + myEvent.xbutton.y = this_y; + myEvent.xbutton.state = stateField[event_b]; + myEvent.xbutton.button = buttonField[event_b]; + + XSendEvent(display, PointerWindow, 0, event_mask, &myEvent); + } + + /* XEvent rausschreiben */ + XSync(display, 0); + return(TRUE); +} + diff --git a/support/latexdraw/digitizer/digitizer.h b/support/latexdraw/digitizer/digitizer.h new file mode 100644 index 0000000000..f075a2d6bf --- /dev/null +++ b/support/latexdraw/digitizer/digitizer.h @@ -0,0 +1,29 @@ + +/* ---------------------------------------------------------------------- */ + +/* + Position und Groesse des LaTeXDraw-Fensters speichern +*/ +void save_win_pos(int x, int y, int w, int h); + +/* ---------------------------------------------------------------------- */ + +/* + Verbindung zum Digitizer herstellen und Digitizer initialisieren +*/ +int init_digitizer(Display *display); + +/* ---------------------------------------------------------------------- */ + +/* + Koordianten eines Digitizer-Events in LTD-Koordinaten umrechnen +*/ +void translate_x_to_ltd(int x_in, int y_in, double *x_out, double *y_out); + + +/* ---------------------------------------------------------------------- */ + +/* + Digitizer-Nachrichten erzeugen +*/ +int process_digitizer(Display *display, Window window); diff --git a/support/latexdraw/doc/ltdmanual.e.ps.gz b/support/latexdraw/doc/ltdmanual.e.ps.gz Binary files differnew file mode 100644 index 0000000000..2f7501fdf2 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.e.ps.gz diff --git a/support/latexdraw/doc/ltdmanual.e.tex.gz b/support/latexdraw/doc/ltdmanual.e.tex.gz Binary files differnew file mode 100644 index 0000000000..0d18298e7c --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.e.tex.gz diff --git a/support/latexdraw/doc/ltdmanual.g.ps.gz b/support/latexdraw/doc/ltdmanual.g.ps.gz Binary files differnew file mode 100644 index 0000000000..346257da25 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.g.ps.gz diff --git a/support/latexdraw/doc/ltdmanual.g.tex.gz b/support/latexdraw/doc/ltdmanual.g.tex.gz Binary files differnew file mode 100644 index 0000000000..ec970cc03f --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.g.tex.gz diff --git a/support/latexdraw/doc/ltdmanual.html.e/index.html b/support/latexdraw/doc/ltdmanual.html.e/index.html new file mode 100644 index 0000000000..ba459c359d --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/index.html @@ -0,0 +1,64 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE>No Title</TITLE> +</HEAD> +<BODY> +<meta name="description" value="No Title"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html1 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif_gr.gif"> <IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif_gr.gif"> <A NAME=tex2html3 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html2 HREF="node1.html"> Environment</A> +<BR> <HR> <P> +<P> +<H3><b> Manual for LaTeXdraw version C15.04 and later<BR> +</H3></b> +<P> +(Siegert, 17.08.1996) 1st raw translation +<P> +<b> This version is upward compatible with all older versions. Since + version 14.04 a digitizer tablet can be connected. The description + of this tablet is not included.</b> +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html4 HREF="node1.html#SECTION00010000000000000000"> Environment</A> +<UL> +<LI> <A NAME=tex2html5 HREF="node2.html#SECTION00011000000000000000"> Style files</A> +<LI> <A NAME=tex2html6 HREF="node3.html#SECTION00012000000000000000"> Fonts</A> +</UL> +<LI> <A NAME=tex2html7 HREF="node4.html#SECTION00020000000000000000"> User interface</A> +<UL> +<LI> <A NAME=tex2html8 HREF="node5.html#SECTION00021000000000000000"> Cursor</A> +<LI> <A NAME=tex2html9 HREF="node6.html#SECTION00022000000000000000"> Files</A> +<LI> <A NAME=tex2html10 HREF="node7.html#SECTION00023000000000000000"> LaTeXdraw -Window</A> +<LI> <A NAME=tex2html11 HREF="node8.html#SECTION00024000000000000000"> Command options</A> +<LI> <A NAME=tex2html12 HREF="node9.html#SECTION00025000000000000000"> Mouse buttons</A> +<LI> <A NAME=tex2html13 HREF="node10.html#SECTION00026000000000000000"> Object groups</A> +<LI> <A NAME=tex2html14 HREF="node11.html#SECTION00027000000000000000"> Selection of menue items</A> +<LI> <A NAME=tex2html15 HREF="node12.html#SECTION00028000000000000000"> Error messages</A> +</UL> +<LI> <A NAME=tex2html16 HREF="node13.html#SECTION00030000000000000000"> Description of the menue items</A> +<LI> <A NAME=tex2html17 HREF="node14.html#SECTION00040000000000000000"> LaTeXdraw --file</A> +<LI> <A NAME=tex2html18 HREF="node15.html#SECTION00050000000000000000"> LaTeX-file</A> +<LI> <A NAME=tex2html19 HREF="node16.html#SECTION00060000000000000000"> Internal format of the LaTeXdraw --file</A> +<UL> +<LI> <A NAME=tex2html20 HREF="node17.html#SECTION00061000000000000000"> Header</A> +<LI> <A NAME=tex2html21 HREF="node18.html#SECTION00062000000000000000"> Drawing objects</A> +<UL> +<LI> <A NAME=tex2html22 HREF="node19.html#SECTION00062100000000000000"> Parameters for different objects</A> +<LI> <A NAME=tex2html23 HREF="node20.html#SECTION00062200000000000000"> Common parameters</A> +</UL> +<LI> <A NAME=tex2html24 HREF="node21.html#SECTION00063000000000000000"> Structure of the groups</A> +</UL> +<LI> <A NAME=tex2html25 HREF="node22.html#SECTION00070000000000000000">Contents</A> +<LI> <A NAME=tex2html26 HREF="node23.html#SECTION00080000000000000000"> About this document ... </A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node1.html b/support/latexdraw/doc/ltdmanual.html.e/node1.html new file mode 100644 index 0000000000..b0c874050e --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node1.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Environment</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Environment"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html35 HREF="node2.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html33 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html27 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html37 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html36 HREF="node2.html"> Style files</A> +<B>Up:</B> <A NAME=tex2html34 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html28 HREF="ltdmanual.e.html">No Title</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00010000000000000000> Environment</A></H1> +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html38 HREF="node2.html#SECTION00011000000000000000"> Style files</A> +<LI> <A NAME=tex2html39 HREF="node3.html#SECTION00012000000000000000"> Fonts</A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node10.html b/support/latexdraw/doc/ltdmanual.html.e/node10.html new file mode 100644 index 0000000000..daaf9b1a54 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node10.html @@ -0,0 +1,44 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Object groups</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Object groups"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html142 HREF="node11.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html140 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html134 HREF="node9.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html144 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html143 HREF="node11.html"> Selection of menue </A> +<B>Up:</B> <A NAME=tex2html141 HREF="node4.html"> User interface</A> +<B> Previous:</B> <A NAME=tex2html135 HREF="node9.html"> Mouse buttons</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00026000000000000000> Object groups</A></H2> +<P> +Drawing objects can be aggregated to groups of objects. Groups can be +aggregated with other groups or drawing objects to higher level +groups. Groups can be ungrouped later. Grouping information persists +even if the grouping mode is inactive. +<P> +If the grouping mode is inactive then objects can be selected, deleted +or modified without beeing influenced by the group structure. +<P> +If the grouping mode is active then the selection of objects is +influenced by the group structure in the following way: +<UL><LI> If according to the context only the selection of a single + object is reasonable, then the object you clicked on is selected, + e.g. you select a line to draw a parallel line. +<LI> If you click on an object e, then all objects are selected which + belong to the same groups as e (highest level group and all + subgroups). If e is not in a group, then e is selected. +<LI> If you define a selection rectangle, then all objects are + selected which are not part of a group, but are within the + rectangle, and all objects of those groups where all objects of the + highest level group are within the selection rectangle. +</UL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node11.html b/support/latexdraw/doc/ltdmanual.html.e/node11.html new file mode 100644 index 0000000000..19dfbe1f0c --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node11.html @@ -0,0 +1,35 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Selection of menue items</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Selection of menue items"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html153 HREF="node12.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html151 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html145 HREF="node10.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html155 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html154 HREF="node12.html"> Error messages</A> +<B>Up:</B> <A NAME=tex2html152 HREF="node4.html"> User interface</A> +<B> Previous:</B> <A NAME=tex2html146 HREF="node10.html"> Object groups</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00027000000000000000> Selection of menue items</A></H2> +<P> +Menue items define drawing objects, options for objects and other +operations. Active menue items are displayed in inverse color +(black). If you click with button 1 you can activate and deactivate +items. If a new activation gets in conflict with other activations, +then the other items are deactivated. Items may be active even when +they are without influence to the current drawing process. +<P> +It is always(!) possible to click on a menue item to change an option +or to abort an operation or drawing process. Menue items which are +options are used at the latest possible point in the drawing process. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node12.html b/support/latexdraw/doc/ltdmanual.html.e/node12.html new file mode 100644 index 0000000000..70782030f8 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node12.html @@ -0,0 +1,26 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Error messages</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Error messages"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html162 HREF="node13.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html160 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html156 HREF="node11.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html164 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html163 HREF="node13.html"> Description of the </A> +<B>Up:</B> <A NAME=tex2html161 HREF="node4.html"> User interface</A> +<B> Previous:</B> <A NAME=tex2html157 HREF="node11.html"> Selection of menue </A> +<BR> <HR> <P> +<H2><A NAME=SECTION00028000000000000000> Error messages</A></H2> +<P> +Error messages and file operations are displayed in the parent window. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node13.html b/support/latexdraw/doc/ltdmanual.html.e/node13.html new file mode 100644 index 0000000000..dc3ac928ad --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node13.html @@ -0,0 +1,651 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Description of the menue items</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Description of the menue items"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html173 HREF="node14.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html171 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html165 HREF="node12.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html175 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html174 HREF="node14.html"> LaTeXdraw --file</A> +<B>Up:</B> <A NAME=tex2html172 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html166 HREF="node12.html"> Error messages</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00030000000000000000> Description of the menue items</A></H1> +<P> +<OL><LI> Menue item 'quit'<BR> + Quit the program. Input of the name of a file to save the current + drawing is requested. If the file name is empty, the drawing is not + saved. +<P> +<LI> Menue item 'load'<BR> + Load a new picture. The name of a LaTeXdraw --inputfile is requested. If + the file name is empty or the file not existent, then the drawing + area is cleared. +<P> +<LI> 'save'<BR> Save the current picture. The name of a + LaTeXdraw --outputfile is requested. If the suggested name is ok, then + press return otherwise type name. If the file name is empty then no + output is generated. The drawing process can proceed after saving. + The output file can be loaded with 'load'. +<P> + After writing the LaTeXdraw --outputfile the name of a LaTeX--file is + requested. If the suggested name is ok, then + press return otherwise type name. If the file name is empty then no + output is generated. Otherwise output options are requested. If they + are the same as last saved for this picture, just press return. If + they differ, you are prompted for input: + <UL><LI> Do you want the output file with or without header and + trailer? + <LI> Maximum width and maximum height of picture in mm (for scaling)? + <LI> Orientation of picture (rotated 90 degrees or not)? + </UL> + The current output options are also saved in the LaTeXdraw --file for + later use. +<P> + Note:<BR> Width and height are always defined for the picture before + rotation! Width and height are used for calculating the LaTeX + scaling factor '\unitlength'. Scaling is uniform in both + dimensions. The scaling is calculated to fill one of the two + dimensions with the picture. Linewidth and text fonts are never + scaled in order to achieve quality and consistency with the + surrounding document. +<P> +<LI> Menue item 'text'<BR> + First a point, the reference point, is defined. Then text input with + the keyboard is requested. This text is displayed in the prompt line + and can be modified there. If there was already a text object at + the selected point, the text of this object is displayed. +<P> + The font used is indicated in the menue field next to the menue item + 'text', e.g. 17bpt means bold 17 points. An empty field means use + the font defined in the environment of the picture. You may change + the font by selecting the font from the special menue or by clicking + with the left or right mouse button in the font field next to 'text' + before finishing text input. +<P> + Text input is finished with return. Text can be no longer than about + 110 characters. +<P> + Modifying text is similiar to emacs; use the characters DELETE, + BACKSPACE or ctrl-a, ctrl-d, ctrl-e and ctrl-k. +<P> + The fonts used are defined with macros in latexdraw.sty and can be + changed. The commands are defined as \F<fname>, where + fname is the font name displayed in the menue with the arabic + numbers transformed into roman numbers, e.g. font 12bpt is + associated with command \FXIIbpt. +<P> + The text is aligned relative to the reference point according to the + menue options 'l, r, t, b' and their combinations. The + reference point is indicated on the screen with a small triangle. + The alignment is read when text input is finished with return. + Meaning: + <UL><LI> 'l': Text aligned left + <LI> 'r': Text aligned right + <LI> both 'l' and 'r' not active: Text width centered + <LI> 'b': Text bottom aligned + <LI> 't': Text top aligned + <LI> both 'b' and 't' not active: Text height centered + </UL> +<P> + If the menue item '||' is activated, then the text is + rotated. The rotation is defined by selecting a reference line which + is parallel to the text. Since X-Windows is unable to display + rotated text, the text is always displayed horizontally. The + rotation is indicated by a special line associated with the text. + Since texts are character strings which are processed by the latex + programm it is allowed to use all macros (commands) defined by the + latex environment of the picture in your document. +<P> +<LI> Menue item 'line'<BR> + Used to draw a line. Most lines are defined by their start and end + point only. Options are '||', '|-', ' _ ', ' . ', + 'b>', 'e>' and '|]'. +<P> + '||' says that you want to draw a line which is parallel to + some other line and has the same lenght. +<P> + '|-' says that you want to draw a line which is normal to an + other line. +<P> + Solid lines are drawn when neither ' _ ' nor ' . ' are activated. + If only ' _ ' (' . ') is active the lines are dashed (dotted). If + both ' _ ' and ' . ' are activated then the lines are dashed + dotted. +<P> + 'b>' ('e>') means arrow at the beginning (end) of a line. The + beginning of a line is the first point you defined. +<P> + If there are no arrows selected but '|]' then solid lines are + extended half their linewidth on both ends. +<P> + The linewidth is defined by an integer between 0 and 20. The value + is displayed in the menue field '='. For printing the actual + linewidth is calculated in latexdraw.sty. +<P> +<LI> Menue item 'circle'<BR> + Used to draw a circle or a filled circle or a circular arc or a + circular pieslice. A circle is defined by its center point and a + point on the circle. For an arc the beginning and the end of the arc + has to be defined (in mathematical sense). +<P> + If menue item 'C' is active then an arc or pieslice is drawn. +<P> + If menue item '* ' is active a filles circle or a pieslice is + drawn. +<P> + The menue items ' _ ' and ' . ' define the linetype for circles or + circular arcs. +<P> + The menue items 'b>' and 'e>' define possible arrows for arcs. +<P> + Defining the beginning or end of an arc has an important definition + which allows -- in contrast to other drawing programs -- easy and + precise positioning in many important cases. Assume (xc,yc) is the + center point and you have clicked on (x,y) to define the beginning + or end of the arc. Then the arc starts (ends) at the intersection of + the line defined by (xc,yc) to (x,y) and the circle. +<P> + An other way to define arcs is the direct keyboard input of the arc + as floating point number in degrees. This can be done when 'deg' is + active. +<P> + To select a circle or arc click on the circle or arc. +<P> +<LI> Menue item 'ellipse'<BR> + It is used to draw an ellipse or afilled ellipse or an elliptical + arc or a elliptical pieslice. For details see 'circle'. When you + have to define the endpoints of the x-axis (y-axis) then only the + x-value (y-value) of the selected point is used. +<P> + Ellipses are rotation sensitive. If menue item '||' is + active then the major axis of the ellipse is parallel to line to be + selected. +<P> +<LI> Menue item 'rectangle'<BR> + It is used to draw a rectangle or a filled rectangle if '* ' is + active. To define the rectangle you have to define 2 diagonal corner + points. A rectangle which is not filled is represented as four + isolated lines. +<P> + To select a rectangle click on the lines. To select a filled + rectangle click on a point within the rectangle. +<P> +<LI> Menue item 'triangle'<BR> + It is used to draw a triangle, defined by three corner points. If + '* ' is active then the triangle is filled. +<P> + A triangle which is not filled is represented as three isolated + lines. +<P> + To select a triangle click on one of the lines. To select a filled triangle + click on a point within the triangle. +<P> +<LI> Menue item 'quadrangle'<BR> + It is used to draw a quadrangle defined by four corner points in + sequence. If '* ' is active then the quadrangle is filled. +<P> + A quadrangle which is not filled is represented as four isolated + lines. +<P> + To select a quadrangle click on one of the lines. To select a filled + quadrangle click on a point within the quadrangle. +<P> +<LI> Menue item 'Bezier'<BR> + It is used to draw a Bezier curve of third order, defined by 4 + points. Linetype and arrows as described under 'line'. If '* ' is + active then the curve is filled. +<P> + The first point is the starting point of the Bezier curve. The + second point defines the tangent to the starting point. The fourth + point is the endpoint of the curve. The third point defines the + tangent to the end point. +<P> + A new Bezier curve which has the end point of the previous Bezier + curve as starting point and the same tangent there can be defined by + additional input of 2 points which define the tangent to the + endpoint and the endpoint. +<P> +<LI> Menue item 'polygon'<BR> + It is used to draw a regular polygon. First point is the center + point, the second point is a point on the circle. The number of + vertices is requested as a keyboard input. This input is finished by + 'RETURN'. If the menue field '* ' is active, then all vertices + are connected by a line with the center point. +<P> +<LI> Menue item 'connect'<BR> + The center points of two drawing objects are connected. The center + points are dependeing of the type of the drawing object, e.g. for + filled trinangles the center of gravity is used as center point. +<P> + If menue field 'p' is active then the second point is not defined by + a drawing object but is the click-point itsself. +<P> + Is neither 'X' nor 'Y' active, then the two point are connected by a + direct line. If 'X' is active then the connecting line consists of a + horizontal line first and then a vertical line. If 'Y' is active + then the connecting line consists of a vertical line first and then + a horizontal line. +<P> + If the first (second) part of the line intersects the first (second) + drawing object then this part of the line is trimmed. +<P> +<LI> Menue item 'p'<BR> + Used only with 'connect'. See this description. +<P> +<LI> Menue item 'X'<BR> + Used only with 'connect'. See this description. +<P> +<LI> Menue item 'Y'<BR> + Used only with 'connect'. See this description. +<P> +<LI> Menue item 'mirror'<BR> + Objects are mirrored at a line. First this line is + selected. Afterwards objects can be selected which are + mirrored. Texts are only parially mirrored, the refernce point and + the orientation of the text are correctly transformed. But the + individual characters are not mirrored correctly. +<P> +<LI> Menue item 'attr?'<BR> + You can request the display of some attributes not easily + recognizable by selecting objects. The attributes linewidth, colour, + and font of an object are displayed in the menue. +<P> +<LI> Menue item 'rotate'<BR> + Objects are rotated by the number of degrees given in the field to + the right of 'rotate'. The direction of rotation is in the + mathematical sense (counter clockwise). +<P> + First you have to select the objects, either by cklicking at + individual objects or by an selection area. The selected objects + blink. +<P> + The rotation point is the point you clicked on or in the case of a + selection area a point you are asked for. In the latter case you can + define further rotations of the selected objects by defining further + rotation points. +<P> + The number of degrees is changed by clicking on the field with the + degrees. Clicking with the left (right) mouse button adds 5 (30) + degrees, modulo 360 degrees. +<P> +<LI> Menue item 'copy'<BR> + Objects which have been selected or are within a selection rectangle + can be copied to an other point of the window. The objects which are + selected blink. There are two modes to copy, selected by field 'm' + in the same line of the menue. +<P> + Case 'm' not active: Copying is based on a transformation containing + a translation, a rotation and a scaling. This transformation is + defined by two lines, the reference line and the goal line. The + transformation transforms the reference line into the goal + line. After selecting the two lines you can select objects to be + copied after applying the transformation. +<P> + Case 'm' active before selecting copy: One or more objects can be + selected either by clicking on them or by using a selection + rectangle. The objects selected are blinking. If a selection + rectangle is defined you are requested to click on a reference point + otherwise the refernce point is the point you clicked on when + selecting the object(s). After this you can copy the selected + objects as often as you like by clicking on a goal point. The + objects are copied in a way that goal point and refernce point + coincide. There is no rotation and no scaling. +<P> +<LI> Menue item 'move'<BR> + You can move objects from one place to another. Handling is the same + as described for copying, but the original objects are deleted. +<P> +<LI> Menue item 'm' in the line of 'copy' and 'move'<BR> + Copy or move objects with the mouse. See 'copy' for details. +<P> +<LI> Menue item 'complete'<BR> + Two lines with one common end-point are selected. This two lines are + complemented by two other lines to yield a parallelogram. +<P> +<LI> Menue item 'extend'<BR> + You can select a line, a circular or an elliptical arc which is then + extended with a predefined factor. The extension is starting from + the endpoint wich is nearest to the point you clicked on. By + extending an arc a whole circle or ellipse may result. +<P> +<LI> Menue item 'fill'<BR> (see also menue item '* ')<BR> + You select a drawing object to generate a filled drawing object of + the same kind. The new object is always painted before all other + existing objects, therefore it does not hide already existing + objects. +<P> + You may fill circles, ellipses, circular arcs, elliptical arcs, + filled circular arcs, filled elliptical arcs, triangles and + quadrangles. +<P> + Triangles are defined by clicking on two intersecting lines. The + parts you clicked on define two edges. Quadrangles are defined by + clicking on two lines. This defines the four vertices for the filled + quadrangle. There are two possible ways to connect the four points. + To resolve this ambiguity we connect those endpoints of the two + lines which are closest to the point clicked on when selecting the + line. +<P> +<LI> Menue item 'trim'<BR> + We define simple objects: lines, circles, ellipses, arcs, pieslices. + A simple object T can be intersected other single objects or + extended lines. A part of T between two intersection points or + between an intersection point and an end point of T can be + removed. First click on a point of T in the part to be removed. The + select two simple objects, which define the intersection points. If + only one other simple object is involved, select this same object + twice. Removing the whole object T in this way is not possible. +<P> +<LI> Menue item 'up'<BR> + You select one or more objects. This objects are moved up to the top + of the hierarchy of drawing objects, this means they are painted + last and may obscure other objects lower in the hierarchy. In + addition the sequence of the selected objects in the hierarchy is + reversed. +<P> +<LI> Menue item 'down'<BR> + You select one or more objects. This objects are moved down to the + bottom of the hierarchy of drawing objects, this means they are + painted first and may be obscured by other objects higher in the + hierarchy. The sequence of the selected objects in the hierarchy is + not reversed. +<P> +<LI> Menue item 'delete'<BR> + The selected object is deleted. If you press one of the keys + BACKSPACE, DELETE oder UNDO all objects deleted since the last + selection of the menue item 'delete' are restored. +<P> +<LI> Menue item 'cut'<BR> + With the menue items 'cut' and 'paste' you may copy objects from one + LaTeXdraw -window to an other LaTeXdraw -window. Selecting 'cut' defines + this window as the from-window. Only one from-window can exist. + After selecting 'cut' you have to define a reference point. + Afterwards you can select objects by clicking on them or by defining + a selection rectangle. Selected objects blink. If you select one + object more than once, this has no effect. If to-windows are already + defined then the objects selected are copied into the to-windows as + soon as they are selected. Otherwise the objects selected are copied + when a to-window comes into existence. The grouping of objects is + not copied. +<P> +<LI> Menue item 'paste'<BR> + Selecting 'paste' defines this window as a to-window. More than one + to-window can be defined. After selecting 'paste' you have to define + a goal point. A to-window is ready to accept selected objects from + the from-window (see 'cut'). The copied objects from the from-window + are translated so that the reference point in the from-window + coincides with the goal point of the to-window. +<P> +<LI> Menue item '-l'<BR> + Text is aligned left horizontally with the reference point. +<P> +<LI> Menue item '-r'<BR> + Text is aligned right horizontally with the reference point. +<P> +<LI> Menue item '-b'<BR> + The bottom of the text is aligned with the reference point. +<P> +<LI> Menue item '-t'<BR> + The top of the text is aligned with the reference point. +<P> + <LI> Menue item '* '<BR> + The drawing object selected is filled. No border line is generated. + Circles, ellipses, arcs, rectangles, quadrangles and Bezier curves + may be filled. Regular polygons are not filled, but connecting + lines between vertices and center point are generated. +<P> +<LI> Menue item 'C'<BR> + If the drawing objects 'circle' or 'ellipse' are selected circular + arcs or elliptical arcs are drawn. They are filled, if in addition + '* ' is active. +<P> +<LI> Menue item '||'<BR> + The symbol '||' stands for parallel. +<P> + If you draw a line and '||' is active you want to draw a + line parallel to line gp. You have to click on the first end point + of the line. Then you click on a point to define roughly the + direction the resulting line should go. Then you select the line gp. + The generated line is as long as line gp and is parallel to gp. +<P> + If you draw an ellipse or a elliptical arc you want the main axis + parallel to line gp. Again you have to click on the line gp as + requested in the drawing process. +<P> + If you define text, the text can be oriented parallel to a line gp. + Again you have to click on the line gp as requested in the drawing + process. +<P> +<LI> Menue item '-|'<BR> + The symbol '-|' stands for normal to. A line is defined by its + starting point p and a line s. The end point of the line is the + intersection of line s and its normal through point p. +<P> +<LI> Menue item 'mp'<BR> + The symbol 'mp' stands for middle point. +<P> + If 'mp' is active the point clicked on replaced by a modified point + as follows: + <UL><LI> Case 1: You clicked on a line then the resulting point is the + middle point of the line. + <LI> Case 2: You clicked on a circle, an ellipse or an arc then + the resulting point is the center point of the object. + <LI> Case 3: You clicked on a filled triangle or rectangle or + quadrangle then the resulting point is the center of gravity of + the object. + <LI> Case 4: The point you clicked on is too far from an object + then the resulting point is the point you clicked on. + </UL> +<P> +<LI> Menue item 'b>'<BR> + An arrow is at the beginning of a line, an arc or a Bezier curve. +<P> +<LI> Menue item 'e>'<BR> + An arrow is at the end of a line, an arc or a Bezier curve. +<P> +<LI> Menue item '|]'<BR> + If this item is activated and there is no arrow at the end points + selected, then solid lines are extended on both sides by half the + linewidth. +<P> +<LI> Menue item '=<number>'<BR> + This number represents the linewidth. By clicking on this field with + the left (right) mouse button this number is incremented + (decremented) by one modulo 20. The actual linewidth in points for + printing is calculated as 0.57*<number>. It may be changed in + latexdraw.sty. +<P> +<LI> Menue item ' _ ' and not menue item ' . ' active<BR> + Lines are dashed. +<P> +<LI> Menue item ' . ' and not menue item '_ ' active<BR> + Lines are dotted. +<P> +<LI> Menue item ' _ ' and menue item ' . ' active<BR> + Lines are dashed-dotted. +<P> +<LI> Menue items ' < ^ v > '<BR> + Scrolling of the drawing by a fixed amount left, up, right or down. + There is no problem if parts of the drawing are outside of the + window. Scrolling of the window can be done at any time, also + between clicks defining one drawing object. Scrolling can also be + done with the arrow keys of the keyboard. +<P> +<LI> Menue item '[]'<BR> + The drawing is saved and work can continue. +<P> +<LI> Menue item 'groupmode'<BR> + Groupmode is activated, selecting one object may select all objects + of a group. If single objects are to be selected, e.g. for changing + their attributes or for deleting, then 'groupmode' should not be + active. Turning off groupmode does not destroy the group hierarchy + but only deactivates it. +<P> +<LI> Menue item 'newgroup'<BR> + A new group of objects is generated. All objects or object groups + you select until you click again on 'newgroup' or on an other menue + item are grouped together. The objects selected blink. +<P> +<LI> Menue item 'ungroup'<BR> + You ungroup a group of objects. First you click on an object, then + all elements of the highest group this object is contained in + blink. If you click on 'OK' then this highest group is ungrouped + into the single objects or the object groups this group consisted + of. +<P> +<LI> Menue item 'showgroup'<BR> + You click on an object, then all elements of the highest group this + object is contained in blink. +<P> +<LI> Menue item 'G' (Grid)<BR> + A grid is always displayed. Since snap is defined in a new way it is + rarely necessary to work without a grid. +<P> + If you click on 'G' then a square grid with a basic gridwidth is + displayed where the center point, is the center of the drawing area. +<P> + Then you may define three additional points or leave the grid + definition by selecting an other menue item now or later at any + point in the progress. In this case the grid defined at the moment + you leave is the grid to be used. +<P> + The first point gives the center point of the grid. Width and height + of the mesh stay unchanged. +<P> + The second point is the next grid point to the right of the center + point. The grid may not be parallel to the x- and y-axis, but the + mesh is rectangular. Width and height of the mesh are identical. +<P> + The third point is the next grid point above the center point. The + third and second point together define a grid, whose width and + height are different and which is not rectangular. +<P> + The width and height of the mesh changes also when scaling the + drawing. +<P> +<LI> Menue item 'o'<BR> + The drawing is centered around the middle of the drawing area. This + operation can be done at any time. +<P> +<LI> Menue item '+'<BR> + The drawing is enlarged. This operation can be done at any time. + You can also use key + of the keyboard. +<P> +<LI> Menue item '-'<BR> + The drawing is scaled down. This operation can be done at any time. + You can also use key - of the keyboard. +<P> + <LI> Menue item 'snap'<BR> + When clicking on a point and 'snap' is active, then the point + really used is in most cases the snap-in-point. If snap is not + active, then the point used is the point you clicked on. +<P> + The snap-in-point is the nearest hot-point of an object or grid, if + this point is within a certain range. Otherwise it is the point you + clicked on. +<P> + Hot-points are + <UL><LI> reference points of texts + <LI> endpoints of lines, arcs and Bezier-curves + <LI> center points of circles, ellipses and arcs + <LI> vertices of triangles, rectangles and quadrangels + </UL> +<P> +<LI> Menue item 'xy'<BR> + If 'xy' is active you define the next point not by clicking with + the mouse button but by giving two floating point numbers separated + by blanks via keyboard input. The coordinates are defined in + gridunits relative to the center point of the grid. Input is + finished with key RETURN. +<P> +<LI> Menue item 'deg'<BR> + If 'deg' is active the next point to define an end point of an arc + is not defined by clicking with the mouse button, but by keyboard + input of a floating point number. This number gives the angle of the + endpoint in degrees in the mathematical sense. +<P> +<LI> Menue item '<colornumber>:<colorname>'<BR> + The number and name of the color used for strokes and for filling is + given in this menue field. The background color of this field is + this color. The number is incremented (decremented) by one through + clicking with the left (right) mouse button on this field. You can + also select a color by clicking on the special menue part. +<P> + If a color is not available the corresponding field is black. The + internal representation of the colors is with an integer value. + Number 0 is black and number 1 is white. The actual colors used are + defined in the style file latexdraw.sty by their RGB-values. +<P> + <LI> Menue item 'chatt'<BR> + You can change the attributes of objects by first clicking on the + attribute in the menue and then selecting objects. The process of + changing attributes and selecting objects can be repeated. The + attributes linewidth, colour, type of line, arrows, font and + text-alignment can be changed. Only those attributes are changed + which have been clicked on at least once after selecting 'chatt'! +<P> + <LI> Menuefeld 'stdin'<BR> + + If activated, input from standard-input is expected and waited + for. There are two cases:<P> + + First case: A complete Latexdraw-file arrives, including the + headlines with a version number and other parameters as well as the + trailing lines which define the groups. In this case all in + the programm already existing drawing elements are deleted and only the + newly arriving drawing elements are stored. This is equivalent to + loading a new picture. This new picture is diplayed after input of + the last line, then there is a delay of d seconds until a new + interaction is possible (see menue item 'd:').<P> + + Second case: Only drawing elements are coming, without header lines + or trailing lines. Already existing drawing elements are retained + and not deleted. A newly arriving drawing element with positiv type + is stored on top of the existing elements, therefore displayed + last. If there is already a identical drawing element, which + differs only in color or lineattributes, these attributes are taken + from the newly arrived element and the latter is discarded + afterwards. If the type of the element is negativ (-t) and there + is an identical element with type t, then both elements are + deleted. A drawing element has the structure as in the + Latexdraw-file and must be contained in one line. The last element + is followed by a line with 17 zeros separated by blanks. If such a + line arrives, the drawing is displayed, then there is a delay of d + seconds until a new interaction is possible (see menue item 'd:').<P> + + Input using standard input can consist of an arbitrary mixed + sequence of the obove mentioned two input types. Only after input + of a whole line interactions with the menue of the window is + possible. There are no restrictions in the actions possible, e.g. + it is possible to activate other menue-items and continue standard + input later.<P> + + The feature is especially useful for on-line animations, therefore + grid points and click marks are not displayed in this mode. +<P> + + <LI> Menuefeld 'd:<dauer>s'<BR> + + The value $<$dauer$>$ represents the delay in seconds after input + of drawings using standard input (see stdin). The value is + incremented (decremented) by clicking on this field with the left + (right) mouse button. + +</OL><BR> <P> + +<HR><A NAME=tex2html173 HREF="node14.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html171 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html165 HREF="node12.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html175 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html174 HREF="node14.html"> LaTeXdraw --file</A> +<B>Up:</B> <A NAME=tex2html172 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html166 HREF="node12.html"> Error messages</A> +<BR> <HR> <P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node14.html b/support/latexdraw/doc/ltdmanual.html.e/node14.html new file mode 100644 index 0000000000..7550750241 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node14.html @@ -0,0 +1,38 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> LaTeXdraw --file</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" LaTeXdraw --file"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html184 HREF="node15.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html182 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html176 HREF="node13.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html186 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html185 HREF="node15.html"> LaTeX-file</A> +<B>Up:</B> <A NAME=tex2html183 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html177 HREF="node13.html"> Description of the </A> +<BR> <HR> <P> +<H1><A NAME=SECTION00040000000000000000> LaTeXdraw --file</A></H1> +<P> +The LaTeXdraw --file is an ASCII-file. It is one of the two output files +of LaTeXdraw . It can easily be read or modified by an user. Each line +represents an object. The first number gives the type of the drawing +object, e.g. circle. Then coordinates and other attributes follow. +Each line for an object has the same number of values, even if not all +are needed. If the object is of type text, then the following line +contains the text string. After the input lines which define objects a +line with zeroes is included. +<P> +The header of the LaTeXdraw --output file gives internal parameters. The +trailer of the LaTeXdraw --output file gives the group hierarchy. +<P> +A LaTeXdraw --file can be input file to LaTeXdraw . +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node15.html b/support/latexdraw/doc/ltdmanual.html.e/node15.html new file mode 100644 index 0000000000..cc963330d7 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node15.html @@ -0,0 +1,40 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> LaTeX-file</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" LaTeX-file"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html195 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html193 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html187 HREF="node14.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html197 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html196 HREF="node16.html"> Internal format of </A> +<B>Up:</B> <A NAME=tex2html194 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html188 HREF="node14.html"> LaTeXdraw --file</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00050000000000000000> LaTeX-file</A></H1> +<P> +The LaTeX-file is the second output file of LaTeXdraw . It is the LaTeX +source file representing the drawing. It is used with latexdraw.sty +and pstricks.tex. To convert the DVI-file to Postscript dvips is used. +<P> +The LaTeX-file is also an ASCII-file and can be modified by the user +if necessary. There are two output modes available (defined when you +save a picture): +<OL><LI> The LaTeX-file is a complete LaTeX-document which can be + translated by latex without further changes or additions. Then it + can be translated to a postscript-file with dvips. +<LI> The LaTeX-file contains only the picture itsself without + headers and trailers. It starts with \beginpicture and + ends with \endpicture. This type of file is used for + including in an other document by \include.... In this + case macros defined outside the picture can be used in text strings + in the picture. +</OL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node16.html b/support/latexdraw/doc/ltdmanual.html.e/node16.html new file mode 100644 index 0000000000..54c2d37233 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node16.html @@ -0,0 +1,36 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Internal format of the LaTeXdraw --file</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Internal format of the LaTeXdraw --file"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html206 HREF="node17.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html204 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html198 HREF="node15.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html208 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html207 HREF="node17.html"> Header</A> +<B>Up:</B> <A NAME=tex2html205 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html199 HREF="node15.html"> LaTeX-file</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00060000000000000000> Internal format of the LaTeXdraw --file</A></H1> +<P> +All versions of the LaTeXdraw --files are upward compatible. +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html209 HREF="node17.html#SECTION00061000000000000000"> Header</A> +<LI> <A NAME=tex2html210 HREF="node18.html#SECTION00062000000000000000"> Drawing objects</A> +<UL> +<LI> <A NAME=tex2html211 HREF="node19.html#SECTION00062100000000000000"> Parameters for different objects</A> +<LI> <A NAME=tex2html212 HREF="node20.html#SECTION00062200000000000000"> Common parameters</A> +</UL> +<LI> <A NAME=tex2html213 HREF="node21.html#SECTION00063000000000000000"> Structure of the groups</A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node17.html b/support/latexdraw/doc/ltdmanual.html.e/node17.html new file mode 100644 index 0000000000..8abcbd0284 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node17.html @@ -0,0 +1,61 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Header</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Header"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html222 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html220 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html214 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html224 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html223 HREF="node18.html"> Drawing objects</A> +<B>Up:</B> <A NAME=tex2html221 HREF="node16.html"> Internal format of </A> +<B> Previous:</B> <A NAME=tex2html215 HREF="node16.html"> Internal format of </A> +<BR> <HR> <P> +<H2><A NAME=SECTION00061000000000000000> Header</A></H2> +<P> +The header consists of 7 lines: +<UL><LI> line 1:<BR> Name and version of the program this file was + generated with +<LI> line 2:<BR> All coordinate values (dimensions) in the file are + given in pixels. The value given in line 2 is the size + of one pixel in mm. It is used as ''\unitlength''. The + number is followed by a comment in brackets. +<LI> line 3:<BR> The line consists of a number followed by a comment in + brackets. This line is no longer evaluated. +<LI> line 4:<BR> The line consists of a number followed by a comment in + brackets.This line is no longer evaluated. +<LI> line 5:<BR> The line consists of a number followed by a comment in + brackets.This line is no longer evaluated. +<LI> line 6:<BR> The line contains 8 numbers and a comment in brackets. + The numbers are used for generating the grid in the drawing window. +<LI> line 7:<BR> The line contains 10 numbers and a comment in + brackets. The numbers are: + <UL><LI> x and y for lower left point of picture in pixels + <LI> x and y for upper right point of picture in pixels + <LI> number of pixels in x and in y dimension (size of the picture) + <LI> maximum width and height of printed picture in mm as given as + output-option by the user. + <LI> standalone document (1), document ready to include in other + document (0) + <LI> rotate picture (0), dont rotate picture (1) + </UL> +<P> + An example of the header is: +<PRE>LaTeXdraw (Siegert, TUM, C15.06)Digi + 2.64706E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 562.400 294.750 1.000 0.000 0.000 1.000 (GITTERWERTE) +210.000 78.083 838.000 518.000 628.000 439.917 165.600 228.000 1 1 (AUSGABEOPTIONEN) +</PRE> + +</UL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node18.html b/support/latexdraw/doc/ltdmanual.html.e/node18.html new file mode 100644 index 0000000000..ac7fab3a79 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node18.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Drawing objects</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Drawing objects"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html233 HREF="node19.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html231 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html225 HREF="node17.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html235 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html234 HREF="node19.html"> Parameters for different </A> +<B>Up:</B> <A NAME=tex2html232 HREF="node16.html"> Internal format of </A> +<B> Previous:</B> <A NAME=tex2html226 HREF="node17.html"> Header</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00062000000000000000> Drawing objects</A></H2> +<P> +The drawing objects are specified after the header. For each drawing +object one line is used. Each line consists of 17 integer or floating +point values. After the last drawing object there is a line with 17 +zeroes. The numbers are separated with a blank. Some of the numbers +are redundant, e.g. the point (xb1, yb1) for arcs. All redundant +parameters are not used when inputting the file. These values are +calculated again within LaTeXdraw . Redundant parameters are not mentioned +in the description of the objects. Some parameters may not be defined +for an object. Those parameters are also not mentioned there. +<P> +The sequence of the objects defines implicitly a sequence number, +starting with 1. The sequence defines the sequence in which the +objects are painted. +<P> +The x-coordinate points to the right, the y-coordinate upwards. Angles +are in the mathematical sense (counterclockwise). All angles are given +in multiples of 0.1 degree. +<P> +The parameters of an object are (according to the their sequence in +the line):<BR> +typ, x1, y1, x2, y2, xb1, yb1, xb2, yb2, wanf, wend, liniendicke, +linienende, linientyp, lx, ly, rotwi +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html236 HREF="node19.html#SECTION00062100000000000000"> Parameters for different objects</A> +<LI> <A NAME=tex2html237 HREF="node20.html#SECTION00062200000000000000"> Common parameters</A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node19.html b/support/latexdraw/doc/ltdmanual.html.e/node19.html new file mode 100644 index 0000000000..1a5e6857f9 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node19.html @@ -0,0 +1,133 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Parameters for different objects</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Parameters for different objects"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html246 HREF="node20.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html244 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html238 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html248 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html247 HREF="node20.html"> Common parameters</A> +<B>Up:</B> <A NAME=tex2html245 HREF="node18.html"> Drawing objects</A> +<B> Previous:</B> <A NAME=tex2html239 HREF="node18.html"> Drawing objects</A> +<BR> <HR> <P> +<H3><A NAME=SECTION00062100000000000000> Parameters for different objects</A></H3> +<P> +<p><table border><TR><TD> +typ=2 <TD> Text<TR><TD> + <TD> x1,y1 <TD> reference point<TR><TD> + <TD> ly = 0 <TD> aligned left and bottom<TR><TD> + <TD> ly = 1 <TD> centered all<TR><TD> + <TD> ly = 2 <TD> aligned right and bottom<TR><TD> + <TD> ly = 3 <TD> horizontally centered, aligned bottom<TR><TD> + <TD> ly = 4 <TD> aligned left and top<TR><TD> + <TD> ly = 5 <TD> aligned right and top<TR><TD> + <TD> ly = 6 <TD> horizontally centered, aligned top<TR><TD> + <TD> ly = 7 <TD> aligned left, vertically centered<TR><TD> + <TD> ly = 8 <TD> aligned right, vertically centered<TR><TD> + <TD> linientyp <TD> number of font<TR><TD> + <TD> the following line contains the text string!<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=3 <TD> line<TR><TD> + <TD> x1,y1 <TD> first end point<TR><TD> + <TD> x2,y2 <TD> second end point<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=5 <TD> circle<TR><TD> + <TD> x1,y1 <TD> center point<TR><TD> + <TD> lx <TD> radius<TR><TD> + <TD> ly <TD> = lx<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=6 <TD> filled circle<TR><TD> + <TD> x1,y1 <TD> center point<TR><TD> + <TD> lx <TD> radius<TR><TD> + <TD> ly <TD> = lx<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=7 <TD> circular arc<TR><TD> + <TD> x1,y1 <TD> center point<TR><TD> + <TD> lx <TD> radius<TR><TD> + <TD> ly <TD> = lx<TR><TD> + <TD> wanf <TD> angle of start point (in 0.1 degrees), 0 <= wanf <= 3600<TR><TD> + <TD> wend <TD> angle of end point (in 0.1 degrees), 0 <= wend <= 3600<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=8 <TD> ellipse<TR><TD> + <TD> x1,y1 <TD> center point<TR><TD> + <TD> lx <TD> semimajor axis<TR><TD> + <TD> ly <TD> semiminor axis<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=9 <TD> filled ellipse<TR><TD> + <TD> x1,y1 <TD> center point<TR><TD> + <TD> lx <TD> semimajor axis<TR><TD> + <TD> ly <TD> semiminor axis<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=10 <TD> elliptic arc<TR><TD> + <TD> x1,y1 <TD> center point<TR><TD> + <TD> lx <TD> semimajor axis<TR><TD> + <TD> ly <TD> semiminor axis<TR><TD> + <TD> wanf <TD> angle of start point (in 0.1 degrees), 0 <= wanf <= 3600<TR><TD> + <TD> wend <TD> angle of end point (in 0.1 degrees), 0 <= wend <= 3600<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=11 <TD> filled rectangle<TR><TD> + <TD> x1,y1 <TD> first vertix<TR><TD> + <TD> xb1,yb1 <TD> second vertix<TR><TD> + <TD> x2,y2 <TD> third vertix (diagonal to the first)<TR><TD> + <TD> xb2,yb2 <TD> fourth vertix<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=12 <TD> Bezier curve<TR><TD> + <TD> x1,y1 <TD> start point<TR><TD> + <TD> xb1,yb1 <TD> point to define tangent to start point<TR><TD> + <TD> xb2,yb2 <TD> point to define tangent to end point<TR><TD> + <TD> x2,y2 <TD> end point<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=13 <TD> filled triangle<TR><TD> + <TD> x1,y1 <TD> first vertix<TR><TD> + <TD> xb1,yb1 <TD> second vertix<TR><TD> + <TD> x2,y2 <TD> third vertix<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=14 <TD> filled quadrangle<TR><TD> + <TD> x1,y1 <TD> first vertix<TR><TD> + <TD> xb1,yb1 <TD> second vertix<TR><TD> + <TD> x2,y2 <TD> third vertix (diagonal to the first)<TR><TD> + <TD> xb2,yb2 <TD> fourth vertix<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=15 <TD> filled circular arc<TR><TD> + <TD> x1,y1 <TD> center point<TR><TD> + <TD> lx <TD> radius<TR><TD> + <TD> ly <TD> = lx<TR><TD> + <TD> wanf <TD> angle of start point (in 0.1 degrees), 0 <= wanf <= 3600<TR><TD> + <TD> wend <TD> angle of end point (in 0.1 degrees), 0 <= wend <= 3600<TR><TD> +</table><BR> +<p><table border><TR><TD> +typ=16 <TD> filled elliptic arc<TR><TD> + <TD> x1,y1 <TD> center point<TR><TD> + <TD> lx <TD> semimajor axis<TR><TD> + <TD> ly <TD> semiminor axis<TR><TD> + <TD> wanf <TD> angle of start point (in 0.1 degrees), 0 <= wanf <= 3600<TR><TD> + <TD> wend <TD> angle of end point (in 0.1 degrees), 0 <= wend <= 3600<TR><TD> +</table><BR> +<P> +<BR> <HR><A NAME=tex2html246 HREF="node20.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html244 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html238 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html248 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html247 HREF="node20.html"> Common parameters</A> +<B>Up:</B> <A NAME=tex2html245 HREF="node18.html"> Drawing objects</A> +<B> Previous:</B> <A NAME=tex2html239 HREF="node18.html"> Drawing objects</A> +<BR> <HR> <P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node2.html b/support/latexdraw/doc/ltdmanual.html.e/node2.html new file mode 100644 index 0000000000..f391dfb965 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node2.html @@ -0,0 +1,36 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Style files</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Style files"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html48 HREF="node3.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html46 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html40 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html50 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html49 HREF="node3.html"> Fonts</A> +<B>Up:</B> <A NAME=tex2html47 HREF="node1.html"> Environment</A> +<B> Previous:</B> <A NAME=tex2html41 HREF="node1.html"> Environment</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00011000000000000000> Style files</A></H2> +<P> +LaTeXdraw uses UNIX and X-Windows. For translating a LaTeX-source +document with pictures the style file latexdraw.sty must be included. +This style file uses the package pstricks.tex (a standard package for +LaTeX). For printing and previewing the DVI-file generated by latex or +slitex is not suitable. You must translate the DVI-file to a +Postscript-file by the program dvips. +<P> +Example:<BR> Assuming a LaTeX-document with the file name myfile.tex, +the following commands do the job:<BR> latex myfile.tex<BR> dvips +myfile.dvi<BR> The headline of myfile.tex could be <BR> +\documentstyle[latexdraw]{article}<BR> +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node20.html b/support/latexdraw/doc/ltdmanual.html.e/node20.html new file mode 100644 index 0000000000..f4cff46c77 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node20.html @@ -0,0 +1,47 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Common parameters</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Common parameters"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html255 HREF="node21.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html253 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html249 HREF="node19.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html257 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html256 HREF="node21.html"> Structure of the </A> +<B>Up:</B> <A NAME=tex2html254 HREF="node18.html"> Drawing objects</A> +<B> Previous:</B> <A NAME=tex2html250 HREF="node19.html"> Parameters for different </A> +<BR> <HR> <P> +<H3><A NAME=SECTION00062200000000000000> Common parameters</A></H3> +<P> +<p><table border><TR><TD> +liniendicke<TD>= <TD> 100 * colornumber + linewidth<TR><TD> +<P> +linienende <TD>=<TD> 0 <TD> line end butt<TR><TD> +linienende <TD>=<TD> 1 <TD> arrow at first point<TR><TD> +linienende <TD>=<TD> 2 <TD> arrow at second point<TR><TD> +linienende <TD>=<TD> 3 <TD> arrow at both ends<TR><TD> +linienende <TD>=<TD> 4 <TD> line protruding<TR><TD> +<P> +linientyp <TD>=<TD> 1 <TD> solid line<TR><TD> +linientyp <TD>=<TD> 2 <TD> dotted line<TR><TD> +linientyp <TD>=<TD> 3 <TD> dotted line<TR><TD> +linientyp <TD>=<TD> 5 <TD> dashed line<TR><TD> +linientyp <TD>=<TD> 7 <TD> dashed-dotted line<TR><TD> +</table> +<BR> +<P> +The rotation of ellipses or elliptic arcs is given by 'rotwi'. It is +the angle in 0.1 degrees from the positive x-axis to the major axis. +<P> +The rotation of texts is given by 'rotwi', the angle between the +positive x-axis and the baseline of the text. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node21.html b/support/latexdraw/doc/ltdmanual.html.e/node21.html new file mode 100644 index 0000000000..edd9f00c1e --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node21.html @@ -0,0 +1,47 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Structure of the groups</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Structure of the groups"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html264 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html262 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html258 HREF="node20.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html266 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html265 HREF="node22.html">Contents</A> +<B>Up:</B> <A NAME=tex2html263 HREF="node16.html"> Internal format of </A> +<B> Previous:</B> <A NAME=tex2html259 HREF="node20.html"> Common parameters</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00063000000000000000> Structure of the groups</A></H2> +<P> +The group structure is stored after the drawing objects. There are two +parts: +<UL><LI> Part 1: Definition which drawing object belongs to which group<BR> + For each group which has at least one drawing object as a direct + member and not only other groups the following blank separated list + is given: The number of the group followed by the sequence numbers + of the drawing objects which are direct members. This list ends with + a zero. The sequence number of a drawing object is given by the list + of drawing objects. +<P> + Each drawing object can be a direct member of only one group. A + drawing object which is not member of a group is not listed. +<P> + Part 1 is concluded with a zero. +<P> +<LI> Part 2: Definition of the group hierarchy.<BR> +This part is a blank separated list of pairs of numbers concluded with +two zeros. Each pair gives a groupnumber and the number of the parent +group. Groups which do not have a parent group are not listed. +</UL> +<P> +<BR> +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node22.html b/support/latexdraw/doc/ltdmanual.html.e/node22.html new file mode 100644 index 0000000000..86c6d5460a --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node22.html @@ -0,0 +1,55 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE>Contents</TITLE> +</HEAD> +<BODY> +<meta name="description" value="Contents"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html275 HREF="node23.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html273 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html267 HREF="node21.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html276 HREF="node23.html"> About this document </A> +<B>Up:</B> <A NAME=tex2html274 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html268 HREF="node21.html"> Structure of the </A> +<BR> <HR> <P> +<P><H2><A NAME=SECTION00070000000000000000>Contents</A></H2> +<UL> +<LI> <A NAME=tex2html277 HREF="node1.html#SECTION00010000000000000000"> Environment</A> +<UL> +<LI> <A NAME=tex2html278 HREF="node2.html#SECTION00011000000000000000"> Style files</A> +<LI> <A NAME=tex2html279 HREF="node3.html#SECTION00012000000000000000"> Fonts</A> +</UL> +<LI> <A NAME=tex2html280 HREF="node4.html#SECTION00020000000000000000"> User interface</A> +<UL> +<LI> <A NAME=tex2html281 HREF="node5.html#SECTION00021000000000000000"> Cursor</A> +<LI> <A NAME=tex2html282 HREF="node6.html#SECTION00022000000000000000"> Files</A> +<LI> <A NAME=tex2html283 HREF="node7.html#SECTION00023000000000000000"> LaTeXdraw -Window</A> +<LI> <A NAME=tex2html284 HREF="node8.html#SECTION00024000000000000000"> Command options</A> +<LI> <A NAME=tex2html285 HREF="node9.html#SECTION00025000000000000000"> Mouse buttons</A> +<LI> <A NAME=tex2html286 HREF="node10.html#SECTION00026000000000000000"> Object groups</A> +<LI> <A NAME=tex2html287 HREF="node11.html#SECTION00027000000000000000"> Selection of menue items</A> +<LI> <A NAME=tex2html288 HREF="node12.html#SECTION00028000000000000000"> Error messages</A> +</UL> +<LI> <A NAME=tex2html289 HREF="node13.html#SECTION00030000000000000000"> Description of the menue items</A> +<LI> <A NAME=tex2html290 HREF="node14.html#SECTION00040000000000000000"> LaTeXdraw --file</A> +<LI> <A NAME=tex2html291 HREF="node15.html#SECTION00050000000000000000"> LaTeX-file</A> +<LI> <A NAME=tex2html292 HREF="node16.html#SECTION00060000000000000000"> Internal format of the LaTeXdraw --file</A> +<UL> +<LI> <A NAME=tex2html293 HREF="node17.html#SECTION00061000000000000000"> Header</A> +<LI> <A NAME=tex2html294 HREF="node18.html#SECTION00062000000000000000"> Drawing objects</A> +<UL> +<LI> <A NAME=tex2html295 HREF="node19.html#SECTION00062100000000000000"> Parameters for different objects</A> +<LI> <A NAME=tex2html296 HREF="node20.html#SECTION00062200000000000000"> Common parameters</A> +</UL> +<LI> <A NAME=tex2html297 HREF="node21.html#SECTION00063000000000000000"> Structure of the groups</A> +</UL> +<LI> <A NAME=tex2html298 HREF="node23.html#SECTION00080000000000000000"> About this document ... </A> +</UL> + <BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node23.html b/support/latexdraw/doc/ltdmanual.html.e/node23.html new file mode 100644 index 0000000000..b74dd72da1 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node23.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> About this document ... </TITLE> +</HEAD> +<BODY> +<meta name="description" value=" About this document ... "> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif_gr.gif"> <A NAME=tex2html303 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html299 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html305 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B>Up:</B> <A NAME=tex2html304 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html300 HREF="node22.html">Contents</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00080000000000000000> About this document ... </A></H1> +<P> + <STRONG></STRONG><P> +This document was generated using the <A HREF="http://cbl.leeds.ac.uk/nikos/tex2html/doc/latex2html/latex2html.html"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 95 (Thu Jan 19 1995) Copyright © 1993, 1994, <A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>, Computer Based Learning Unit, University of Leeds. <P> The command line arguments were: <BR> +<STRONG>latex2html</STRONG> <tt>ltdmanual.e.tex</tt>. <P>The translation was initiated by Hans-J. Siegert on Sat Jul 5 19:31:53 MEST 1997<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node3.html b/support/latexdraw/doc/ltdmanual.html.e/node3.html new file mode 100644 index 0000000000..313964f9b5 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node3.html @@ -0,0 +1,57 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Fonts</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Fonts"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html57 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html55 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html51 HREF="node2.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html59 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html58 HREF="node4.html"> User interface</A> +<B>Up:</B> <A NAME=tex2html56 HREF="node1.html"> Environment</A> +<B> Previous:</B> <A NAME=tex2html52 HREF="node2.html"> Style files</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00012000000000000000> Fonts</A></H2> +<P> +The fonts used by LaTeXdraw in its output file are 6, 8, 10, 12, 14, and +18 point Roman fonts in normal, bold and italics. If no font is +defined, the font defined in the environment of the picture is used. +All fonts can be redefined either in latexdraw.sty or later in the +LaTeX-document. +<P> +Fonts used for the screen display are (* is wild card):<BR> +-* -times-medium-r-* -* -8-* <BR> +-* -times-medium-r-* -* -10-* <BR> +-* -times-medium-r-* -* -14-* <BR> +-* -times-medium-r-* -* -17-* <BR> +-* -times-medium-r-* -* -20-* <BR> +-* -times-medium-r-* -* -24-* <BR> +-* -times-bold-r-* -* -8-* <BR> +-* -times-bold-r-* -* -10-* <BR> +-* -times-bold-r-* -* -14-* <BR> +-* -times-bold-r-* -* -17-* <BR> +-* -times-bold-r-* -* -20-* <BR> +-* -times-bold-r-* -* -24-* <BR> +-* -times-medium-i-* -* -8-* <BR> +-* -times-medium-i-* -* -10-* <BR> +-* -times-medium-i-* -* -14-* <BR> +-* -times-medium-i-* -* -17-* <BR> +-* -times-medium-i-* -* -20-* <BR> +-* -times-medium-i-* -* -24-* <BR> +8x13<BR> +8x13bold<BR> +<P> +These fonts should be available in your system. If pathnames are not +right, they can be modified by xset fp < comma separated list of +pathnames >. If a font is not available LaTeXdraw uses a 8x13-font<BR> + -* -times-medium-r-* -* -17-* +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node4.html b/support/latexdraw/doc/ltdmanual.html.e/node4.html new file mode 100644 index 0000000000..d8f82c2254 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node4.html @@ -0,0 +1,35 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> User interface</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" User interface"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html68 HREF="node5.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html66 HREF="ltdmanual.e.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html60 HREF="node3.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html70 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html69 HREF="node5.html"> Cursor</A> +<B>Up:</B> <A NAME=tex2html67 HREF="ltdmanual.e.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html61 HREF="node3.html"> Fonts</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00020000000000000000> User interface</A></H1> +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html71 HREF="node5.html#SECTION00021000000000000000"> Cursor</A> +<LI> <A NAME=tex2html72 HREF="node6.html#SECTION00022000000000000000"> Files</A> +<LI> <A NAME=tex2html73 HREF="node7.html#SECTION00023000000000000000"> LaTeXdraw -Window</A> +<LI> <A NAME=tex2html74 HREF="node8.html#SECTION00024000000000000000"> Command options</A> +<LI> <A NAME=tex2html75 HREF="node9.html#SECTION00025000000000000000"> Mouse buttons</A> +<LI> <A NAME=tex2html76 HREF="node10.html#SECTION00026000000000000000"> Object groups</A> +<LI> <A NAME=tex2html77 HREF="node11.html#SECTION00027000000000000000"> Selection of menue items</A> +<LI> <A NAME=tex2html78 HREF="node12.html#SECTION00028000000000000000"> Error messages</A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node5.html b/support/latexdraw/doc/ltdmanual.html.e/node5.html new file mode 100644 index 0000000000..d32e603db5 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node5.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Cursor</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Cursor"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html87 HREF="node6.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html85 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html79 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html89 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html88 HREF="node6.html"> Files</A> +<B>Up:</B> <A NAME=tex2html86 HREF="node4.html"> User interface</A> +<B> Previous:</B> <A NAME=tex2html80 HREF="node4.html"> User interface</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00021000000000000000> Cursor</A></H2> +<P> +Three different shapes of the cursor are used: +<UL><LI> Keyboard input expected (square with point); +<LI> Click with mouse button expected (arrow); +<LI> LaTeXdraw is busy (heart). +</UL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node6.html b/support/latexdraw/doc/ltdmanual.html.e/node6.html new file mode 100644 index 0000000000..a3a9e5b8f0 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node6.html @@ -0,0 +1,40 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Files</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Files"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html98 HREF="node7.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html96 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html90 HREF="node5.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html100 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html99 HREF="node7.html"> LaTeXdraw -Window</A> +<B>Up:</B> <A NAME=tex2html97 HREF="node4.html"> User interface</A> +<B> Previous:</B> <A NAME=tex2html91 HREF="node5.html"> Cursor</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00022000000000000000> Files</A></H2> +<P> +LaTeXdraw generates two different output files: +<UL><LI> the LaTeXdraw --file<BR> The LaTeXdraw -file saves the picture in an + internal format. This file can be read and modified by LaTeXdraw again. + Use it to save the final version of your picture and intermediate + states. +<LI> the LaTeX--file<BR> The LaTeX--file is the output file with the + generated latex source code for the picture. When saving a picture + you can choose one of two versions: + <UL><LI> The file is a full latex document with all headers and + trailers. It can be translated with latex and dvips immediately. + <LI> The file is a latex document containing only the picture. It + can be included in other latex-documents without changes, e.g. + by<BR> \input{<filename>} + </UL></UL> +All files are ASCII-files and can easily be modified, if necessary. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node7.html b/support/latexdraw/doc/ltdmanual.html.e/node7.html new file mode 100644 index 0000000000..f8e5c8c0f5 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node7.html @@ -0,0 +1,36 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> LaTeXdraw -Window</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" LaTeXdraw -Window"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html109 HREF="node8.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html107 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html101 HREF="node6.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html111 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html110 HREF="node8.html"> Command options</A> +<B>Up:</B> <A NAME=tex2html108 HREF="node4.html"> User interface</A> +<B> Previous:</B> <A NAME=tex2html102 HREF="node6.html"> Files</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00023000000000000000> LaTeXdraw -Window</A></H2> +<P> +The LaTeXdraw window allows fast drawing. Therefore all drawing options +are always displayed and there are no pull down menues. The LaTeXdraw +window consists of the following regions: +<UL><LI> A special menue for direct selection of colors and fonts; +<LI> the menue with drawing options and basic drawing elements, also + called objects; +<LI> the prompt line showing the next action expected or the current + keyboard input; +<LI> the drawing area, with the picture<BR> The area can be scrolled + with the arrow keys of the keyboard. The size can be changed by + changing the size of the window. The initial size corresponds + roughly to paper format A4. +</UL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node8.html b/support/latexdraw/doc/ltdmanual.html.e/node8.html new file mode 100644 index 0000000000..8b0a543a3e --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node8.html @@ -0,0 +1,50 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Command options</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Command options"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html120 HREF="node9.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html118 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html112 HREF="node7.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html122 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html121 HREF="node9.html"> Mouse buttons</A> +<B>Up:</B> <A NAME=tex2html119 HREF="node4.html"> User interface</A> +<B> Previous:</B> <A NAME=tex2html113 HREF="node7.html"> LaTeXdraw -Window</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00024000000000000000> Command options</A></H2> +<P> +All command options are optional. LaTeXdraw knows the following command +options:<BR> +<UL><LI> -q or -l: the orientation of the drawing area is landscape (this + does not influence the output files!) +<LI> -t: If LaTeXdraw was generated with the digitizer option (see + makefile) then the digitizer tablet is enabled +<LI> The default header line used for the LaTeX-file is:<BR> + ''\documentstyle[latexdraw]{article}'' +<LI> -2e sets the header line to:<BR> + ''\documentclass{article}\input{latexdraw.sty}'' +<LI> -d followed by a string x sets the header line to x.<BR> + Example:<BR> latexdraw -l -d + '\[latexdraw]{report}\pagestyle{empty}' +<P> + sets orientation to landscape, uses the documentstyle report, and + the pagestyle is empty. +<LI> -f followed by a font name defines the font used for the menue, + e.g. -f 8x13bold. +<LI> The size of the drawing area can be adjusted by the user at any + time by changing the size of the window. The command option -s + followed by pixelwidthxpixelheight defines the initial size of the + drawing area. +<LI> -io myfile1 myfile2<BR> In this case LaTeXdraw is not started for + drawing but only for file generation. The input file myfile1 is a + LaTeXdraw --file. It is used to generate the output file myfile2, which + is a LaTeX--file. +</UL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.e/node9.html b/support/latexdraw/doc/ltdmanual.html.e/node9.html new file mode 100644 index 0000000000..9f20a70af9 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.e/node9.html @@ -0,0 +1,42 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Mouse buttons</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Mouse buttons"> +<meta name="keywords" value="ltdmanual.e"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html131 HREF="node10.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html129 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html123 HREF="node8.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <A NAME=tex2html133 HREF="node22.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//contents_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html132 HREF="node10.html"> Object groups</A> +<B>Up:</B> <A NAME=tex2html130 HREF="node4.html"> User interface</A> +<B> Previous:</B> <A NAME=tex2html124 HREF="node8.html"> Command options</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00025000000000000000> Mouse buttons</A></H2> +<P> +Usually you use the left mouse button to select a menue item, to click +on a point or to define a selection rectangle by dragging. If you +click on a menue item which represents a value, the left mouse button +counts upwards and the right mouse button counts downwards. +<P> +If the menue item ''snap'' is active, the selected point in the +drawing area is the nearest hot point of a drawing object or of the +grid, if those are within a certain distance. If ''mp'' is active, the +selected point is the middle point of the selected drawing object. +<P> +Often you want to draw horizontal or vertical lines, which do not +follow grid lines. This is supported by the following mechanism. +Suppose the point last selected is (xlast,ylast). Now you click on the +point (x,y) and drag the mouse with button 1 pressed to the point +(xe,ye). First the snap point (xsnap, ysnap) is calculated from (x,y). +If |x-xe|>|y-ye| then the point used for further processing is +(xlast,ysnap) otherwise (xsnap,ylast). +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:31:53 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/index.html b/support/latexdraw/doc/ltdmanual.html.g/index.html new file mode 100644 index 0000000000..ed9b8c1b2c --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/index.html @@ -0,0 +1,62 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE>No Title</TITLE> +</HEAD> +<BODY> +<meta name="description" value="No Title"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html1 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif_gr.gif"> <IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif_gr.gif"> <BR> +<B> Next:</B> <A NAME=tex2html2 HREF="node1.html"> Umgebung</A> +<BR> <HR> <P> +<P> +<H3><b> Kurzanleitung LaTeXdraw ab C15.04<BR> +</H3></b> +<P> +(Siegert, 17.08.1996) +<b> +Die Version ist aufwärtskompatibel mit allen älteren +Versionen, die unter X-Window ablaufen. Ab Version 14.04 ist es +möglich, ein Digitalisiertablett anzuschließen. Beschreibung dazu +getrennt. +</b> +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html3 HREF="node1.html#SECTION00010000000000000000"> Umgebung</A> +<UL> +<LI> <A NAME=tex2html4 HREF="node2.html#SECTION00011000000000000000"> Stil-Dateien</A> +<LI> <A NAME=tex2html5 HREF="node3.html#SECTION00012000000000000000"> Zeichensätze</A> +</UL> +<LI> <A NAME=tex2html6 HREF="node4.html#SECTION00020000000000000000"> Benutzerschnittstelle</A> +<UL> +<LI> <A NAME=tex2html7 HREF="node5.html#SECTION00021000000000000000"> Cursor</A> +<LI> <A NAME=tex2html8 HREF="node6.html#SECTION00022000000000000000"> Dateien</A> +<LI> <A NAME=tex2html9 HREF="node7.html#SECTION00023000000000000000"> Fenster</A> +<LI> <A NAME=tex2html10 HREF="node8.html#SECTION00024000000000000000"> Aufrufparameter</A> +<LI> <A NAME=tex2html11 HREF="node9.html#SECTION00025000000000000000"> Maustasten</A> +<LI> <A NAME=tex2html12 HREF="node10.html#SECTION00026000000000000000"> Gruppen von Objekten</A> +<LI> <A NAME=tex2html13 HREF="node11.html#SECTION00027000000000000000"> Anklicken von Menuefeldern</A> +<LI> <A NAME=tex2html14 HREF="node12.html#SECTION00028000000000000000"> Fehlermeldungen</A> +</UL> +<LI> <A NAME=tex2html15 HREF="node13.html#SECTION00030000000000000000"> Bedeutung der Menuefelder</A> +<LI> <A NAME=tex2html16 HREF="node14.html#SECTION00040000000000000000"> Zur LaTeXdraw--Datei</A> +<LI> <A NAME=tex2html17 HREF="node15.html#SECTION00050000000000000000"> Zur LaTeX-Datei</A> +<LI> <A NAME=tex2html18 HREF="node16.html#SECTION00060000000000000000"> Internes Format der LaTeXdraw--Datei</A> +<UL> +<LI> <A NAME=tex2html19 HREF="node17.html#SECTION00061000000000000000"> Aufbau</A> +<LI> <A NAME=tex2html20 HREF="node18.html#SECTION00062000000000000000"> Reihenfolge der Parameter je Zeichnungselement</A> +<LI> <A NAME=tex2html21 HREF="node19.html#SECTION00063000000000000000"> Bedeutung der Zeichnungselemente</A> +<LI> <A NAME=tex2html22 HREF="node20.html#SECTION00064000000000000000"> Bedeutung sonstiger Parameter</A> +</UL> +<LI> <A NAME=tex2html23 HREF="node21.html#SECTION00070000000000000000"> About this document ... </A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node1.html b/support/latexdraw/doc/ltdmanual.html.g/node1.html new file mode 100644 index 0000000000..f91e601c27 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node1.html @@ -0,0 +1,29 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Umgebung</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Umgebung"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html32 HREF="node2.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html30 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html24 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html33 HREF="node2.html"> Stil-Dateien</A> +<B>Up:</B> <A NAME=tex2html31 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html25 HREF="ltdmanual.g.html">No Title</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00010000000000000000> Umgebung</A></H1> +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html34 HREF="node2.html#SECTION00011000000000000000"> Stil-Dateien</A> +<LI> <A NAME=tex2html35 HREF="node3.html#SECTION00012000000000000000"> Zeichensätze</A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node10.html b/support/latexdraw/doc/ltdmanual.html.g/node10.html new file mode 100644 index 0000000000..6b85d0b2c5 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node10.html @@ -0,0 +1,50 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Gruppen von Objekten</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Gruppen von Objekten"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html130 HREF="node11.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html128 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html122 HREF="node9.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html131 HREF="node11.html"> Anklicken von Menuefeldern</A> +<B>Up:</B> <A NAME=tex2html129 HREF="node4.html"> Benutzerschnittstelle</A> +<B> Previous:</B> <A NAME=tex2html123 HREF="node9.html"> Maustasten</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00026000000000000000> Gruppen von Objekten</A></H2> +<P> + Zeichnungselemente können zu Gruppen zusammengefaßt werden. + Diese können wiederum mit anderen Zeichnungselementen und oder + Gruppen zu neuen Gruppen zusammengefaßt werden. Die + Gruppenstruktur kann auch wieder abgebaut werden. +<P> + Ist der Gruppenmodus ausgeschaltet, dann hat die vorhandene + Gruppenstruktur keinen Einfluß auf die Auswahl der Elemente. + Ausgewählt ist dann das angeklickte Element oder alle in einem + Auswahlfenster befindliche Zeichnungselemente, unabhängig von ihrer + Gruppenzugehörigkeit. +<P> + Ist der Gruppenmodus eingeschaltet dann beeinflußt die + Gruppenstruktur die Auswahl der Elemente. Eine Ausnahme sind die + Fälle, in denen aufgrund des Kontextes nur ein Einzelelement + angegeben werden kann. Hier gilt das angeklickte Zeichnungselement. + In allen anderen Fällen gilt: + <UL><LI> Wird ein Element angeklickt, dann sind alle Elemente + ausgewählt, die zu der umfassendsten Gruppe des angeklickten + Elements gehören. Falls das angeklickte Element zu keiner Gruppe + gehört, dann ist nur dieses Element ausgewählt. + <LI> Wird ein Auswahlrechteck aufgezogen, dann sind alle Elemente, + die keiner Gruppe angehören und im Auswahlrechteck sind + ausgewählt. Darüberhinaus sind alle Elemente ausgewählt, deren + umfassendste Gruppe vollständig im Auswahlrechteck liegt. Dies + ist der Fall, wenn alle Elemente, die zu der umfassendsten Gruppe + gehören, auch im Auswahlrechteck liegen. + </UL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node11.html b/support/latexdraw/doc/ltdmanual.html.g/node11.html new file mode 100644 index 0000000000..4393fc3ebf --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node11.html @@ -0,0 +1,38 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Anklicken von Menuefeldern</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Anklicken von Menuefeldern"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html140 HREF="node12.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html138 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html132 HREF="node10.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html141 HREF="node12.html"> Fehlermeldungen</A> +<B>Up:</B> <A NAME=tex2html139 HREF="node4.html"> Benutzerschnittstelle</A> +<B> Previous:</B> <A NAME=tex2html133 HREF="node10.html"> Gruppen von Objekten</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00027000000000000000> Anklicken von Menuefeldern</A></H2> +<P> + Aktive Menuefelder werden invertiert dargestellt. Menuefelder, die + Optionen darstellen, werden durch erneutes Anklicken deaktiviert. + Alle Menuefelder, die mit einem aktivierten Menuefeld im Widerspruch + sind, werden automatisch deaktiviert. +<P> + Ein Anklicken eines Menuefeldes ist jederzeit möglich, auch + während der Texteingabe. Die laufende Aktion wird gegebenenfalls + modifiziert oder abgebrochen. Bei Texteingabe führt eine leere + Zeichenreihe im Normalfall zum Abbruch der aktuellen Aktion. Die + Promptzeile zeigt die jeweils erwartete Aktion an. Menuefelder, die + Details einer Aktion spezifizieren, werden erst zum spätest + möglichen Zeitpunkt abgefragt. Eine nachfolgende Änderung wird + dann für die laufende Aktion nicht mehr berücksichtigt. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node12.html b/support/latexdraw/doc/ltdmanual.html.g/node12.html new file mode 100644 index 0000000000..e8ec869c6f --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node12.html @@ -0,0 +1,27 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Fehlermeldungen</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Fehlermeldungen"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html148 HREF="node13.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html146 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html142 HREF="node11.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html149 HREF="node13.html"> Bedeutung der Menuefelder</A> +<B>Up:</B> <A NAME=tex2html147 HREF="node4.html"> Benutzerschnittstelle</A> +<B> Previous:</B> <A NAME=tex2html143 HREF="node11.html"> Anklicken von Menuefeldern</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00028000000000000000> Fehlermeldungen</A></H2> +<P> + Auftretende Fehler und alle Ein- oder Ausgaben in Dateien werden im + Vaterfenster protokolliert. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node13.html b/support/latexdraw/doc/ltdmanual.html.g/node13.html new file mode 100644 index 0000000000..caa6b58f85 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node13.html @@ -0,0 +1,751 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Bedeutung der Menuefelder</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Bedeutung der Menuefelder"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html158 HREF="node14.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html156 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html150 HREF="node12.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html159 HREF="node14.html"> Zur LaTeXdraw--Datei</A> +<B>Up:</B> <A NAME=tex2html157 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html151 HREF="node12.html"> Fehlermeldungen</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00030000000000000000> Bedeutung der Menuefelder</A></H1> +<P> +<OL><LI> Menuefeld 'quit'<BR> + Die Zeichnung ist beendet. Es wird der Name einer Ausgabedatei + verlangt. Ist der Name der Ausgabedatei leer, dann erfolgt keine + Ausgabe der Zeichnung. Das Fenster wird geschlossen. +<P> +<LI> Menuefeld 'load'<BR> + Es wird der Namen einer LaTeXdraw--Eingabedatei verlangt. Eine + zulässige Eingabedatei wird durch 'save' oder am Ende einer + Zeichnung erzeugt. Wird die leere Zeichenreihe eingegeben oder + existiert die Datei nicht, dann wird eine leere Zeichnung begonnen. +<P> +<LI> 'save'<BR> + Es wird der momentane Stand der Zeichnung abgespeichert. Es wird + dazu der Name einer LaTeXdraw--Datei verlangt. Falls der Name der + Datei leer ist, erfolgt keine Ausgabe. Nach dem Abspeichern kann + sofort weiter gezeichnet werden. Die Ausgabedatei kann später + wieder als Eingabedatei verwendet werden. +<P> + Anschließend wird der Name einer LaTeX--Datei verlangt. Ist der + Name leer, dann wird keine LaTeX--Datei erzeugt. Soll eine + LaTeX--Datei erzeugt werden, dann wird gefragt, ob die + Ausgabeoptionen gegenüber der letzten Einstellung für diese + Zeichnung geändert werden sollen. Wenn ja wird die letzte + Einstellung übernommen. Wenn nein werden die neuen Ausgabeoptionen + abgefragt: + <UL><LI> Soll die Ausgabe mit oder ohne Vorspann erfolgen? Mit Vorspann + ist die Datei eine vollständige LaTeX-Quelle. Ohne Vorspann kann + die Datei direkt in andere Dokumente eingebunden werden, falls am + Anfang dieser Dokumente einmal der Vorspann enthalten ist. + <LI> Die maximale Breite und Höhe der LaTeX-Zeichnung in mm. + <LI> Die Lage auf dem Papier (um 90 Grad gedreht oder nicht). + </UL> + Die aktuellen Ausgabeoptionen sind bei neuen Zeichnungen + voreingestellt. Sie werden beim Laden einer Zeichnungsdatei + aktualisiert und bei ''save'' auch in der LaTeXdraw--Datei + abgespeichert. +<P> + Anmerkung:<BR> Breite und Höhe sind immer bezogen auf die nicht + gedrehte Darstellung. Bei gedrehtem Ausdruck kann also die Breite + der Zeichnung die Höhe einer DIN A4-Seite erreichen! Die Breite + und die Höhe werden zur Berechnung des Skalierungsfaktors + '\unitlength' für die LaTeX-Ausgabe verwendet. Die + Skalierung erfolgt so, daß die Zeichnung eine der beiden + angegebenen Dimensionen voll ausfüllt. Linienstärken und + Textgrößen werden nicht skaliert, da diese Werte unabhängig + von der genauen Größe der Zeichnung sein müssen. +<P> +<LI> Menuefeld 'text'<BR> + Es wird eine Position, die Bezugsposition des Textes, angeklickt. + Anschließend wird ein Text über die Tastatur eingegeben. Der + Text wird in der Promptzeile angezeigt und kann dort auch korrigiert + werden. Steht an der angeklickten Position bereits ein Text, dann + wird dieser zur Korrektur in die Promptzeile übernommen. Der + verwendete Font wird im Font--Feld (im Feld neben 'text') angezeigt. + Die Texteingabe wird mit 'RETURN' abgeschlossen. Der Text kann + maximal etwa 110 Zeichen umfassen. Ein leerer Text (nur RETURN) wird + nicht gespeichert. Der für den Text verwendete Font ist derjenige + Font, der zum Zeitpunkt von RETURN angezeigt ist. +<P> + Die Korrektur erfolgt mit den Tasten DELETE, BACKSPACE oder wie bei + emacs mit den Tasten a, d, e und k bei gleichzeitig gedrückter + Taste CONTROL. +<P> + Im Font--Feld neben 'text' wird der Zeichenfont angezeigt. Durch + anklicken des Feldes werden die zulässigen Werte zyklisch + angezeigt. Bei Drücken der Taste 1 bzw. 3 wird vorwärts bzw. + rückwärts weitergeschaltet. +<P> + Alternativ kann ab Version 9.x der Zeichenfont auch im Sondermenue + direkt angeklickt werden. +<P> + Bei leerem Font--Feld wird kein Formatmakro vor den Text in der + LaTeX-Datei gesetzt. Damit kann der Font bzw. seine Größe durch + die üblichen LaTeX-Makros in der Umgebung definiert werden. Die + Darstellung der Zeichen entspricht so der Fontart und der + Größe, die auch in dem Dokument verwendet wird, in das die + Zeichnung eingebettet wird. Ist das Feld nicht leer, dann wird ein + Formatmakro vor den Text in der LaTeX-Datei gesetzt. Die + Zeichengröße ist in Punkten beim Druck angegeben, + beispielsweise bedeutet 17bpt, daß mit den Standardeinstellungen + für die Formatmakros der Text fett mit 17 Punkten gedruckt wird. + Für die Formatmakros gilt folgendes Bildungsgesetz: +<P> + \F<Anzeige> +<P> + hierbei ist <Anzeige> die Anzeige im Menue, wobei die Zahlenwerte + in großen Römischen Ziffern angegeben werden. +<P> + Beispiel: Die Anzeige im Menue sei 12bpt dann heißt das Formatmakro + FXIIbpt. +<P> + Die Formatmakros sind in latexdraw.sty definiert. Sie können dort + oder im Dokument, in das die Zeichnung eingebettet wird, redefiniert + werden. Dies ist neben der Verwendung von Makros auch der Grund, + warum eine Skalierung der Schriften bei der Skalierung der Zeichnung + sinnlos ist. +<P> + Der Text wird immer gemäß den Einstellungen 'l, r, t, + b' im Menuefeld relativ zu der angegebenen Bezugsposition + positioniert. Die Bezugsposition wird in LaTeX verwendet und auf dem + Bildschirm markiert. Wird die Bezugsposition (mit einrasten!) eines + vorhandenen Textes angeklickt, dann wird dieser Text in die + Promptzeile übernommen und kann korrigiert werden. Die Lage des + Textes bezüglich des Bezugspunktes wird dabei grundsätzlich + gemäß den momentanen Einstellungen im Menuefeld neu bestimmt. +<P> + Die Bedeutung der Positionierangaben 'l, r, t, b' + entspricht der Positionierung einer Box in LaTeX: + <UL><LI> 'l': Text linksbündig ab Bezugspunkt; + <LI> 'r': Text rechtsbündig am Bezugspunkt; + <LI> weder 'l' noch 'r': Text bezüglich der Textlänge + zentriert um Bezugspunkt; + <LI> 'b': Textunterkante am Bezugspunkt; + <LI> 't': Textoberkante durch Bezugspunkt; + <LI> weder 'b' noch 't': Text bezüglich der Texthöhe + zentriert um Bezugspunkt. + </UL> +<P> + Ist das Menuefeld '||' aktiviert, dann wird der Text + gedreht. Die Drehung wird durch anklicken einer Referenzstrecke + definiert. Der Text wird dann parallel zu dieser Referenzstrecke + ausgerichtet. Da X-Windows Texte nicht drehen kann, wird der Text + immer horizontal ausgedruckt, aber seine Lage durch eine + strichpunktierte Strecke durch den Bezugspunkt markiert. +<P> + Da die Zeichnungen in eine LaTeX-Umgebung eingebettet werden, + dürfen in den Texten beliebige Makros, die in der Umgebung der + Zeichnung definiert sind, auftreten. Die Texte stehen in einem put + einer picture-Umgebung und dürfen daher alle in LaTeX dort + zulässigen Elemente definieren. +<P> +<LI> Menuefeld 'line'<BR> + Es wird eine Strecke gezeichnet. Meistens muß der Anfangs- und + Endpunkt angeklickt werden. Die Bedeutung des angeklickten + Punktes hängt hier, wie grundsätzlich bei allen Punkteingaben, + vom Zusand des feldes 'mp' ab. Das genaue Vorgehen ist auch vom + Zustand der Felder '||' und '|-' abhängig. +<P> + Der Linientyp wird durch die Felder ' _ ' und ' . ' definiert. + Ist keines dieser beiden Felder aktiviert, dann wird eine + durchgezogene Linie gezeichnet. Die Pfeilfelder 'b>' und 'e>' + definieren, ob am Anfang und/oder am Ende der Linie ein Pfeil + gezeichnet wird. Strecken, die eine minimale Länge + unterschreiten, werden nicht gezeichnet. Sind die Pfeilfelder nicht + aktiviert, aber das Feld '|]', dann werden bei durchgezogenen Linien + die Linienenden um die halbe Linienstärke verlängert. +<P> + Die Linienstärke wird als Zahl in dem Menuefeld '=' angezeigt. + Die Zahl folgt auf das Gleichheitszeichen und gibt in etwa die + Linienbreite in Punkten beim Druck an. Durch Anklicken des + Menuefeldes '=' kann die folgende + verfügbare Linienstärke eingestellt werden. Die Linienstärke gilt + für alle Zeichenelemente. +<P> +<LI> Menuefeld 'circle'<BR> + Ist das Menuefeld 'C' nicht aktiv, dann wird ein Kreis, sonst + ein Kreisbogen bzw. eine Tortenscheibe gezeichnet. +<P> + Wird ein Kreis gezeichnet, dann wird zunächst der + Kreismittelpunkt angeklickt und dann ein Punkt auf dem Kreis. + Kreise, die einen minimalen Radius unterschreiten, werden nicht + gezeichnet. Der Rand des Kreises wird entsprechend der Felder ' _ + ' und ' . ' gezeichnet. Der Kreis ist ausgefüllt, wenn das Feld + '* ' aktiv ist. Durch Anklicken der Berandung wird das + Element ausgewählt. +<P> + Das Zeichnen eines Kreisbogens erfolgt zunächst wie beim Zeichnen + eines Kreises. Nach Anklicken eines Punktes auf dem Radius werden + der Anfangs- und der Endpunkt des Bogens definiert. Hierzu wird + jeweils ein Punkt auf der Zeichenfläche angeklickt. Dieser + definiert eine Gerade zum Mittelpunkt des Kreises. Der Schnittpunkt + dieser Geraden mit dem Kreis definiert den Anfangs- bzw. den + Endwinkel. Es wird eine gefüllte Tortenscheibe gezeichnet, wenn + das Feld '* ' aktiv ist. Die Pfeilfelder 'b>' und 'e>' + definieren, ob am Anfang und/oder am Ende des Kreisbogens ein Pfeil + gezeichnet wird. +<P> + Wird ein Winkel erwartet und ist zu diesem Zeitpunkt das Menuefeld + 'deg' aktiv, dann kann der Winkel in Grad (Gleitpunktzahl) über die + Tastatur eingegeben werden. +<P> +<LI> Menuefeld 'ellipse'<BR> + Analog wie Kreis, jedoch muß zusätzlich die zweite Achse + definiert werden. Bei der Definition der x-Achse (y-Achse) wird nur + die x-Koordinate (y-Koordinate) des entsprechenden, angeklickten + Punktes verwendet. Ist das Menuefeld '||' aktiv, dann + wird die Hauptachse der Ellipse parallel zu einer auszuwählenden + Geraden gelegt. +<P> +<LI> Menuefeld 'rectangle'<BR> + Es wird ein Rechteck gezeichnet. Hierzu werden zwei diagonal + gegenüberliegende Punkte angeklickt. Die Eckpunkte des Rechtecks + werden intern so geordnet, daß der erste Punkt den den kleinsten + x- und kleinsten y-Wert hat. Falls das Feld '* ' aktiv ist, wird ein + gefülltes Rechteck erzeugt. +<P> + Ein nicht gefülltes Rechteck wird als vier isolierte Strecken + dargestellt. Ein gefülltes Rechteck ist ein Zeichenelement. Es + kann am Brechen nicht beteiligt werden. Durch Anklicken der + Berandung wird das Element ausgewählt. Einrastpunkte des + gefüllten Rechtecks sind die Eckpunkte oder falls 'mp' aktiv ist + der Mittelpunkt des Rechtecks. +<P> +<LI> Menuefeld 'triangle'<BR> + Es wird ein Dreieck gezeichnet. Hierzu werden die drei Eckpunkte + angeklickt. Falls das Feld '* ' aktiv ist, wird ein gefülltes + Dreieck erzeugt. +<P> + Ein nicht gefülltes Dreieck wird als drei isolierte Strecken + dargestellt. Ein gefülltes Dreieck ist ein Zeichenelement. Es + kann am Brechen nicht beteiligt werden. Durch Anklicken der + Berandung wird das Element ausgewählt. Einrastpunkte des + gefüllten Dreiecks sind die Eckpunkte oder falls 'mp' aktiv ist + der Schwerpunkt des Dreiecks. +<P> +<LI> Menuefeld 'quadrangle'<BR> + Es wird ein Viereck gezeichnet. Hierzu werden die vier Eckpunkte + angeklickt. Falls das Feld '* ' aktiv ist, wird ein gefülltes + Viereck erzeugt. +<P> + Ein nicht gefülltes Viereck wird als vier isolierte Strecken + dargestellt. Ein gefülltes Viereck ist ein Zeichenelement. Es + kann am Brechen nicht beteiligt werden. Durch Anklicken der + Berandung wird das Element ausgewählt. Einrastpunkte des + gefüllten Vierecks sind die Eckpunkte. +<P> +<LI> Menuefeld 'Bezier'<BR> + Es wird eine Bezierkurve dritten Grades durch 4 einzugebende Punkte + definiert. Die Kurve kann durch Eingabe von weiteren 2 Punkten, die + eine nächste Endtangente und einen nächsten Endpunkt definieren, + dann jeweils fortgesetzt werden. +<P> + Falls das Feld '* ' aktiv ist, wird eine gefüllte Bezierkurve + erzeugt. +<P> +<LI> Menuefeld 'polygon'<BR> + Es wird ein Polygon gezeichnet. Hierzu werden der Mittelpunkt + und ein Punkt des Kreises angeklickt. Anschließend wird der + Grad des Polygons über die Tastatur eingegeben. Die Eingabe wird + mit der Taste 'RETURN' abgeschlossen. Falls '* ' aktiv ist, dann + werden die Ecken mit dem Mittelpunkt verbunden. +<P> +<LI> Menuefeld 'connect'<BR> + Es werden die Mittelpunkte von zwei Zeichnungselementen (bei + gefüllten Dreiecken die Schwerpunkte) miteinander verbunden. Ist + das Menuefeld 'p' aktiv, dann tritt anstelle des zweiten + Zeichnungselements der Anklickpunkt. +<P> + Ist weder X noch Y angeklickt, dann ist die Verbindung direkt. Ist + 'X' angeklickt ist die Verbindungslinie zuerst horizontal (parallel + zur X-Achse) und dann vertikal. Ist 'Y' ist die Verbindungslinie + zuerst vertikal (parallel zur Y-Achse) und dann horizontal. Es + können alle Zeichnungselemente ausgewählt werden. Bei Bezierkurven + erfolgt kein Trimmen, sondern nur eine Verbindung zu dem Endpunkt, + der dem angeklickten Punkt am nächsten ist. Anmerkung: Es wird nur + der Anfang (das Ende) der Verbindungslinie eingekürzt, falls + dieser(s) sich mit dem Ausgangsobjekt (Zielobjekt) schneidet. +<P> +<LI> Menuefeld 'p'<BR> + Zeigt an, daß anstelle eines zweiten Zeichnungselements bei + 'connect' der Anklickpunkt zu verwenden ist. +<P> +<LI> Menuefeld 'X'<BR> + Definiert die Art der Verbindungslinie bei 'connect'. +<P> +<LI> Menuefeld 'Y'<BR> + Definiert die Art der Verbindungslinie bei 'connect'. +<P> +<LI> Menuefeld 'mirror'<BR> + Objekte können an einer Geraden gespiegelt werden. Es wird die + Gerade angeklickt und dann beliebig viele Objekte, die gespiegelt + werden sollen, durch anklicken oder durch Einrahmen mit einem + Auswahlrechteck definiert. Texte werden bezüglich ihrer Lage und + Orientierung richtig gespiegelt, aber nicht bezüglich der + Orientierung der einzelnen Zeichen. +<P> +<LI> Menuefeld 'attr?'<BR> + Es kann ein Objekt angeklickt werden, dann wird die Linienstärke, + die Farbe und bei Texten der Font des ausgewählten Objekts + in der Menueleiste eingestellt. +<P> +<LI> Menuefeld 'rotate'<BR> +<P> + Es werden Objekte um die im Folgefeld angegebenen Winkelgrade im + mathematischen Sinn rotiert. Zunächst werden die zu rotierenden + Objekte ausgewählt. Falls ein Auswahlrechteck definiert wurde, + blinken die ausgewählten Objekte und es wird nach einem Drehpunkt + gefragt, sonst ist der Drehpunkt durch den Einrastpunkt bestimmt. + Falls ein Auswahlrechteck gegeben war, dann kann mehrfach ein + Drehpunkt angeklickt werden. Jedesmal wird dann weitergedreht. Durch + erneutes Anklicken des Menuefeldes wird abgebrochen. +<P> + Durch Anklicken des Folgefeldes mit den Winkelgraden werden diese um + jeweils 5 Grad (linke Maustaste) oder 30 Grad (rechte Maustaste), + jeweils modulo 360 Grad, erhöht. +<P> +<LI> Menuefeld 'copy'<BR> + Es können alle Objekte, die sich in einem Auswahlrechteck + befinden oder die angeklickt werden, von einer Stelle des Bildes an + eine andere kopiert werden. Hierbei gibt es zwei Modi, die durch das + Feld 'm' bestimmt werden. +<P> + Ist das Feld 'm' vor 'copy' nicht aktiviert, dann erfolgt beim + Kopieren eine Abbildung, die neben einer Translation auch eine + Vergrößerung bzw. Verkleinerung und eine Drehung enthält. + Die Abbildung wird durch zwei Strecken definiert, die in einander + überführt werden. Hierbei wird die Referenzstrecke so in die + Zielstrecke überführt, daß die Anfangs- und Endpunkte + jeweils in einander übergehen. Das Verhältnis der Strecken + definiert den Vergrößerungs- bzw. Verkleinerungsfaktor. Der + Winkel zwischen den Strecken definiert den Drehwinkel des zu + kopierenden Objekts um den Anfangspunkt der Zielstrecke. +<P> + Ist das Feld 'm' vor 'copy' aktiviert, dann werden beim Kopieren + zunächst die zu kopierenden Objekte ausgewählt. Diese blinken + dann. Falls ein Auswahlrechteck definiert wurde, dann wird nach + einem Referenzpunkt gefragt, sonst ist der Referenzpunkt durch den + Einrastpunkt bestimmt. Anschließend können diese Objekte an + beliebigen Stellen durch einen Mausklick abgesetzt werden. Der + Referenzpunkt wird auf den angeklickten Punkt abgebildet. Es erfolgt + keine Rotation und keine Größenänderung. +<P> +<LI> Menuefeld 'move'<BR> + Ablauf wie beim Kopiervorgang, jedoch wird das ursprüngliche + Objekt gelöscht. Die Referenzstrecke und die Zielstrecke können + nicht bewegt werden. Der Vorgang ist mit einer einmaligen Bewegung des + Objekts oder der Objektgruppe abgeschlossen. +<P> +<LI> Menuefeld 'm' vor 'copy' und 'move'<BR> + Das Feld beeinflußt den Ablauf bei 'kopieren' und bewegen (siehe dort). +<P> +<LI> Menuefeld 'complete'<BR> + Es wird ein Parallelogrammm gezeichnet. Hierzu werden zwei von + demselben Punkt ausgehende Strecken angeklickt. Diese werden zum + Parallelogramm ergänzt. Auch diese Figur wird als vier + unabhängige Strecken gepeichert. +<P> +<LI> Menuefeld 'extend'<BR> Es wird eine Strecke oder ein Kreisbogen + oder ein Ellipsenbogen angeklickt. Die Strecke bzw. der Bogen wird + etwas verlängert und zwar auf der Seite, deren Ende dem + Anklickpunkt am nächsten ist. Durch die Verlängerung bei + Bögen kann ein voller Kreis oder eine volle Ellipse entstehen. +<P> +<LI> Menuefeld 'fill'<BR> (Vergleiche auch Menuefeld '* '). Es wird ein + angeklicktes Zeichnungselement, das bereits vorhanden ist, + nachträglich gefüllt. Dabei bleibt die Kontur erhalten, da ein + zusätzliches Zeichnungselement erzeugt wird. Das neue Element wird + immer als erstes gezeichnet. Es verdeckt also die bereits + gezeichneten Elemente nicht. Damit sollten die sichtbaren Teile + einer Zeichnung immer zuerst gefüllt werden. Es können gefüllt + werden: Kreise, Kreisbögen, Ellipsen und Ellipsenbögen. + Darüberhinaus können gefüllte Drei- und Vierecke erzeugt werden. + Die Dreiecke werden durch das Anklicken von zwei Geraden definiert, + die sich schneiden. Die beiden Abschnitte der Geraden, in denen die + Anklickpunkte liegen, bilden die zwei Seiten des Dreiecks. Vierecke + werden ebenfalls durch Anklicken von zwei Geraden definiert. Die + vier Endpunkte der beiden angeklickten Strecken definieren die + Eckpunkte des Vierecks. Um eine eindeutige Verbindungsstruktur zu + erhalten, werden die beiden Endpunkte der beiden Strecken verbunden, + die dem jeweiligen Anklickpunkt in der jeweiligen Strecke am + nächsten liegen. Gefüllte Kreis- und Ellipsenbögen können + verlängert werden, falls der gefüllte Teil nicht alles abdeckt. +<P> +<LI> Menuefeld 'trim'<BR> + Strecken, Kreise, Kreisbögen, Ellipsen, Ellipsenbögen und + Tortenscheiben seien einfache Grafikelemente. Ein einfaches + Grafikelement wird innerhalb eines Bereiches, der wegfallen soll, + angeklickt. Dieser Bereich wird durch ein oder zwei andere + Grafikelemente (außer Texten und Bezierkurven) begrenzt. Diese + beiden Grafikelemente werden anschließend angeklickt. Erfolgt + die Begrenzung nur durch ein einziges Grafikelement, dann wird + dieses zweimal angeklickt. Ist der angeklickte Teil des + Grafikelementes einseitig frei, dann wird bis zum freien Ende + gelöscht. Sind keine Schnittpunkte vorhanden oder würde das + gesamte Grafikelement gelöscht, dann passiert gar nichts. + Das Grafikelement Strecke wird bei einer Begrenzung als Gerade + behandelt, d.h. es werden auch die Schnittpunkte, die in der + Verlängerung der Strecke liegen akzeptiert. +<P> +<LI> Menuefeld 'up'<BR> + Es werden die ausgewählten Zeichnungselemente ganz nach oben in der + Liste der Zeichnungselemente verschoben. Dabei wird die bisherige + Reihenfolge der ausgewählten Elemente umgedreht. Das unterste + ausgewählte Element wird also das oberste. Ein weiter oben + stehendes Zeichnungselement kann ein weiter unten stehendes + verdecken. +<P> +<LI> Menuefeld 'down'<BR> + Es werden die ausgewählten Zeichnungselemente ganz nach unten in + der Liste der Zeichnungselemente verschoben. Dabei wird die + bisherige Reihenfolge der ausgewählten Elemente im Gegensatz zu + 'up' nicht umgedreht. Die Verdeckung innerhalb der ausgewählten + Elemente bleibt also gleich. Alle anderen Elemente können die + ausgewählten Elemente dann überdecken. +<P> +<LI> Menuefeld 'delete'<BR> + Es werden die ausgewählten Zeichnungselemente gelöscht. Bei + Kreisen bzw Ellipsen muß sich der Anklickpunkt in etwa auf dem + Bogen befinden, bei Rechteck, Viereck und Dreieck in der nähe der + Umrandung, bei Texten in der Nähe des Bezugspunktes, bei Strecken + in der Nähe der Strecke, bei Bezierkurven in der Nähe der Kurve. + Es wird immer dasjenige Element gelöscht, zu dem der kleinste + Abstand vom angeklickten Punkt aus besteht. +<P> + Für alle seit dem letzten Anklicken des Feldes 'löschen' + gelöschten Elemente kann durch Drücken einer der Tasten + BACKSPACE, DELETE oder UNDO die Löschung rückgängig gemacht + werden. Je nach Abbildung der Tasten in den einzelnen + Rechnerinstallationen kann es sein, daß nicht alle angegebenen + Tasten wirksam sind. +<P> +<LI> Menuefeld 'cut'<BR> + Die Menuefelder 'cut' und 'paste' dienen zur Übertragung von + Zeichenobjekten von einem LaTeXdraw-Fenster in andere. Mit 'cut' + wird ein Fenster das gebende Fenster. Nach dem Anklicken von 'cut' + wird zunächst wie beim Kopieren mit der Maus ein Referenzpunkt + definiert und anschließend können nacheinander Objekte durch + anklicken oder durch ein Auswahlrechteck ausgewählt werden. + Ausgewählte Objekte sind ausgeschnitten. Sie blinken. Ein + mehrfaches auswählen desselben Objekts ist ohne Bedeutung. Die + ausgeschnittenen Objekte bleiben bis zum nächsten Anklicken eines + Menuepunktes definiert. Ist in anderen Fenstern bereits 'paste' + aktiv, dann werden die ausgeschnittenen Objekte schritthaltend + übertragen. Sonst nur vermerkt. Die Gruppenstruktur der + übertragenen Objekte geht verloren. Es kann in mehreren + LaTeXdraw-Fenstern 'paste' gegeben werden. +<P> +<LI> Menuefeld 'paste'<BR> + Das Fenster ist bereit, Zeichenobjekte von einem anderen + LaTeXdraw-Fenster zu übernehmen. Jedesmal nach Anklicken von + 'paste' wird ein Zielpunkt definiert. Der Referenzpunkt bei 'cut' + wird auf den Zielpunkt bei 'paste' abgebildet. Eine + Größenänderung oder eine Drehung ist nicht vorgesehen. Dann + werden alle bereits ausgeschnittenen Objekte übernommen. Weitere + ausgeschnittene Objekte werden schritthaltend übernommen. Die + übernommenen Objekte gehören keiner Gruppe an. Es können in + mehreren Fenstern gleichzeitig 'paste'-Vorgänge aktiv sein. +<P> +<LI> Menuefeld '-l'<BR> + Ein Text wird linksbündig am Bezugspunkt ausgerichtet. +<P> +<LI> Menuefeld '-r'<BR> + Ein Text wird rechtsbündig am Bezugspunkt ausgerichtet. +<P> +<LI> Menuefeld '-b'<BR> + Die Unterkante des Textes wird am Bezugspunkt ausgerichtet. +<P> +<LI> Menuefeld '-t'<BR> + Die Oberkante des Textes wird am Bezugspunkt ausgerichtet. +<P> + <LI> Menuefeld '* '<BR> + Kreise, Ellipsen, Vierecke und Rechtecke werden ausgefüllt. + Anstelle von Kreis- und Ellipsenbögen werden ausgefüllte + Tortenscheiben gezeichnet. Bei Polygonen werden die Ecken mit dem + Mittelpunkt verbunden. +<P> +<LI> Menuefeld 'C'<BR> + Falls das Menuefeld '* ' nicht aktiv ist, werden Kreis- bzw. + Ellipsenbögen gezeichnet, sonst gefüllte Tortenscheiben. +<P> +<LI> Menuefeld '||'<BR> + Bei der Definition einer Strecke wird der zweite angeklickte + Punkt nicht als realer Endpunkt der Strecke, sondern nur als + eine grobe Richtung der späteren Strecke verwendet. Es wird dann + eine Strecke s angeklickt. Ausgehend vom Anfangspunkt wird dann + eine Strecke gezeichnet, die genau so lang ist, wie die + ausgewählte Strecke s. Die Strecke hat die Steigung dy/dx. + Die Vorzeichen werden entsprechend dem groben Endpunkt bestimmt. + Hierbei sind dy bzw. dx die Koordinatendifferenzen der Strecke s. +<P> + Werden Ellipsen gezeichnet, dann wird die Hauptachse parallel zu + einer Strecke s ausgerichtet. Diese Strecke wird nach Aufforderung + angeklickt. +<P> + Werden Texte eingegeben, werden Texte entsprechend der + Orientierung einer Strecke s gedreht. Diese Strecke wird + nach Aufforderung angeklickt. +<P> +<LI> Menuefeld '-|'<BR> + Anstelle des Endpunktes der einzugebenden Strecke wird eine + Strecke s angeklickt. Der Endpunkt ist dann der Fußpunkt des + Lots vom eingegebenen Anfangspunkt auf die Strecke s. +<P> +<LI> Menuefeld 'mp'<BR> + Ist 'mp' nicht gesetzt, dann ist der verlangte Punkt der + angeklickte Punkt. Ist 'mp' gesetzt, dann ergibt sich der zu + bestimmende Punkt wie folgt: + <UL><LI> Fall: Es wurde eine Strecke, ein Kreis, ein Kreisbogen, + eine Ellipse oder ein Ellipsenbogen angeklickt. Dann ist der + gewünschte Punkt der Mittelpunkt der Strecke oder der Mittelpunkt + des Kreises bzw. der Ellipse. + <LI> Fall: Es liegt kein zulässiges Element in der Nähe, dann + wird der angeklickte Punkt verwendet. + </UL> +<P> +<LI> Menuefeld 'b>'<BR> + Am Anfang einer Strecke, eines Bogens oder einer Bezierkurve wird + ein Pfeil gezeichnet. +<P> +<LI> Menuefeld 'e>'<BR> + Am Ende einer Strecke, eines Bogens oder einer Bezierkurve wird + ein Pfeil gezeichnet. +<P> +<LI> Menuefeld '|]'<BR> + Sind die Pfeilfelder nicht aktiviert, aber das Feld '|]', dann + werden bei durchgezogenen Linien beide Linienenden um die halbe + Linienstärke verlängert. +<P> + <LI> Menuefeld '=<Zahl>'<BR> Die Zahl in diesem Feld gibt die + Linienstärke an. Durch Anklicken erfolgt eine Fortschaltung. Bei + Drücken der Taste 1 bzw. 3 wird vorwärts bzw. rückwärts + gezählt. +<P> +<LI> Menuefeld ' _ ' und nicht Menuefeld ' . ' aktiviert<BR> + Es werden gestrichelte Linien gezeichnet. +<P> +<LI> Menuefeld ' . ' und nicht Menuefeld '_ ' aktiviert<BR> + Es werden punktierte Linien gezeichnet. +<P> +<LI> Menuefeld ' _ ' und Menuefeld ' . ' aktiviert<BR> + Es werden gestrichelte Linien mit punktierten Strichen gezeichnet. +<P> +<LI> Menuefelder ' < ^ v > '<BR> + Die Zeichnung wird um einen halben Bildschirm nach links, nach + oben, nach unten oder nach rechts verschoben. Teile der + Zeichnung dürfen auch außerhalb des Bildschirmes liegen. + Eine Verschiebung kann auch während eines Zeichenvorgangs + erfolgen. Die Verschiebung kann auch mit den Cursortasten + ausgelöst werden. +<P> +<LI> Menuefeld '[]'<BR> + Die Zeichnung wird erneut ausgegeben. Die angefangene Arbeit wird + nicht verlassen. Die Verwendung dieses Menuepunktes ist i.d.R. + unnötig. +<P> +<LI> Menuefeld 'groupmode'<BR> + Es wird der Gruppenmodus an- bzw. abgeschaltet. +<P> +<LI> Menuefeld 'newgroup'<BR> + Es wird eine neue Gruppe gebildet. Alle Elemente und + Gruppen, die bis zum nächsten Anklicken von 'newgroup' oder einem + anderen Menuefeld ausgewählt wurden, bilden die neue Gruppe. Die + ausgewählten Elemente blinken. Die Wirkung dieser Aktion ist + unabhängig vom eingestellten Gruppenmodus. +<P> +<LI> Menuefeld 'ungroup' + Es wird durch anklicken eines Elements die Gruppe ausgewählt, zu + der das Zeichnungselement gehört. Die Gruppe blinkt. Nach Anklicken + von 'OK' wird die oberste Gruppe dieser Elemente aufgelöst. Die + Gruppe, in der das angeklickte Element ist, gilt jetzt als + ausgewählt und blinkt. Durch Anklicken von 'OK' kann diese Gruppe + ebenfalls aufgelöst werden. Alternativ kann ein anderes Element + oder ein anderer Menuepunkt angeklickt werden. Die Wirkung dieser + Aktion ist unabhängig vom eingestellten Gruppenmodus. +<P> +<LI> Menuefeld 'showgroup' + Es kann ein Zeichnungselement angeklickt werden, dann blinken alle + Elemente, die zur umfassendsten Gruppe des angeklickten Elements + gehören. Die Wirkung dieser Aktion ist unabhängig vom + eingestellten Gruppenmodus. +<P> +<LI> Menuefeld 'G' (Gitter)<BR> + Es wird immer ein Gitternetz angezeigt. Bei Erzeugung eines + neuen Programms oder beim Anklicken dieses Menuepunktes wird + ein rechtwinkliges Standardgitter mit der Grundgitterweite als + aktuelle Gitterweite eingestellt. Die aktuelle Gitterweite + verändert sich mit einer Skalierung oder durch Neudefinition des + Gitters. +<P> + Die Grundgitterweite ist so gewählt, daß beim Druck unter + \unitlength = 0.3mm der Abstand genau 5 mm ist. Die + Größe \unitlength = 0.3mm ergibt sich + beispielsweise, wenn die Zeichnung die Breite der Zeichenfläche + des Bildschirms ausfüllt (500 Pixel) und auf einer + Zeichnungsbreite von 150 mm ausgedruckt wird. Der Gitterabstand + von 5 mm entspricht dem normalen Zeilenabstand bei Texten der + Größe 12pt oder 14pt ('large' oder 'Large' bei LaTeX article + style 10pt). Da meistens stärker verkleinert wird, ist die + Grundgitterweite normalerweise für eine Schrift mit 10 Punkten + geeignet. +<P> + Durch Anklicken des Menuepunktes Gitter kann ein neues Gitter + definiert werden. Das Gitter muß nicht rechtwinklig sein. Die + Definition eines Gitters besteht aus drei Schritten, der Eingabe + des Ursprungs P0, des nächsten rechten Gitterpunktes P1 und des + nächsten oberen Gitterpunktes P2. Bei jedem Schritt wird das + aufgrund der abgelaufenen Schritte definierte Gitter angezeigt. + Vor jeder Eingabe eines Punktes kann ein anderer Menuepunkt + angeklickt werden. Hierdurch verbleibt das Gitter in dem zu + diesem Zeitpunkt angezeigten Zustand. Die Zwischenzustände sind: + <UL><LI> Vor Eingabe von P0:<BR> + Standardgitter mit Grundgitterweite, Koordinatenursprung in + der Mitte der Zeichenfläche. + <LI> Vor Eingabe von P1:<BR> + Standardgitter mit Grundgitterweite, Koordinatenursprung ist + P0. + <LI> Vor Eingabe von P2:<BR> + Der Koordinatenursprung des Gitters liegt in P0. Das Gitter + ist definiert durch die Geradenschar, die parallel zur Strecke + P0P1 geht und eine dazu senkrechte Geradenschar. + Das Gitter + ist also rechtwinklig. Die Gitterweite ist durch die Länge der + Strecke P0P1 definiert. + </UL> +<P> +<LI> Menuefeld 'o'<BR> + Die Zeichnung wird so zentriert, daß der Mittelpunkt der + Zeichnung in der Mitte des Bildschirms liegt. Diese Operation + kann auch während eines Zeichenvorgangs erfolgen. +<P> +<LI> Menuefeld '+'<BR> + Die Zeichnung wird um einen fest eingebauten Faktor vergrößert. + Diese Operation kann auch während eines Zeichenvorgangs + erfolgen. Die Operation kann auch mit den Minustasten der Tastatur + ausgelöst werden. +<P> +<LI> Menuefeld '-'<BR> + Die Zeichnung wird um einen fest eingebauten Faktor verkleinert. + Diese Operation kann auch während eines Zeichenvorgangs + erfolgen. Die Operation kann auch mit den Plustasten der Tastatur + ausgelöst werden. +<P> + <LI> Menuefeld 'snap'<BR> + Beim Zeichnen neuer Elemente werden die Anklickpunkte auf einen + 'Einrastpunkt' verschoben, wenn ein solcher in einem Umkreis von ca + 5 Pixels liegt. Einrastpunkte sind: Bezugspunkte von Texten, + Anfangs- und Endpunkte von Strecken bzw. Bezierkurven, + Mittelpunkte von Kreisen und Ellipsen, Anfangs- und Endpunkte von + Kreis- und Ellipsenbögen, Eckpunkte von Rechtecken, Vierecken + und Dreiecken sowie der nächstliegende Gitterpunkt. +<P> +<LI> Menuefeld 'xy'<BR> + Der erwartete Punkt wird nicht mit der Maus, sondern durch + Eingabe über die Tastatur definiert. Die Punktkoordinaten + werden in dem gerade definierten Gitterkoordinatensystem + angegeben. Die beiden eingegebenen Koordinaten werden mit + Zwischenraum oder Komma getrennt. Abschluß mit return-Taste. + Falls die Eingabe syntaktisch nicht korrekt ist, werden die + Zahlen nicht akzeptiert. Sie können korrigiert werden. +<P> +<LI> Menuefeld 'deg'<BR> + Wird bei der Eingabe von Ellipsenbögen, Kreisbögen oder gefüllten + Sektoren ein Winkel erwartet und ist zu diesem Zeitpunkt dieses Feld + aktiv, dann kann der Winkel in Grad als Gleitpunktzahl über die + Tastatur eingegeben werden. +<P> + <LI> Menuefeld '<Farbnummer>:<Farbname>'<BR> +<P> + Es wird die Nummer und der Name der ausgewählten Zeichenfarbe + angegeben. Falls die zugeordnete Farbe verfügbar ist, wird das + Feld entsprechend farbig ausgefüllt. Falls die Farbe nicht + verfügbar ist, wird das Feld schwarz. Die Farbe weiss (schwarz) + hat die Farbnummer 1 (0). Die Wiedergabe der Farben wird im Stil + pst-latexdraw.sty definiert. Wird das Feld mit der Maustaste 1 (3) + angeklickt, dann wird die Farbnummer erhöht (erniedrigt). +<P> + Alternativ kann ab Version 9.x die Farbe im Sondermenue direkt + angeklickt werden. +<P> + <LI> Menuefeld 'chatt'<BR> + Durch Anklicken dieses Menuefeldes können die Linienstärke, der + Linientyp, die Pfeilenden, das Linienende '|]' und die Farbe von + Zeichnungselementen geändert werden. Bei Texten kann zusätzlich + die Fontart und die Ausrichtung des Textes relativ zum + Bezugspunkt geändert werden. Geändert werden jedoch nur die + Attribute, die nach Auswahl des Menuefeldes 'chatt' angeklickt + wurden. Die zu ändernden Zeichnungselemente werden + anschließend angeklickt. Maßgebend für das neue Attribut + ist dann die jeweils aktuell vorliegende Einstellung. +<P> + <LI> Menuefeld 'stdin'<BR> + + Wird dieses Menuefeld angeklickt, dann wird Eingabe von der + Standardeingabe übernommen. Es gibt zwei Fälle. + + Im ersten Fall wird eine vollständige Latexdraw-Datei + übermittelt, einschließlich Anfangszeilen mit Parametern und + Gruppeninformation am Ende der Datei. In diesem Fall werden alle + vorher vorhandenen Zeichnungselemente gelöscht und nur die neu + gelesenen Zeichnungselemente gespeichert. Die neue Zeichnung + wird am Ende der gelesenen Datei ausgegeben und dann d Sekunden + gewartet (siehe Menuefeld 'd:').<P> + + Im zweiten Fall werden nur Zeichnungslemente übertragen. Die + bereits vor Aktivierung des Menuefeldes vorhandenen + Zeichnungselemente bleiben erhalten und die übertragenen + Zeichnungselemente werden hinzugefügt, falls der Typ des Elements + positiv ist. Ist der Typ des Elements negativ, dann wird das + korrespondierende Zeichnungselement gelöscht, falls es bereits + vorhanden ist. Ein Zeichnungselement hat das Aussehen wie in der + Latexdraw-Datei und steht in einer Zeile. Die Zeichnungselemente + werden mit einer Folge von 17 Nullen getrennt mit Zwischenraum in + einer Zeile abgeschlossen (wie auch in der Latexdraw-Datei). + Gruppeninformation wird nicht übertragen. Nach Abschluß der + Zeichnungselement wird die Zeichnung ausgegeben und dann d Sekunden + gewartet (siehe Menuefeld 'd:').<P> + + Die Eingabe über Standardeingabe kann aus einer beliebig + gemischten Folge der beiden oben genannten Darstellungen bestehen. + Nur nach Eingabe einer ganzen Zeile werden Interaktionen mit dem + Zeichenprogramm über das Menuefeld behandelt, falls solche + vorliegen. Für diese Interaktionen bestehen keine Einschränkungen + gegenüber denen, die sonst möglich sind. Insbesondere kann durch + Auswahl einer anderen Funktion, die Eingabe über die + Standardeingabe unterbrochen werden. Durch erneutes Anklicken von + 'stdin' wird dann fortgesetzt.<P> + + Diese Schnittstelle ist besonders für on-line Animationen + geeignet. Deshalb werden in diesem Modus die Gitterpunkte und + Klickmarken nicht dargestellt. +<P> + <LI> Menuefeld 'd:<dauer>s'<BR> + + Der Wert <dauer> gibt die Wartezeit in Sekunden an, die nach + Eingabe einer Zeichnung oder einer Folge von Zeichnungselementen + über Standardeingabe (vgl. 'stdin') vergeht, bis weitergelesen + wird. Der Wert wird mit der linken (rechten) Maustaste erhöht + (erniedrigt). + + +</OL><BR><P> + + <HR><A NAME=tex2html158 HREF="node14.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html156 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html150 HREF="node12.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html159 HREF="node14.html"> Zur LaTeXdraw--Datei</A> +<B>Up:</B> <A NAME=tex2html157 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html151 HREF="node12.html"> Fehlermeldungen</A> +<BR> <HR> <P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node14.html b/support/latexdraw/doc/ltdmanual.html.g/node14.html new file mode 100644 index 0000000000..e1c09087fb --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node14.html @@ -0,0 +1,38 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Zur LaTeXdraw--Datei</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Zur LaTeXdraw--Datei"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html168 HREF="node15.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html166 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html160 HREF="node13.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html169 HREF="node15.html"> Zur LaTeX-Datei</A> +<B>Up:</B> <A NAME=tex2html167 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html161 HREF="node13.html"> Bedeutung der Menuefelder</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00040000000000000000> Zur LaTeXdraw--Datei</A></H1> +<P> +Die LaTeXdraw--Ausgabedatei enthält nur ASCII-Zeichen und könnte +daher auch leicht durch den Benutzer modifiziert oder verarbeitet +werden. Jede Zeile ist ein Element der Zeichnung. Die erste Zahl +stellt den Typ des Elements dar. Dann folgen Koordinaten, Längen, +Winkel und Darstellungsparameter. Jede Zeile enthält dieselbe +Anzahl von Zahlen, auch wenn einzelne für einen bestimmten +Elementtyp nicht relevant sind. Alle Koordinatenangaben beziehen sich +auf ein Koordinatensystem, dessen Nullpunkt in der unteren linken Ecke +ist. Stellt ein Element einen Text dar, dann steht in der Folgezeile +der entsprechende Zeichenstring. Vor der Elementbeschreibung stehen +mit Kommentar versehene interne Parameter des Zeichenprogramms. Diese +werden beim Einlesen der Datei übernommen. Der Benutzer kann bei +Bedarf diese Parameter in der Ausgabedatei abändern. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node15.html b/support/latexdraw/doc/ltdmanual.html.g/node15.html new file mode 100644 index 0000000000..f2f1aeb741 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node15.html @@ -0,0 +1,77 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Zur LaTeX-Datei</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Zur LaTeX-Datei"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html178 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html176 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html170 HREF="node14.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html179 HREF="node16.html"> Internes Format der </A> +<B>Up:</B> <A NAME=tex2html177 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html171 HREF="node14.html"> Zur LaTeXdraw--Datei</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00050000000000000000> Zur LaTeX-Datei</A></H1> +<P> +Die LaTeX-Datei setzt das Vorhandensein des <b> latexdraw.sty</b> +voraus. Dieser ist als Option bei der Definition des Stils für das +Dokument anzugeben. Es werden die dort eingeführten +Zeichnungsprimitive verwendet. Daher kann die Zeichnung auch noch +nachträglich ohne grossen Aufwand modifiziert werden. +<P> +Die erzeugte LaTeX-Datei ist ein vollständiges LaTeX-Dokument. Sie +kann daher unmittelbar übersetzt und gedruckt werden. In vielen +Fällen wird die LaTeX-Datei aber in ein größeres LaTeX-Dokument +einkopiert. Daher erfolgt eine entsprechende Abfrage des Benutzers +beim Abspeichern der Datei. Alternativ sind alle Zeilen vor +''beginpicture'' und nach ''endpicture'' zu entfernen. +<P> +Der Aufbau der LaTeX-Datei ist so gewählt, daß bestimmte +nachträgliche Manipulationen sehr einfach möglich sind, z.B.: +<UL><LI> Die Größe des Bildes ist durch Modifikation der + '\unitlength' + veränderbar. (Die Einheit im Bild ist das Pixel). + <LI> Für die Linienstärke wird folgendes Makro zur Einstellung + verwendet: \ldlinewidth. Dieses hat zwei Parameter: + <UL><LI> 1. Parameter: Linienstärke (i, ganzzahlig) + <LI> 2. Parameter: Linienstärke in pt (0.57* Linienstärke) + </UL> + <LI> Für die Darstellung von Punkten bei punktierten Linien werden + folgende Makros verwendet: + <UL><LI> Linienstärke 1: \Pthinpunkt + <LI> Linienstärke 3: \Pthickpunkt + <LI> sonstige Linienstärke i: + \Pvarpunkt{w}{i}, wobei w der Drehwinkel in Radian + ist. + </UL> + <LI> Die Parameter \Pdotgap,\Pinterdotgap + und \Pdashlength für die Geraden (vgl. eepic.sty) sind + am Anfang der Zeichnung definiert und so leicht änderbar. + <LI> Ein Anfangspfeil wird durch das Makro \aLdPfeil + realisiert, ein Endepfeil durch \eLdPfeil. + Die Makros sind in pst-latexdraw.sty definiert. Sie + haben vier bzw. drei Parameter. Die ersten beiden Parameter geben + immer die Position der Pfeilspitze und den Drehwinkel in Radian an. + Der dritte Parameter gibt den Drehwinkel in Radian und der vierte + Parameter die Linienstärke. + <LI> Der Abstand vor und nach der Zeichnung kann geändert werden. + <LI> Die Lage des Textes bezüglich des bei Erstellung des Textes + angeklickten Bezugspunktes kann einfach geändert werden. + <LI> Bei der Darstellung eines komplexeren Zeichnungselements + steht am Anfang der erzeugten Folge von LaTeX-Zeilen ein Kommentar, + der das Element und seine Parameter angibt. Am Ende der Folge + steht ein Schlußkommentar. + </UL><BR> <HR><A NAME=tex2html178 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html176 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html170 HREF="node14.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html179 HREF="node16.html"> Internes Format der </A> +<B>Up:</B> <A NAME=tex2html177 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html171 HREF="node14.html"> Zur LaTeXdraw--Datei</A> +<BR> <HR> <P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node16.html b/support/latexdraw/doc/ltdmanual.html.g/node16.html new file mode 100644 index 0000000000..a8779530c9 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node16.html @@ -0,0 +1,31 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Internes Format der LaTeXdraw--Datei</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Internes Format der LaTeXdraw--Datei"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html188 HREF="node17.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html186 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html180 HREF="node15.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html189 HREF="node17.html"> Aufbau</A> +<B>Up:</B> <A NAME=tex2html187 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html181 HREF="node15.html"> Zur LaTeX-Datei</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00060000000000000000> Internes Format der LaTeXdraw--Datei</A></H1> +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html190 HREF="node17.html#SECTION00061000000000000000"> Aufbau</A> +<LI> <A NAME=tex2html191 HREF="node18.html#SECTION00062000000000000000"> Reihenfolge der Parameter je Zeichnungselement</A> +<LI> <A NAME=tex2html192 HREF="node19.html#SECTION00063000000000000000"> Bedeutung der Zeichnungselemente</A> +<LI> <A NAME=tex2html193 HREF="node20.html#SECTION00064000000000000000"> Bedeutung sonstiger Parameter</A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node17.html b/support/latexdraw/doc/ltdmanual.html.g/node17.html new file mode 100644 index 0000000000..44205421ca --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node17.html @@ -0,0 +1,97 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Aufbau</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Aufbau"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html202 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html200 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html194 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html203 HREF="node18.html"> Reihenfolge der Parameter </A> +<B>Up:</B> <A NAME=tex2html201 HREF="node16.html"> Internes Format der </A> +<B> Previous:</B> <A NAME=tex2html195 HREF="node16.html"> Internes Format der </A> +<BR> <HR> <P> +<H2><A NAME=SECTION00061000000000000000> Aufbau</A></H2> +<P> +Alle bisherigen Strukturen der LaTeXdraw--Dateien sind +aufwärtskompatibel. Damit können auch alte Versionen durch neuere +LaTeXdraw--Programme gelesen werden. +<P> +<UL><LI> Präambel<BR> + Am Anfang steht die LaTeXdraw--Version, mit der die Datei erzeugt + wurde. Dann kommen eine Reihe von Parametern mit Kommentar. Ab Version + 10.1 sind auch die Gitterwerte mit ausgegeben. Ergebnisse einer + Version oberhalb 10.0 können dadurch nicht mehr als Eingabe bei + Versionen unter 10.0 verwendet werden. Abhilfe: Löschen der + entsprechenden Zeile in der LaTeXdraw--Datei. +<P> + Eine weitere Änderung gilt ab Version 11. Hier sind auch noch die + momentanen Einstellungen für die Ausgabeoptionen in einer Zeile + gespeichert. Die Werte sind: + <UL><LI> x-Wert und y-Wert linker unterer Bildpunkt in Pixel + <LI> x-Wert und y-Wert rechter oberer Bildpunkt in Pixel + <LI> x-Dimension und y-Dimension (d.h. Größe) des Bildes in + Pixeln gemäß Zeichnung + <LI> maximale x-Dimension und y-Dimension des Bildes in mm + gemäß Angabe des Benutzers + <LI> eigenständiges Dokument (1), einzubinden (0) + <LI> zu drehen (0), nicht zu drehen (1) + </UL> +<P> +<LI> Zeichnungselemente<BR> + Dann kommen die Zeichnungselemente. Jedes Zeichnungselement + enthält gleich viele Parameter. Die Zeichnungselemente werden mit + einer Zeile bestehend aus soviel Nullen, wie es Parameter gibt, + abgeschlossen. +<P> + Jedes Zeichnungselement ist in einer Zeile. Die einzelnen Parameter + eines Zeichnungselements sind mit 'Zwischenraum' getrennt. Sie + können drei Kategorien zugeordnet werden: bestimmend, redundant + oder irrelevant. Die bestimmenden Parameter werden nachfolgend + aufgelistet. Die redundanten Parameter werden intern verwendet und + bei Einlesen der Eingabedatei vorsichtshalber aus den bestimmenden + Parametern neu berechnet. Ein Beispiel für redundante Parameter + ist der Punkt xb1,yb1. Dieser ist der Anfangspunkt bei Kreis- und + Ellipsenbögen. Solche redundanten Parameter sind nachfolgend nicht + mehr beschrieben. +<P> +Die Koordinaten der Zeichenfläche sind so gewählt, daß +die x-Achse nach rechts und die y-Achse nach oben zeigt. +Die Winkel +sind im mathematischen Sinn definiert, d.h. ausgehend von der +positiven x-Achse im Gegenuhrzeigersinn. Alle Winkel sind in +Vielfachen von 0.1 Grad angegeben. +<P> +<LI> Gruppenstruktur<BR> +Ab Version 13.0 folgt auf die Zeichnungselemente die Gruppenstruktur. +Diese besteht aus zwei Teilen: +<OL><LI> Definition der Gruppen, denen ein Zeichnungselement direkt + zugeordnet ist.<BR> + Zeichnungselemente, die keiner Gruppe angehören sind nicht + aufgeführt. Für jede Gruppe, der mindestens ein Zeichnungselement + direkt angehört, wird die Gruppe angegeben und dann die Liste der + Nummern von Zeichnungselementen, die dieser Gruppe direkt + angehören. Die Numerierung der Zeichnungselemente bginnt mit eins. + Die Liste ist mit 'blank' getrennt und mit Null abgeschlossen. +<P> + Auf die letzte Liste folgt anstelle der neuen Gruppenangabe eine + Null. +<P> +<LI> Definition des Gruppenbaums.<BR> +Die Eintragungen bestehen aus Paaren Gruppennummer und Nummer der +Vatergruppe. Gruppen, die keine Vatergruppe haben sind nicht +aufgeführt. Die Eintragungen werden mit zwei Nullen abgeschlossen. +</OL></UL><BR> <HR><A NAME=tex2html202 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html200 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html194 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html203 HREF="node18.html"> Reihenfolge der Parameter </A> +<B>Up:</B> <A NAME=tex2html201 HREF="node16.html"> Internes Format der </A> +<B> Previous:</B> <A NAME=tex2html195 HREF="node16.html"> Internes Format der </A> +<BR> <HR> <P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node18.html b/support/latexdraw/doc/ltdmanual.html.g/node18.html new file mode 100644 index 0000000000..f9d39e9fde --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node18.html @@ -0,0 +1,27 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Reihenfolge der Parameter je Zeichnungselement</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Reihenfolge der Parameter je Zeichnungselement"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html212 HREF="node19.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html210 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html204 HREF="node17.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html213 HREF="node19.html"> Bedeutung der Zeichnungselemente</A> +<B>Up:</B> <A NAME=tex2html211 HREF="node16.html"> Internes Format der </A> +<B> Previous:</B> <A NAME=tex2html205 HREF="node17.html"> Aufbau</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00062000000000000000> Reihenfolge der Parameter je Zeichnungselement</A></H2> +<P> +typ, x1, y1, x2, y2, xb1, yb1, xb2, yb2, wanf, wend, liniendicke, +linienende, linientyp, lx, ly, rotwi +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node19.html b/support/latexdraw/doc/ltdmanual.html.g/node19.html new file mode 100644 index 0000000000..bf77975f6e --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node19.html @@ -0,0 +1,133 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Bedeutung der Zeichnungselemente</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Bedeutung der Zeichnungselemente"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html222 HREF="node20.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html220 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html214 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html223 HREF="node20.html"> Bedeutung sonstiger Parameter</A> +<B>Up:</B> <A NAME=tex2html221 HREF="node16.html"> Internes Format der </A> +<B> Previous:</B> <A NAME=tex2html215 HREF="node18.html"> Reihenfolge der Parameter </A> +<BR> <HR> <P> +<H2><A NAME=SECTION00063000000000000000> Bedeutung der Zeichnungselemente</A></H2> +<P> +<p><table border><TR><TD> + 2 <TD> Text<TR><TD> + <TD> x1,y1 <TD> Anfangspunkt<TR><TD> + <TD> laenge2 = 0 <TD> linksbündig, Unterkante<TR><TD> + <TD> laenge2 = 1 <TD> voll zentriert<TR><TD> + <TD> laenge2 = 2 <TD> rechtsbündig, Unterkante<TR><TD> + <TD> laenge2 = 3 <TD> zentriert, Unterkante<TR><TD> + <TD> laenge2 = 4 <TD> linksbündig, Oberkante<TR><TD> + <TD> laenge2 = 5 <TD> rechtsbündig, Oberkante<TR><TD> + <TD> laenge2 = 6 <TD> zentriert, Oberkante<TR><TD> + <TD> laenge2 = 7 <TD> linksbündig, zentriert<TR><TD> + <TD> laenge2 = 8 <TD> rechtsbündig, zentriert<TR><TD> + <TD> linientyp <TD> Fontnummer<TR><TD> + <TD> auf der Folgezeile steht der Text<TR><TD> +</table><BR> +<p><table border><TR><TD> + 3 <TD> Gerade<TR><TD> + <TD> x1,y1 <TD> Anfangspunkt<TR><TD> + <TD> x2,y2 <TD> Endpunkt <TR><TD> +</table><BR> +<p><table border><TR><TD> + 5 <TD> Kreis<TR><TD> + <TD> x1,y1 <TD> Mittelpunkt<TR><TD> + <TD> lx <TD> Radius<TR><TD> + <TD> ly <TD> = lx<TR><TD> +</table><BR> +<p><table border><TR><TD> + 6 <TD> gefüllter Kreis<TR><TD> + <TD> x1,y1 <TD> Mittelpunkt<TR><TD> + <TD> lx <TD> Radius<TR><TD> + <TD> ly <TD> = lx<TR><TD> +</table><BR> +<p><table border><TR><TD> + 7 <TD> Kreisbogen<TR><TD> + <TD> x1,y1 <TD> Mittelpunkt<TR><TD> + <TD> lx <TD> Radius<TR><TD> + <TD> ly <TD> = lx<TR><TD> + <TD> wanf <TD> Anfangswinkel in 0.1 Grad, 0 <= wanf <= 3600<TR><TD> + <TD> wend <TD> Endwinkel in 0.1 Grad, 0 <= wend <= 3600<TR><TD> +</table><BR> +<p><table border><TR><TD> + 8 <TD> Ellipse<TR><TD> + <TD> x1,y1 <TD> Mittelpunkt<TR><TD> + <TD> lx <TD> halbe große Achse in x-Richtung<TR><TD> + <TD> ly <TD> halbe kleine Achse in y-Richtung<TR><TD> +</table><BR> +<p><table border><TR><TD> + 9 <TD> gefüllte Ellipse<TR><TD> + <TD> x1,y1 <TD> Mittelpunkt<TR><TD> + <TD> lx <TD> halbe große Achse in x-Richtung<TR><TD> + <TD> ly <TD> halbe kleine Achse in y-Richtung<TR><TD> +</table><BR> +<p><table border><TR><TD> +10 <TD> Ellipsenbogen<TR><TD> + <TD> x1,y1 <TD> Mittelpunkt<TR><TD> + <TD> lx <TD> halbe große Achse in x-Richtung<TR><TD> + <TD> ly <TD> halbe kleine Achse in y-Richtung<TR><TD> + <TD> wanf <TD> Anfangswinkel in 0.1 Grad, 0 <= wanf <= 3600<TR><TD> + <TD> wend <TD> Endwinkel in 0.1 Grad, 0 <= wend <= 3600<TR><TD> +</table><BR> +<p><table border><TR><TD> +11 <TD> gef. Rechtecke<TR><TD> + <TD> x1,y1 <TD> erster Eckpunkt (geordnet!)<TR><TD> + <TD> xb1,yb1 <TD> zweiter Eckpunkt<TR><TD> + <TD> x2,y2 <TD> dritter Eckpunkt (diagonal zu x1,y1)<TR><TD> + <TD> xb2,yb2 <TD> vierter Eckpunkt (diagonal zu xb1,yb1) +</table><BR> +<p><table border><TR><TD> +12 <TD> Bezierkurve<TR><TD> + <TD> x1,y1 <TD> Anfangspunkt<TR><TD> + <TD> xb1,yb1 <TD> 1.Zwischenpunkt zur Definition der Anfangsteigung<TR><TD> + <TD> xb2,yb2 <TD> 2.Zwischenpunkt zur Definition der Endsteigung<TR><TD> + <TD> x2,y2 <TD> Endpunkt<TR><TD> +</table><BR> +<p><table border><TR><TD> +13 <TD> gef. Dreiecke<TR><TD> + <TD> x1,y1 <TD> erster Eckpunkt<TR><TD> + <TD> xb1,yb1 <TD> zweiter Eckpunkt<TR><TD> + <TD> x2,y2 <TD> dritter Eckpunkt <TR><TD> +</table><BR> +<p><table border><TR><TD> +14 <TD> gef. Vierecke<TR><TD> + <TD> x1,y1 <TD> erster Eckpunkt (geordnet!)<TR><TD> + <TD> xb1,yb1 <TD> zweiter Eckpunkt<TR><TD> + <TD> x2,y2 <TD> dritter Eckpunkt<TR><TD> + <TD> xb2,yb2 <TD> vierter Eckpunkt +</table><BR> +<p><table border><TR><TD> + 15 <TD> gefüllte Kreissektoren<TR><TD> + <TD> x1,y1 <TD> Mittelpunkt<TR><TD> + <TD> lx <TD> Radius<TR><TD> + <TD> ly <TD> = lx<TR><TD> + <TD> wanf <TD> Anfangswinkel in 0.1 Grad, 0 <= wanf <= 3600<TR><TD> + <TD> wend <TD> Endwinkel in 0.1 Grad, 0 <= wend <= 3600<TR><TD> +</table><BR> +<p><table border><TR><TD> +16 <TD> gefüllte Ellipsensektoren<TR><TD> + <TD> x1,y1 <TD> Mittelpunkt<TR><TD> + <TD> lx <TD> halbe große Achse in x-Richtung<TR><TD> + <TD> ly <TD> halbe kleine Achse in y-Richtung<TR><TD> + <TD> wanf <TD> Anfangswinkel in 0.1 Grad, 0 <= wanf <= 3600<TR><TD> + <TD> wend <TD> Endwinkel in 0.1 Grad, 0 <= wend <= 3600<TR><TD> +</table><BR> +<P> +<BR> <HR><A NAME=tex2html222 HREF="node20.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html220 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html214 HREF="node18.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html223 HREF="node20.html"> Bedeutung sonstiger Parameter</A> +<B>Up:</B> <A NAME=tex2html221 HREF="node16.html"> Internes Format der </A> +<B> Previous:</B> <A NAME=tex2html215 HREF="node18.html"> Reihenfolge der Parameter </A> +<BR> <HR> <P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node2.html b/support/latexdraw/doc/ltdmanual.html.g/node2.html new file mode 100644 index 0000000000..860b6a106d --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node2.html @@ -0,0 +1,45 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Stil-Dateien</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Stil-Dateien"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html44 HREF="node3.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html42 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html36 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html45 HREF="node3.html"> Zeichensätze</A> +<B>Up:</B> <A NAME=tex2html43 HREF="node1.html"> Umgebung</A> +<B> Previous:</B> <A NAME=tex2html37 HREF="node1.html"> Umgebung</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00011000000000000000> Stil-Dateien</A></H2> +<P> +Latexdraw läuft unter UNIX mit X-Windows. Beim Übersetzen der +LaTeX-Quelle mit den Bildern stützt es sich ab auf den Stil +latexdraw.sty. Dieser benutzt seinerseits das Paket pstricks.tex +(in Standardverteilung für LaTeX). Die Datei latexdraw.sty ist +eine Kopie der Datei pst-latexdraw.sty. Das Paket pstricks.tex setzt +seinerseits das Programm dvips zur Umwandlung in eine Postscript-Datei +voraus. +<P> +<b> Achtung: </b>Alle Dokumente mit Zeichnungen müssen zuerst mit +latex oder slitex übersetzt werden. Beispielsweise sieht die Angabe +des documentstyle bei Verwendung von article.sty als Hauptstil und +einem deutschen Text wie folgt aus:<BR> +\documentstyle[latexdraw,german]{article}<BR> +Die Option german <b> muß</b> immer als letzte aufgeführt werden, +da sie fast immer die anderen Stile stört. Im Anschluß an die +Übersetzung wird die dvi-Datei mit dem Programm dvips nach +Postscript gewandelt. Erst dann kann das Dokument gedruckt +werden. Beim Previewen mit xdvi werden nicht alle Elemente +dargestellt. Dargestellte Elemente können unvollständig oder falsch +sein. Dies hängt von der Leistung des jeweils verwendeten Previewers ab. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node20.html b/support/latexdraw/doc/ltdmanual.html.g/node20.html new file mode 100644 index 0000000000..85e3e11029 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node20.html @@ -0,0 +1,49 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Bedeutung sonstiger Parameter</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Bedeutung sonstiger Parameter"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html230 HREF="node21.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html228 HREF="node16.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html224 HREF="node19.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html231 HREF="node21.html"> About this document </A> +<B>Up:</B> <A NAME=tex2html229 HREF="node16.html"> Internes Format der </A> +<B> Previous:</B> <A NAME=tex2html225 HREF="node19.html"> Bedeutung der Zeichnungselemente</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00064000000000000000> Bedeutung sonstiger Parameter</A></H2> +<P> +<p><table border><TR><TD> +liniendicke<TD>= <TD> 100 * Farbe + Linienstärke<TR><TD> + <TD> <TD> Farbe: schwarz=0, weiss=1, ...<TR><TD> +<P> +linienende <TD>=<TD> 0 <TD> eckiger Abschluß<TR><TD> +linienende <TD>=<TD> 1 <TD> Pfeil am Anfang<TR><TD> +linienende <TD>=<TD> 2 <TD> Pfeil am Ende<TR><TD> +linienende <TD>=<TD> 3 <TD> Pfeil am Anfang und Ende<TR><TD> +<P> +linientyp <TD>=<TD> 1 <TD> durchgezogene Linie<TR><TD> +linientyp <TD>=<TD> 2 <TD> eng gepunktete Linie<TR><TD> + <TD> <TD> <TD> (nur TeX-Ausgabe)<TR><TD> +linientyp <TD>=<TD> 3 <TD> gepunktete Linie<TR><TD> +linientyp <TD>=<TD> 5 <TD> gestrichelte Linie<TR><TD> +linientyp <TD>=<TD> 7 <TD> strichpunktierte Linie<TR><TD> +</table> +<BR> +<P> +Bei Ellipsen ist 'rotwi' der Winkel, um den die Ellipse gedreht +ist, d.h. der Winkel zwischen positiver x-Achse und großer Achse +der Ellipse (in x-Richtung). +<P> +Bei gefüllten Rechtecken ist 'rotwi' der Winkel zwischen positiver +x-Achse durch (x1,y1) und der Strecke von (x1,y1) zu (xb1,yb1). +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node21.html b/support/latexdraw/doc/ltdmanual.html.g/node21.html new file mode 100644 index 0000000000..b18d55f606 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node21.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> About this document ... </TITLE> +</HEAD> +<BODY> +<meta name="description" value=" About this document ... "> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif_gr.gif"> <A NAME=tex2html236 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html232 HREF="node20.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B>Up:</B> <A NAME=tex2html237 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html233 HREF="node20.html"> Bedeutung sonstiger Parameter</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00070000000000000000> About this document ... </A></H1> +<P> + <STRONG></STRONG><P> +This document was generated using the <A HREF="http://cbl.leeds.ac.uk/nikos/tex2html/doc/latex2html/latex2html.html"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 95 (Thu Jan 19 1995) Copyright © 1993, 1994, <A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>, Computer Based Learning Unit, University of Leeds. <P> The command line arguments were: <BR> +<STRONG>latex2html</STRONG> <tt>ltdmanual.g.tex</tt>. <P>The translation was initiated by Hans-J. Siegert on Sat Jul 5 19:27:05 MEST 1997<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node3.html b/support/latexdraw/doc/ltdmanual.html.g/node3.html new file mode 100644 index 0000000000..2d180f027b --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node3.html @@ -0,0 +1,60 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Zeichensätze</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Zeichensätze"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html52 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html50 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html46 HREF="node2.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html53 HREF="node4.html"> Benutzerschnittstelle</A> +<B>Up:</B> <A NAME=tex2html51 HREF="node1.html"> Umgebung</A> +<B> Previous:</B> <A NAME=tex2html47 HREF="node2.html"> Stil-Dateien</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00012000000000000000> Zeichensätze</A></H2> +<P> +Die für den Druck benötigten Fonts sind in latexdraw.sty +definiert. Es sind 6, 8, 10, 12, 14 und 18 Punkt-Fonts in normal, bold +und italics. Für die Textdarstellung auf dem Bildschirm werden +folgende Fonts benötigt (* ist wild card):<BR> +-* -times-medium-r-* -* -8-* <BR> +-* -times-medium-r-* -* -10-* <BR> +-* -times-medium-r-* -* -14-* <BR> +-* -times-medium-r-* -* -17-* <BR> +-* -times-medium-r-* -* -20-* <BR> +-* -times-medium-r-* -* -24-* <BR> +-* -times-bold-r-* -* -8-* <BR> +-* -times-bold-r-* -* -10-* <BR> +-* -times-bold-r-* -* -14-* <BR> +-* -times-bold-r-* -* -17-* <BR> +-* -times-bold-r-* -* -20-* <BR> +-* -times-bold-r-* -* -24-* <BR> +-* -times-medium-i-* -* -8-* <BR> +-* -times-medium-i-* -* -10-* <BR> +-* -times-medium-i-* -* -14-* <BR> +-* -times-medium-i-* -* -17-* <BR> +-* -times-medium-i-* -* -20-* <BR> +-* -times-medium-i-* -* -24-* <BR> +8x13<BR> +8x13bold<BR> +<P> +Falls ein Font nicht verfügbar ist wird der 8x13-Font<BR> + -* -times-medium-r-* -* -17-* <BR> +zur Darstellung benutzt. Falls der entsprechende Font in der Zeichnung +benötigt wird, dann sollte er aber in einer richtigen Größe +verfügbar gemacht werden (in /usr/lib/X11/fonts/...) oder +alternativ sollte ein geeigneter Ersatzfont über die +Alias-Definition von Fonts (Datei .../fonts.alias) definiert werden. +Falls die Pfadnamen der Fonts nicht richtig voreingestellt sind, dann +können diese mit xset fp < Liste der durch Komma getrennten +Pfadnamen > eingestellt werden. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node4.html b/support/latexdraw/doc/ltdmanual.html.g/node4.html new file mode 100644 index 0000000000..4813433509 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node4.html @@ -0,0 +1,35 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Benutzerschnittstelle</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Benutzerschnittstelle"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html62 HREF="node5.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html60 HREF="ltdmanual.g.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html54 HREF="node3.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html63 HREF="node5.html"> Cursor</A> +<B>Up:</B> <A NAME=tex2html61 HREF="ltdmanual.g.html">No Title</A> +<B> Previous:</B> <A NAME=tex2html55 HREF="node3.html"> Zeichensätze</A> +<BR> <HR> <P> +<H1><A NAME=SECTION00020000000000000000> Benutzerschnittstelle</A></H1> +<P> +<BR> <HR> +<UL> +<LI> <A NAME=tex2html64 HREF="node5.html#SECTION00021000000000000000"> Cursor</A> +<LI> <A NAME=tex2html65 HREF="node6.html#SECTION00022000000000000000"> Dateien</A> +<LI> <A NAME=tex2html66 HREF="node7.html#SECTION00023000000000000000"> Fenster</A> +<LI> <A NAME=tex2html67 HREF="node8.html#SECTION00024000000000000000"> Aufrufparameter</A> +<LI> <A NAME=tex2html68 HREF="node9.html#SECTION00025000000000000000"> Maustasten</A> +<LI> <A NAME=tex2html69 HREF="node10.html#SECTION00026000000000000000"> Gruppen von Objekten</A> +<LI> <A NAME=tex2html70 HREF="node11.html#SECTION00027000000000000000"> Anklicken von Menuefeldern</A> +<LI> <A NAME=tex2html71 HREF="node12.html#SECTION00028000000000000000"> Fehlermeldungen</A> +</UL> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node5.html b/support/latexdraw/doc/ltdmanual.html.g/node5.html new file mode 100644 index 0000000000..a7314a54f2 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node5.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Cursor</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Cursor"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html80 HREF="node6.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html78 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html72 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html81 HREF="node6.html"> Dateien</A> +<B>Up:</B> <A NAME=tex2html79 HREF="node4.html"> Benutzerschnittstelle</A> +<B> Previous:</B> <A NAME=tex2html73 HREF="node4.html"> Benutzerschnittstelle</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00021000000000000000> Cursor</A></H2> +<P> +Je nach der aktuellen Lage gibt es drei Cursorformen. Diese sind +<UL><LI> Wunsch nach Tastatureingabe (in der Promptzeile); +<LI> Wunsch nach Anklicken eines Punktes (Zeiger); +<LI> Anzeige, daß interne Arbeit abläuft (Herz). +</UL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node6.html b/support/latexdraw/doc/ltdmanual.html.g/node6.html new file mode 100644 index 0000000000..08705d4f07 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node6.html @@ -0,0 +1,48 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Dateien</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Dateien"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html90 HREF="node7.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html88 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html82 HREF="node5.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html91 HREF="node7.html"> Fenster</A> +<B>Up:</B> <A NAME=tex2html89 HREF="node4.html"> Benutzerschnittstelle</A> +<B> Previous:</B> <A NAME=tex2html83 HREF="node5.html"> Cursor</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00022000000000000000> Dateien</A></H2> +<P> +LaTeXdraw erzeugt zwei Ausgabedateien: +<UL><LI> LaTeXdraw--Datei:<BR> Die LaTeXdraw-Datei speichert die Zeichnung + in einer internen Form. Diese Datei kann später wieder eingelesen + werden und auch durch das Zeichnungsprogramm weiter bearbeitet + werden. Zeichnungen werden also in dieser Form aufgehoben. Auch die + Sicherung von Zwischenzuständen bei größeren Zeichnungen + erfolgt in dieser Form. +<LI> LaTeX--Datei:<BR> Die LaTeX--Datei ist eine Ausgabedatei, die eine + LaTeX-Quelle darstellt, durch LaTeX übersetzt werden muß und + dann auf Papier ausgedruckt werden kann. Beim Abspeichern einer + Zeichnung können 2 Ausgabeformen für die LaTeX-Darstellung + gewählt werden: + <UL><LI> In der ersten Form wird die Zeichnung als eigenständiges + Dokument ausgegeben. Sie kann direkt mit latex übersetzt werden. + <LI> In der zweiten Form wird die Zeichnung ohne Präambel und + Postambel ausgegeben. Sie kann dann mit \ + input{<Dateiname>} direkt in ein Dokument + eingebunden werden. Im Hinblick auf spätere Änderungen in den + Zeichnungen ist dieses Einbinden einem direkten Einkopieren der + Zeichnungsdatei in das Dokument vorzuziehen. + </UL></UL> +<P> +Beide Dateien sind ASCII-Dateien. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node7.html b/support/latexdraw/doc/ltdmanual.html.g/node7.html new file mode 100644 index 0000000000..e852e99d21 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node7.html @@ -0,0 +1,36 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Fenster</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Fenster"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html100 HREF="node8.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html98 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html92 HREF="node6.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html101 HREF="node8.html"> Aufrufparameter</A> +<B>Up:</B> <A NAME=tex2html99 HREF="node4.html"> Benutzerschnittstelle</A> +<B> Previous:</B> <A NAME=tex2html93 HREF="node6.html"> Dateien</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00023000000000000000> Fenster</A></H2> +<P> +Das Format des Zeichenbereichs nach Start von LaTeXdraw entspricht dem +Seitenverhältnis bei DIN A4. Das Fenster kann beliebig in der +Größe durch den Benutzer verändert werden. +<P> +Der Bildschirm ist während des Zeichnens in folgende Bereiche +untergliedert: +<UL><LI> Das Sondermenue zur direkten Auswahl von Schriften und Farben; +<LI> das Auswahlmenue zur Wahl der Zeichenfunktionen; +<LI> die Promptzeile zur Ausgabe von Meldungen und zur Eingabe von + Texten; +<LI> der Zeichenbereich, in dem der aktuelle Ausschnitt einer + Zeichnung angezeigt wird. +</UL><BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node8.html b/support/latexdraw/doc/ltdmanual.html.g/node8.html new file mode 100644 index 0000000000..2605b4f56c --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node8.html @@ -0,0 +1,72 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Aufrufparameter</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Aufrufparameter"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html110 HREF="node9.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html108 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html102 HREF="node7.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html111 HREF="node9.html"> Maustasten</A> +<B>Up:</B> <A NAME=tex2html109 HREF="node4.html"> Benutzerschnittstelle</A> +<B> Previous:</B> <A NAME=tex2html103 HREF="node7.html"> Fenster</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00024000000000000000> Aufrufparameter</A></H2> +<P> + Das Programm wird normalerweise ohne Aufruf--Parameter gestartet. In + diesem Fall wird das Zeichenfenster im Hochformat ausgegeben. Wird + als Parameter ''-q'' oder ''-l'' angegeben, dann wird das Zeichenfenster + im Querformat (landscape) ausgegeben. Diese Darstellung des Fensters + hat keinen Einfluß auf die Formatwahl bei der LaTeX-Ausgabe! +<P> + Falls das Programm latexdraw mit der Digitizer-Option übersetzt + wurde (siehe makefile), dann kann diese durch den Aufrufparameter + ''-t'' aktiviert werden. +<P> + Für die LaTeX-Datei wird, falls diese nicht in ein anderes + Dokument eingebunden werden soll, als erste Latex-Zeile ausgegeben: + <UL><LI> der Dokumentenstil + ''\documentstyle[latexdraw]{article}'', + falls keiner der Aufrufparameter -2e oder -d angegeben wurde; + <LI> der Dokumentenstil + ''\documentclass{article}\input{latexdraw.sty}'', + falls der Aufrufparameter -2e, aber nicht der Aufrufparameter -d + angegeben wurde; + <LI> der auf -d folgende Aufruf--Parameter. + </UL> +<P> + Beispiel: +<P> + latexdraw -q -d '\[latexdraw,german]{report}\pagestyle{empty}' +<P> + stellt Querformat ein und den Dokumentenstil ''report'' mit den + Optionen ''latexdraw'' und ''german''. Außerdem wird der Stil + für die Seite auf ''empty'' gesetzt. +<P> + Falls die voreingestellte Schrift für das Menue nicht verwendet + werden soll, kann die Bezeichnung der Schrift für das Menue nach + dem optionalen Parameter -f angegeben werden, beispielsweise -f 8x13bold. +<P> + Soll der Zeichenbereich in der Größe verändert werden, dann + kann dies dynamisch durch Veränderung der Größe des Fensters + erfolgen. Die statische Voreinstellung kann durch die Option -s + gefolgt von <Breite>x<Höhe> in Pixeln beim Start verändert + werden. +<P> + Soll lediglich eine bereits vorhandene LaTeXdraw--Datei in eine + LaTeX--Datei ohne Veränderung irgendwelcher Parameter und ohne + Benutzereingriff umgewandelt werden, dann kann LaTeXdraw mit der + Option -io gefolgt von dem Namen der LaTeX--Datei und dann dem Namen + der LaTeXdraw--Datei aufgerufen werden. Die Angabe der anderen + Optionen beim Aufruf von LaTeXdraw ist möglich. Diese werden + ausgewertet. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/doc/ltdmanual.html.g/node9.html b/support/latexdraw/doc/ltdmanual.html.g/node9.html new file mode 100644 index 0000000000..cf168216b9 --- /dev/null +++ b/support/latexdraw/doc/ltdmanual.html.g/node9.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"> +<!Converted with LaTeX2HTML 95 (Thu Jan 19 1995) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds > +<HEAD> +<TITLE> Maustasten</TITLE> +</HEAD> +<BODY> +<meta name="description" value=" Maustasten"> +<meta name="keywords" value="ltdmanual.g"> +<meta name="resource-type" value="document"> +<meta name="distribution" value="global"> +<P> + <BR> <HR><A NAME=tex2html120 HREF="node10.html"><IMG ALIGN=BOTTOM ALT="next" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//next_motif.gif"></A> <A NAME=tex2html118 HREF="node4.html"><IMG ALIGN=BOTTOM ALT="up" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//up_motif.gif"></A> <A NAME=tex2html112 HREF="node8.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="/usr/wiss/siegert/packages/latex2html-95.1/icons//previous_motif.gif"></A> <BR> +<B> Next:</B> <A NAME=tex2html121 HREF="node10.html"> Gruppen von Objekten</A> +<B>Up:</B> <A NAME=tex2html119 HREF="node4.html"> Benutzerschnittstelle</A> +<B> Previous:</B> <A NAME=tex2html113 HREF="node8.html"> Aufrufparameter</A> +<BR> <HR> <P> +<H2><A NAME=SECTION00025000000000000000> Maustasten</A></H2> +<P> + Das Anklicken eines Punktes oder das Aufziehen eines + Auswahlrechtecks wird normalerweise mit der Maustaste 1 ausgeführt. + Die Maustaste 1 kann beim Anklicken eines Punktes im Zeichenfeld + auch zum Ausrichten in x- bzw. y-Richtung verwendet werden. Die + anderen Maustasten haben nur im Zusammenhang mit Menuefeldern, die + mehrere Werte annehmen können, eine Bedeutung. Die Maustaste 1 + schaltet dann aufwärts und die Maustaste 3 abwärts. +<P> + Das Ausrichten in x- bzw. y-Richtung geht wie folgt: Wird mit der + Maustaste 1 ein Punkt (x, y) angeklickt, dann wird, wie immer, + daraus zunächst ein neuer Punkt (xsnap, ysnap) bestimmt. Dieser + Punkt ist der Anklickpunkt selbst oder ergibt sich durch einrasten + (siehe 'snap') oder durch Bestimmung eines Mittelpunktes (siehe + 'mp'). +<P> + Beim Ausrichten wird ein Punkt nicht nur angeklickt, sondern bei + gedrückter Maustaste 1 wird ein Auswahlrechteck aufgezogen. Geht + die längere Seite in x--Richtung bzw. y--Richtung, dann wird der + neue Punkt mit dem früheren Punkt in x--Richtung bzw. in + y--Richtung ausgerichtet. Es wird also anstelle des Punktes (xsnap, + ysnap) der Punkt (xsnap, ylast) bzw. (xlast, ysnap) beim + Zeichenvorgang verwendet. Hierbei ist (xlast, ylast) der aus dem + letzten Anklickpunkt im Zeichenfeld bestimmte Punkt. +<P> + Das Programm erkennt die Bedeutung des Auswahlrechtecks als + wirkliches Auswahlrechteck oder als Kennzeichen des Ausrichtens + aufgrund des Kontextes selbständig. +<P> +<BR> <HR> +<P><ADDRESS> +<I>Hans-J. Siegert <BR> +Sat Jul 5 19:27:05 MEST 1997</I> +</ADDRESS> +</BODY> diff --git a/support/latexdraw/latexdraw.c b/support/latexdraw/latexdraw.c new file mode 100644 index 0000000000..66451f0aba --- /dev/null +++ b/support/latexdraw/latexdraw.c @@ -0,0 +1,10677 @@ + +/* Das Programm erlaubt das Erstellen von Zeichnungen */ +/* fuer LaTeX. Notwendig ist hierzu latexdraw.sty mit */ +/* den darin aufgerufenen sty-Dateien */ +/* interner Koordinatenursprung fuer Zeichnung und Menue */ +/* links unten am Schirm. */ +/* Weiteres in der Beschreibung latexdraw.tex */ +/* Stand 09.05.1999, copyright: H.-J. Siegert, TUM */ +/* nichtkommerzielle Nutzung F&L Hochschulen erlaubt */ +/* gegen Stand v. 19.03.1999 undelete ->UnDelete */ +/* gegen Stand v. 23.08.1998 STDIN ueber thread */ +/* gegen Stand v. 22.08.1998 Dateiname im Window-Namen */ +/* gegen Stand v. 12.04.1998 eigene cmap, wenn noetig */ +/* gegen Stand v. 28.10.1997 cast bei wi in rotate */ +/* gegen Stand v. 02.08.1997 erweitert fuer read von stdin */ +/* gegen Stand v. 17.06.1997 dgrenz Faktor 0.3 statt 0.5 */ +/* gegen Stand v. 19.03.1997 groessere Differenz beim */ +/* Ausrichten vertikale, horizontale Linien */ +/* gegen Stand v. 03.02.1997 kein snap bei fill */ +/* neue Abstandsberechnungen */ +/* gegen Stand v. 11.01.1997 bei Kuerzung wg Pfeilen wird */ +/* nicht mehr TeX-Definition der Winkel verwendet */ +/* gegen Stand v. 24.12.1996 alle Elemente gezeichnet bei */ +/* blinken, Abstandsmodifikation unterschiedlich bei */ +/* Selektion gefuellter und nichtgefuellter Elemente */ +/* gegen Stand v. 20.10.1996 Fehler bei Ausgabe Rechteck */ +/* gegen Stand v. 17.09.1996 Fehler in Pfeilen bei Boegen */ +/* gegen Stand v. 16.09.1996 Abfrage der Attribute m"oglich */ +/* gegen Stand v. 17.08.1996 Fehler in LaTeX-Datei bei */ +/* Pieslice (Klammer zu viel) */ +/* gegen Stand v. 27.07.1996 ^k bei Zeicheneingabe */ +/* gegen Stand v. 22.07.1996 ifdef XK_KP_... */ +/* autom. Erzeugung LaTeX-Datei ohne Oeffnung Fenster */ +/* (Parameter -io beim Aufruf) */ +/* gegen Stand v. 16.05.1996 Ausgabe Linien gepunktet, */ +/* strichpunktiert neue Form; LdpArc, LdpEllarc und */ +/* LdpBezier mit verkuerzten Boegen wegen Pfeilen! */ +/* gegen Stand v. 25.12.1995 auch Cursortasten v. Keypad */ +/* gegen Stand v. 19.06.1995 Menuefont ist Option */ +/* gegen Stand v. 12.06.1995 bessere Pfeilspitzen */ +/* gegen Stand v. 02.06.1995 usleep wg. Linux umbenannt */ +/* gegen Stand v. 13.05.1995 Fehler in Darstellung Bezier */ +/* gegen Stand v. 27.04.1995 weitere Farben, Bezier gefuellt*/ +/* Entkopplung Farbnummer und Anordnung Farbe im Menue */ +/* autom. Anordnung Farben im Menue */ +/* gegen Stand v. 26.04.1995 Fehler bei Texteingabe */ +/* gegen Stand v. 15.04.1995 Korrektur Auswahlrechteck cut, */ +/* statt ires,fres static, Fehler in trim und connect */ +/* bei Verschieben dazwischen */ +/* gegen Stand v. 07.04.1995 Korrektur chatt bei Text */ +/* gegen Stand v. 05.04.1995 Digitalisiertablett */ +/* gegen Stand v. 02.04.1995 auch Anklickpunkt bei connect */ +/* gegen Stand v. 22.03.1995 rot, CapProjecting */ +/* gegen Stand v. 19.03.1995 Lesen Versionen < 4.0 */ +/* gegen Stand v. 02.03.1995 Laenge Text unabhaengig von */ +/* der Fensterbreite */ +/* gegen Stand v. 26.02.1995 Fehler bei Abbruch Text */ +/* korrigiert, Textposition in chatt aufgenommen */ +/* gegen Stand v. 31.01.1995 laengerer Eingabestring */ +/* gegen Stand v. 29.01.1995 Fehler in selekt. chatt behoben*/ +/* gegen Stand v. 04.01.1995 Selektives chatt,Aufruf-Param. */ +/* gegen Stand v. 31.12.1994 Grauwerte bei Monochromschirm */ +/* gegen Stand v. 30.09.1994 Andere Berechnung Bezier */ +/* gegen Stand v. 21.09.1994 Anordnung Menue */ +/* gegen Stand v. 17.09.1994 trim fuer Recht-,Drei-,Viereck */ +/* gegen Stand v. 12.09.1994 Auswahlrechteck bei newgroup */ +/* gegen Stand v. 20.08.1994 andere Blinkzeiten */ +/* gegen Stand v. 17.08.1994 connect mit allen Elementen */ +/* gegen Stand v. 28.07.1994 Realisierung von Gruppen */ +/* gegen Stand v. 24.07.1994 undo bei loeschen d. backspace */ +/* blinken ausgewaehlter Elemente bei mcopy mmove */ +/* gegen Stand v. 02.07.1994 Ausrichten Punkte in x oder y */ +/* gegen Stand v. 18.06.1994 XSetInputFocus und ^a,^e */ +/* gegen Stand v. 06.06.1994 fuellen vorhandener Elemente */ +/* gegen Stand v. 02.05.1994 neben up auch down */ +/* gegen Stand v. 15.04.1994 Gerade mit Pfeilen st"arker */ +/* eingekuerzt */ +/* gegen Stand v. 08.04.1994 gespeicherte Ausgabeoptionen */ +/* und neue Makros aLdPfeil,eLdPfeil und LdpLine */ +/* gegen Stand v. 22.3.1994 uralte Versionsnummern mit CV */ +/* werden richtig erkannt */ +/* gegen Stand v. 18.03.94 Darstellung Text, der editiert */ +/* wird, an alter Position vermeiden */ +/* gegen Stand v. 11.03.94 Rundung korrigiert */ +/* gegen Stand v. 28.01.94 Gitterwerte werden ausgegeben */ +/* gegen Stand v. 22.01.94 parallele Linie kippt nicht */ +/* gegen Stand v. 20.01.94 Cursortasten bewegen Bild, */ +/* gegen Stand v. 27.11.93 Erweiterung extend auf Boegen, */ +/* redraw, */ +/* gegen Stand v. 01.11.93 Verbesserung minmax-Berechnung */ +/* gegen Stand v. 23.9.93 Definition documentstyle moeglich */ +/* gegen Stand v. 23.08.1993 Farben neu definiert */ +/* gegen Stand v. 10.8.93 bezier Linientyp variabel */ +/* gegen Stand v. 3.7.93 gefuellte Segmente */ +/* gegen Stand v. 18.5.92 Aenderung bei pbezabstand */ +/* gegen Stand v. 20.12.1992 vorwaerts/rueckwaerts Taste 3, */ +/* xend, yend fuer umgebendes Rechteck andersartig bestimmt */ +/* farbige Zeichnungelemente */ +/* email: siegert@informatik.tu-muenchen.dbp.de */ + + +#include <Xlib.h> +#include <Xutil.h> +#include <Xos.h> +#include <X.h> +#include <keysym.h> +#include <keysymdef.h> +#include <Xresource.h> +#include <cursorfont.h> + +#include <stdio.h> +#include <bitmaps/icon> +#include <ctype.h> +#include <math.h> +#include <setjmp.h> +#include <assert.h> +#include <string.h> +/*#include <strings.h>*/ +/*# include <sys/types.h>*/ + +#ifdef THREAD +#include <pthread.h> +#endif + +#ifdef TABLETT +#include "digitizer.h" +#endif + +#define Char char /* Characters (not bytes) */ +#define Static static /* Private global funcs and vars */ +#define Void void +#define siintround(a) (long) (a) /* Rundung bei double nach long */ + +#define boolean long +#define cboolean char +#define true 1L +#define false 0L +#define unbekannt -1 +#ifdef TABLETT +#define window_name "LaTeXdraw (Siegert, TUM, C15.29)Digi" +#endif +#ifndef TABLETT +#define window_name "LaTeXdraw (Siegert, TUM, C15.29)" +#endif +#define icon_name "latexdraw" +#define intfiletext "LaTeXdraw output file:" +#define extfiletext "LaTeX output file:" +#define zel 5000 /*Anzahl Zeichnungselemente*/ +#define zstr 300 /*Anzahl Stringelemente*/ +#define maxldicke 20 /*Liniendicke 1..20 vorhanden */ + +#define xzmax00 552.0 /*Window-Zeichenbereichbreite x*/ +#define yzmax00 760.0 ; /*Window-Hoehe, Zeichenbereichhoehe y*/ +#define xfont "8x13bold" /* Windowfont Menue, Prompt*/ +#define ersatzfont "8x13" /* Ersatz, falls Textfont fehlt*/ +#define ztextfonts 19 /* Zahl Fonts fuer Text in Zeichnung */ + /* Fonts in inittextfonts definiert */ +#define dminein 3.0 /*minimale Laengen bei der Eingabe*/ + +#define pi 3.141592653 +#define einrueck " " /*einruecken in TEX*/ +#define kom "," +#define blank " " + +#define verlline 30.0 +#define texfaktorv 0.3 /*1 pixel = texfaktor mm, Voreinstellung!*/ + +#define maxpunkte 1000 +#define maxstrl 123 /* maximale Stringlaenge */ +#define maxgruppen 500 /* maximale Anzahl Gruppen */ + +#define zrequw 5 /* Zahl der gleichzeitigen Requestwindows */ +#define prxachse " end point x axis?" +#define pryachse " end point y axis?" +#define pranfwi " beginning of arc?" +#define prendwi " end of arc?" +#define prendwisektor " end of arc for next sector?" +#define prpoint3 " point 3?" +#define prpoint4 " point 4?" +#define docstylestd "\\documentstyle[latexdraw]{article}" +#define docstyle2e "\\documentclass{article}\\input{latexdraw.sty}" + +#define wg 3600.0 +#define wh 1800.0 +#define wv 900.0 +#define wdv 2700.0 +#define initabstand 300000.0 +#define maxabstand 10.0 +/* Umrechnung Linienstaerke in pts */ +#define lw2pt 0.57 + + +/* Definitionen fuer Suchen von ausgewaehlten Elementen */ +/* Wird auch in array suchtypok[][] verwendet */ +#define alleelem 0 +#define nurtrimel 1 +#define nurboundel 2 +#define nurgerade 3 +#define nurmpel 4 +#define nurextendel 5 +#define nurfillel 6 + + +#define schwarz 0L +#define weiss 1L +#define maxzahlfarben 100L +#define paint 1L +#define erase 0L +#define maxlenmenfarbe 9L +#define maxlenfarbe 20L +#define somenspalten 3L + +#define tastatur_erwartet 1 +#define click_erwartet 2 +#define phase2 10 + +#ifndef XK_KP_Left +#define XK_KP_Left XK_Left +#define XK_KP_Right XK_Right +#define XK_KP_Up XK_Up +#define XK_KP_Down XK_Down +#endif + +#define tastecursleft1 XK_Left +#define tastecursright1 XK_Right +#define tastecursup1 XK_Up +#define tastecursdown1 XK_Down + +#define tastecursleft2 XK_KP_Left +#define tastecursright2 XK_KP_Right +#define tastecursup2 XK_KP_Up +#define tastecursdown2 XK_KP_Down + +#define tastea XK_a +#define tasted XK_d +#define tastee XK_e +#define tastek XK_k +#define tasteplus1 XK_plus +#define tasteplus2 XK_KP_Add +#define tasteminus1 XK_minus +#define tasteminus2 XK_KP_Subtract +#define tastedelete XK_Delete +#define tastebackspace XK_BackSpace +#define tastereturn XK_Return +#define tastecontroll XK_Control_L +#define tastecontrolr XK_Control_R +#define tasteundo XK_Undo +#define button1 1 +#define button2 2 +#define button3 3 +#define ttext 2 /*elementtypen*/ +#define tgerade 3 +#define tkreis 5 +#define tkreisgef 6 +#define tkreisbogen 7 +#define tell 8 +#define tellgef 9 +#define tellbogen 10 +#define trechteckgef 11 +#define tbezier 12 +#define tdreieckgef 13 +#define tviereckgef 14 +#define tkreissektorgef 15 +#define tellsektorgef 16 +#define tbeziergef 17 + +#define mende 1 /*menue_nummern*/ +#define mtext 2 +#define mgerade 3 +#define mkreis 4 +#define mell 5 +#define mrechteck 6 +#define mbezier 7 +#define mpolygon 8 +#define mspiegeln 9 +#define mkopieren 10 +#define mbewegen 11 +#define mergaenzen 12 +#define mausdehnen 13 +#define mbrechen 14 +#define mloeschen 15 +#define meinrasten 16 +#define mgefuellt 17 +#define mverbunden 17 +#define mbogen 18 +#define mparallel 19 +#define mlot 20 +#define mmittelpunkt 21 +#define mpfeilanf 22 +#define mpfeilende 23 +#define mdick 24 +#define mgestrichelt 25 +#define mgepunktet 26 +#define mlschieben 27 +#define moschieben 28 +#define muschieben 29 +#define mrschieben 30 +#define mgitter 31 +#define mcenter 32 +#define mgross 33 +#define mklein 34 +#define mxytastatur 35 +#define msave 36 +#define mkopbewmaus 37 +#define mredraw 38 +#define mltext 39 +#define mrtext 40 +#define mbtext 41 +#define mttext 42 +#define mladen 43 +#define mfont 44 +#define mcut 45 +#define mpaste 46 +#define mdreieck 47 +#define mcolor 48 +#define mviereck 49 +#define mup 50 +#define mchangelineattr 51 +#define mdegrees 52 +#define mdown 53 +#define mfill 54 +#define mgroupmode 55 +#define mnewgroup 56 +#define mungroup 57 +#define mshowgroup 58 +#define mgroupok 59 +#define mconnect 60 +#define mconnxy 61 +#define mconnyx 62 +#define mrot 63 +#define mwinkelrot 64 +#define mcapprojecting 65 +#define mconnpoint 66 +#define mqueryattr 67 +#define mread 68 +#define mreadzeit 69 +#define zmenue 69 + + +typedef Char tmenue[zmenue+1][maxstrl+1]; +typedef double telr[zel+1]; +typedef long teli[zel+1]; +typedef cboolean telb[zel+1]; +typedef Char tstr[zstr+1][maxstrl+1]; +typedef double tpunkte[6]; + +typedef struct tbezierkoeff { + double ax, bx, cx, dx, dreiax, zweibx, ay, by, cy, dy, dreiay, zweiby; +} tbezierkoeff; + +typedef double terg[5]; + + +Static long zelmax; +Static double xanf,yanf,xend,yend,xsnap,ysnap,xprompt,yprompt; +Static double xlast,ylast; +Static int irootx, irooty, iwinx, iwiny, ixzmax,iyzmax; +unsigned int keysbuttons; +Static double xzmax0,yzmax0,xzmax,yzmax,xgr,xgrf, + kaestchenbreite,kaestchenhoehe; + +Static double curs_x,curs_y; +Static double fgradbo, fbograd, texfaktor,version; +Static boolean zeichnen; +Static double texdashl, texdotg, texinterd, gridw, gridw0, gridx0, gridy0, + gridwx1, gridwy1, gridwx2, gridwy2, xmittelzei, ymittelzei; +Static long ltype, lwidth, lends; +Static Char dateiname[maxstrl+1],texdateiname[maxstrl+1]; +Static FILE *datdeskr; +Static double xmarker[5], ymarker[5]; +Static boolean bmarker[5]; +Static Char pr1[maxstrl+1], pr2[maxstrl+1], pr3[maxstrl+1], + pr4[maxstrl+1], pr5[maxstrl+1], pr6[maxstrl+1]; +Static Char tpr1res[maxstrl+1], tpr2res[maxstrl+1], + tpr3res[maxstrl+1], tpr4res[maxstrl+1]; +Static Char EinText[maxstrl+1]; +Static Char nullstr[maxstrl+1]; +Static Char docstyle[maxstrl+1]; + +Static tmenue menue, pr2menue, pr3menue; +Static double xam[zmenue + 1], yam[zmenue + 1], xem[zmenue + 1], + yem[zmenue + 1]; +Static boolean selmenue[zmenue + 1]; +Static long radiogroup[zmenue + 1]; +Static double rpxarray[maxpunkte], rpyarray[maxpunkte]; +Static long vater[maxgruppen+1], umbenennung[maxgruppen+1]; +long grumax; /*Maximalzahl aktueller Gruppen*/ +Static cboolean gruppentag[maxgruppen+1]; +Static boolean aenderunggruppen; +Static teli typ, sequenz, group; +Static telb blink, blinkalt; +Static telr x1, y1_, x2, y2, xb1, yb1, xb2, yb2, wanf, wend; +Static telr elxmin, elxmax, elymin, elymax; +Static teli lineende, linedicke, linetype; +Static telr laenge1, laenge2, rotwi, crw, srw; +Static teli textno; +Static tstr texte; +Static long blinkend, blinkfarbe; /* blinkfarbe == paint oder erase */ +Static long blinkintervallzaehler; +struct timeval st_delay; +Static long winkelrotate; +Static boolean changelende, changelstyle, changelwidth, changecolor; +Static boolean changefont, changeposition; +Static Char textausrichtung[9][maxstrl+1]; +Static double wzeichenhoehe,wzeichenascent,wzeichendescent, wzeichenbreite; +Static double textzeichenhoehe[ztextfonts],textzeichenascent[ztextfonts], + textzeichenbreite[ztextfonts]; +Static Char textfont[ztextfonts][maxstrl+1], + textfontmakro[ztextfonts][maxstrl+1], + textfontlabel[ztextfonts][maxstrl+1], + menuefont[maxstrl+1]; +Static long fontnummer, stdfontnummer, + folgefont[ztextfonts], prevfont[ztextfonts]; +Static long aktldicke; +Static double breite, hoehe, nbreite, nhoehe; +Static boolean quer0format,querformat,mitvorspann,nmitvorspann,oldunitlength; +Static long phase=0;/* fuer mehrere verbundene Aktionen */ +Static long phasexyein; +Static long erwartet, winerwartet, koordinateneingegeben; +Static long texterase; +Static long controlan; +Static long tposres, export_kmark, export_relsel, import_zelsel; +Static long geoeffnet, dragbox; +Static XEvent report; +Static Char eingabezeile[maxstrl+1]; +Static long aktreadzeit, readphase = 0; +Static double readdxx,readdyy,readf; +#ifdef THREAD +Static pthread_t threadID; +#ifdef LINUX +#define pthread_attr_default NULL +#endif +#endif + +Static long threadausel=0, threadaktiv, threadrunning = 0; +Static Time requesttime, lasteventtime; +Static boolean wartendexport, requestbelegt[zrequw], requestaktiv[zrequw]; +Static boolean tablett; /*true falls Digitizer angeschlossen */ +Static boolean nur_texausgabe; +Static XSelectionEvent selnotify[zrequw]; +Static Atom latexdraw_object, latexdraw_text, latexdraw_selection; +Static long requestkakt[zrequw]; +Static Colormap cmap; +Static XColor rgbistdef[maxzahlfarben]; +Static char farbname[maxzahlfarben][maxlenfarbe+1]; +Static char menfarbname[maxzahlfarben][maxlenmenfarbe+1]; +Static long farbposfarbnr[maxzahlfarben],farbnrfarbpos[maxzahlfarben]; +Static long aktzahlfarben; +Static long aktcolor,letztesgrau,aktposcolor; +Static Pixmap graystipple[9]; +Static char graybits[10][2] ={{0x04,0x00},{0x04,0x10},{0x12,0x48},{0x52,0x58}, + {0x5a,0x52}, + {0xad,0xa7},{0xed,0xb7},{0xfb,0xe7},{0xfb,0xef}, + {0xff, 0xff}}; + +/*fuer Grauwerte der Farben */ +#define hcolorbits 16 /* Hoehe colorstipple in Pixels */ +#define bcolorbits 16 /* Breite colorstipple in Pixels */ +Static char colorbits[hcolorbits*bcolorbits/8+1]; +Static Pixmap colorstipple[maxzahlfarben]; /*fuer Grauwerte der Farben */ +Static boolean nocolors; + +Static double intensity[maxzahlfarben]; /* Helligkeit */ +Static GC gcinverse, gcxor,gcstd, somengctext[ztextfonts], + gctext[ztextfonts], gczeichnung; +Static Visual *visual; +Static char winname[maxstrl+1]; +Static border_width=4; +Static XSizeHints size_hints; +Static XFontStruct *font_info, *text_font_info[ztextfonts]; +Static char *display_name = NULL; +Static Display *display; +Static Cursor busycursor,textcursor,clickcursor; +Static long screen; +Static Window win, rootwin, childwin; +Static XComposeStatus compose; +Static KeySym keysym; +Static Pixmap pixmap; +Static long button1gedrueckt, button2gedrueckt, button3gedrueckt; + +Static char symstr[maxstrl+1]; + +/* Feld, das angibt, ob ein Zeichnungselemettyp (1. Parameter) bei */ +/* einem bestimmten Suchvorgang (z.B. nurtrimel, 2. Parameter) */ +/* beruecksichtigt werden soll. ja = 'y', nein = 'n' */ +/* alleelem,nurtrimel,nurboundel,nurgerade,nurmpel,nurextendel,nurfillel */ + +Static char suchtypok[18][7]={ + {'n', 'n', 'n', 'n', 'n', 'n', 'n'}, /*frei*/ + {'n', 'n', 'n', 'n', 'n', 'n', 'n'}, /*frei*/ + {'y', 'n', 'n', 'n', 'n', 'n', 'n'}, /*ttext*/ + {'y', 'y', 'y', 'y', 'y', 'y', 'y'}, /*tgerade*/ + {'n', 'n', 'n', 'n', 'n', 'n', 'n'}, /*frei*/ + {'y', 'y', 'y', 'n', 'y', 'n', 'y'}, /*tkreis*/ + {'y', 'y', 'y', 'n', 'y', 'n', 'n'}, /*tkreisgef*/ + {'y', 'y', 'y', 'n', 'y', 'y', 'y'}, /*tkreisbogen*/ + {'y', 'y', 'y', 'n', 'y', 'n', 'y'}, /*tell*/ + {'y', 'y', 'y', 'n', 'y', 'n', 'n'}, /*tellgef*/ + {'y', 'y', 'y', 'n', 'y', 'y', 'y'}, /*tellbogen*/ + {'y', 'n', 'y', 'n', 'y', 'n', 'n'}, /*trechteckgef*/ + {'y', 'n', 'n', 'n', 'n', 'n', 'y'}, /*tbezier*/ + {'y', 'n', 'y', 'n', 'y', 'n', 'n'}, /*tdreieckgef*/ + {'y', 'n', 'y', 'n', 'n', 'n', 'n'}, /*tviereckgef*/ + {'y', 'y', 'y', 'n', 'y', 'y', 'n'}, /*tkreissektorgef*/ + {'y', 'y', 'y', 'n', 'y', 'y', 'n'}, /*tellsektorgef*/ + {'y', 'n', 'n', 'n', 'n', 'n', 'n'}, /*tbeziergef*/ +}; + + + +Static void test(i) +{ +printf("******test#: %ld\n",i); +} + +Static Void konkat(s, s1, s2) +Char *s1, *s2, *s; +/* Konkatenation von strings s1 und s2 */ +{ + long i,n1,n2; + + n1 = strlen(s1); + n2 = strlen(s2); + for(i=0;i<=n1;i++) + s[i]=s1[i]; + for(i=0;i<=n2;i++) + s[n1+i]=s2[i]; +} + + +Static double frand() +{ /* einfacher Zufallszahlengenerator aus 0...1*/ + static long seed=314159267; + double xx; + + seed=69069*seed; + xx = seed; + xx = xx/4294967296.0+0.5; + if (xx<0.0) xx = 0.0; + if(xx>=1.0) xx = 0.99; + return xx; +} + + +Static Void strfirst(namestring,anz) + Char *namestring; + long anz; +/* anz=Anzahl Zeichen, die bleiben */ +{ + long ls; + ls=strlen(namestring); + if (ls==0) return; + if (anz >=ls) return; + if (anz <0) anz=0; + namestring[anz]='\0'; +} + +Static Void strlast(namestring,anz) + Char *namestring; + long anz; +/* anz=Anzahl Zeichen, die wegfallen*/ +{ + long i,ls; + ls=strlen(namestring); + if (anz>=ls) { + strcpy(namestring,nullstr); + return; + } + if (anz<=0) return; + for (i=anz;i<=ls;i++){ + namestring[i-anz]=namestring[i]; + } +} + +Static Void strinsert(c,nstring,pos) + Char *c, *nstring; + long pos; +/* fuege c als pos-tes Zeichen (Index: pos - 1) in nstring ein*/ +{ + long i,n,index; + + n=strlen(nstring); + index=pos-1; + if (index > n) index = n; + for (i=n;i>=index;i--) + nstring[i+1]=nstring[i]; + nstring[index] = *c; +} + +Static Void strdelete(nstring,pos) + Char *nstring; + long pos; +/*loesche pos-tes Zeichen (Index: pos - 1) in nstring*/ +{ + long i,n,index; + + n=strlen(nstring); + index=pos-1; + for (i=index;i<n;i++) + nstring[i]=nstring[i+1]; +} + +Static Void substringcpy(s,ss,anfpos,zahlzeichen) + Char *s, *ss; + long anfpos,zahlzeichen; + /* substring aus ss mit vorgegebener Anzahl von Zeichen ab der */ + /* Position anfpos (erste Position ist 0!) nach s uebertragen */ +{ + long apos, ls, i, n; + + apos = anfpos; + if (anfpos < 0) + apos = 0; + ls = strlen(ss)-apos; + if (ls > zahlzeichen) + ls = zahlzeichen; + for (i=0;i<ls;i++) + s[i] = ss[i+apos]; + s[ls] = '\0'; +} + + + +Static Void trenneextension(s) +Char *s; +/* Extension von Dateinamen trennen */ +{ + long i,n; + n=strlen(s)-1; + if (n<0) return; + for (i=n;i>0;i--) { /* i>0 wegen Punkt am Anfang */ + if (s[i] == '/') return; + if (s[i] == '.') { + s[i]='\0'; + return; + } + } +} + + +Static boolean strvergl(s1,s2) + Char *s1,*s2; +{ + long ls,i; + if ((ls=strlen(s1))!=strlen(s2)) return false; + for (i=0;i<ls;i++){ if (s1[i]!=s2[i]) return false;} + return true; +} + +Static boolean istnullstr(s1) + Char *s1; +{ + if (*s1==*nullstr) return true; + else return false; +} + +Static void protokoll(s1,s2) +Char *s1,*s2; +{ +printf("%s%s\n",s1,s2); +} + +Static long rgb2hsv2ordnung(r,g,b,skalierung) +long r,g,b,skalierung; /* 0..skalierung*/ +{ /* Berechnung der Reihenfolge der Farben im Menue nach dem */ + /* hsv-Modell mit vier Gruppierungen */ + + long ordnung,max,min,diff; + double h,s,v,rdist,gdist,bdist; + /* hsv = hue saturation value */ + max = r; + if (g > max) max = g; + if (b > max) max = b; + min = r; + if (g < min) min = g; + if (b < min) min = b; + diff = max - min; + v = 1.0*max/skalierung; + if ((max ==0)||(diff==0)) { /*Grauwerte */ + ordnung = 100.0*(1.0-v); + if (v==0.0) ordnung = 0L; /* schwarz */ + if (v==1.0) ordnung = 1L; /* weiss */ + return ordnung; + } + s = 1.0*diff/max; + rdist = 1.0*(max-r)/diff; + gdist = 1.0*(max-g)/diff; + bdist = 1.0*(max-b)/diff; + if (b==max) h = 4.0+gdist-rdist; + if (g==max) h = 2.0+rdist-bdist; + if (r==max) h = bdist-gdist; + h = h/6.0; + if (h < 0.0) h += 1.0; + ordnung = 4; /* light, hell*/ + if ((s>=0.3)&&(v>0.81)) ordnung = 3; /* pale,hell */ + if ((s>=0.7)&&(v>0.81)) ordnung = 1; /* gesaettigt, hell */ + if (v<=0.81) ordnung = 2; /* dunkle Farben */ + ordnung = 1000.0*(ordnung+h); + ordnung = 100.0*(ordnung+(1.0-v)); + ordnung = 100.0*(ordnung+(1.0-s)); + return ordnung; +/* Anmerkung: ordnung steht zunaechst in farbposfarbnr[nr] */ +} + +Static Void reihenfolgefarben() +{/* Anordnung der Farben gemaess Ordungskriterium in farbposfarbnr[nr]*/ + /* farbposfarbnr und farbnrfarbpos besetzen */ + + long i,j,nr,nrtmp,postmp; + + for (nr=0;nr<aktzahlfarben;nr++) farbnrfarbpos[nr]=nr; + /* jetzt nach ordnung aus rgb2hsv2ordnung sortieren */ + for (i=0;i<aktzahlfarben;i++) { + for (j=aktzahlfarben-1;j>i;j--) { + if (farbposfarbnr[j] < farbposfarbnr[i]) { + postmp = farbnrfarbpos[i]; + nrtmp = farbposfarbnr[i]; + farbnrfarbpos[i] = farbnrfarbpos[j]; + farbnrfarbpos[j] = postmp; + farbposfarbnr[i] = farbposfarbnr[j]; + farbposfarbnr[j] = nrtmp; + } + } + } + for (nr=0;nr<aktzahlfarben;nr++) + farbposfarbnr[farbnrfarbpos[nr]] = nr; +} + +Static long schreibenausdatei(); +Static Void berechneminmax(); + +Static Void fehler(i) +long i; +{ Char name[maxstrl+1]; long taste, phase, msel; + taste=1; phase=0; msel = mende; + strcpy(name, "?"); + switch (i) { + case 1: + strcpy(name, "too many objects"); + break; + case 2: + strcpy(name, "too many text objects"); + break; + case 3: + strcpy(name, "too many objects in input file"); + break; + case 4: + strcpy(name, "too many points for bezier object"); + break; + case 5: + strcpy(name, "negative sqrt"); + break; + case 6: + strcpy(name, "can't connect to X-Server"); + konkat(name,name, XDisplayName(display_name)); + break; + case 7: + strcpy(name,"can't load window font"); + break; + case 8: + strcpy(name,"can't load text font"); + break; + case 9: + strcpy(name,"mismatch in number of text fonts"); + break; + case 10: + strcpy(name,"sort, last element not free"); + break; + case 11: + strcpy(name,"definition groups in input file not ok, type == 0"); + break; + case 12: + strcpy(name,"definition groups in input file not ok, element# wrong"); + break; + case 13: + strcpy(name,"definition groups in input file not ok, group# wrong"); + break; + case 14: + strcpy(name,"definition groups in input file not ok, node# wrong"); + break; + case 15: + strcpy(name,"definition groups in input file not ok, fathernode# wrong"); + break; + case 16: + strcpy(name,"definition groups in input file not ok"); + break; + case 17: + strcpy(name,"not enough groups available"); + break; + case 18: + strcpy(name,"couldn't connect to digitizer"); + }/*case*/ + protokoll("******error******: ", name); + phase=schreibenausdatei(&msel,"error.epc",taste, phase); + exit(-1); +} + + +Static int myerrorhandler(display,error) +Display *display; +XErrorEvent *error; +{ + char msg[100]; + XGetErrorText(display, error->error_code,msg,100); + protokoll("warning XError: ",msg); + return 0; +} + +Static Void readzeitsymbol() +{ + Char sss[10]; + sprintf(sss,"d:%lds",aktreadzeit); + strcpy(menue[mreadzeit],sss); +} + + +Static Void strichsymbol() +{ + Char sss[10]; + sprintf(sss,"=%2ld",aktldicke); + strcpy(menue[mdick],sss); +} + +Static Void colorsymbol() +{ + Char sss[maxlenmenfarbe+5]; + sprintf(sss,"%2ld:%s",aktcolor,menfarbname[aktcolor]); + strcpy(menue[mcolor],sss); +} + +Static long tastegedrueckt() + { + unsigned long mask; + mask=KeyPressMask|KeyReleaseMask; + if(XCheckWindowEvent(display,win,mask,&report)==true) return 1; + else return 0; + } + + +Static Void welt_to_bildschirm(xx, yy, xpix, ypix) +double xx, yy; +long *xpix, *ypix; +/* Umrechnung Punkt (xx,yy) in Bildschirmkoordinaten */ +{ + + *xpix = siintround(xx); + *ypix = siintround(yzmax - yy); +} + +Static Void getweltkoord(xx, yy) +double *xx, *yy; + +/* Punkt in event report in weltkoord umrechnen */ +{ + long ix,iy; + +#ifdef TABLETT + if ( (tablett) && (report.xany.send_event)) + translate_x_to_ltd(report.xbutton.x, report.xbutton.y, xx, yy); + else +#endif + { + ix=report.xbutton.x; + *xx = ix; + iy=iyzmax - report.xbutton.y; + *yy= iy; + } +} + +Static Void getmotionweltkoord(ix, iy, xx, yy) +long ix, iy; +double *xx, *yy; + +/* Punkt ix, iy in weltkoord umrechnen */ +{ + *xx = ix; + *yy= (iyzmax - iy); +} + +Static long si_iabs(x) +long x; +/* Absolutwert ganze Zahl */ +{ if (x < 0) + return (-x); + else return x; +} + +Static Void rechteckbildschirmkoord(x1,y1,x2,y2,ix,iy,width,height) + double x1,y1,x2,y2; + long *ix,*iy,*width,*height; +/* Bestimmen Bildschirm-Koordinaten Rechteck */ +{ long ix2,iy2; + welt_to_bildschirm(x1,y1,ix,iy); + welt_to_bildschirm(x2,y2,&ix2,&iy2); + *width= si_iabs(ix2-*ix); + *height= si_iabs(iy2-*iy); + if (*ix > ix2) *ix=ix2; + if (*iy > iy2) *iy=iy2; +} + +Static Void setcolor(display,gc,zcolor) + Display *display; + GC gc; + long zcolor; +{ + XSetBackground(display,gc,rgbistdef[weiss].pixel); + if ((zcolor==weiss) || (zcolor==schwarz)) { + XSetFillStyle(display,gc,FillSolid); + XSetForeground(display,gc,rgbistdef[zcolor].pixel); + return; + } + if ((zcolor >= aktzahlfarben)||(zcolor <0)) { + XSetFillStyle(display,gc,FillSolid); + XSetForeground(display,gc,rgbistdef[schwarz].pixel); + return; + } + if (zcolor <= letztesgrau) {/* graustufen */ + XSetFillStyle(display,gc,FillOpaqueStippled); + XSetStipple(display,gc,graystipple[zcolor-2]); + XSetForeground(display,gc,rgbistdef[schwarz].pixel); + return; + } + if (nocolors == false) { + XSetFillStyle(display,gc,FillSolid); + XSetForeground(display,gc,rgbistdef[zcolor].pixel); + } + else { + XSetFillStyle(display,gc,FillOpaqueStippled); + XSetStipple(display,gc,colorstipple[zcolor]); + XSetForeground(display,gc,rgbistdef[zcolor].pixel); + } +} + +Static Void rechteckinverse(x1,y1,x2,y2) + double x1,y1,x2,y2; +{ + long ix,iy,width,height; + rechteckbildschirmkoord(x1,y1,x2,y2,&ix,&iy,&width,&height); + XFillRectangle(display,win,gcinverse,ix,iy,width,height); +} + + +Static Void xorrechteck(x1,y1,x2,y2) + double x1,y1,x2,y2; +{ + long ix,iy,width,height; + rechteckbildschirmkoord(x1,y1,x2,y2,&ix,&iy,&width,&height); + if ((width<5) && (height<5)) return; + if (width<5) width=1; + if (height<5) height=1; + if (x1 < xgr) return; + if (x2 < xgr) return; + XDrawRectangle(display,win,gcinverse,ix,iy,width,height); +} + +Static Void menuerechteck(x1,y1,x2,y2) + double x1,y1,x2,y2; +{ + long ix,iy,width,height; + rechteckbildschirmkoord(x1,y1,x2,y2,&ix,&iy,&width,&height); + setcolor(display,gcstd,schwarz); + XDrawRectangle(display,win,gcstd,ix,iy,width,height); +} + + +Static Void setvalues(display,gc,zcolor,line_type,lwidth,lende) + Display *display; + GC gc; + long zcolor,line_type,lwidth,lende; + +{long line_style,cap_style,lw; + double grunddash, grunddot; + long dashlist_length; + char dashlist[10]; + + + lw = 0.7*lwidth; + grunddash = 1.6*lw; + if (grunddash <= 3.0) + grunddash = 4.0; + grunddot = lw; + if (grunddot <= 3.0) + grunddot = 2.0; + else + grunddot = 1.0; + if (lende == 4) + cap_style = CapProjecting; + else + cap_style = CapButt; + if (line_type < 2) line_style=LineSolid; + else { + if (lw > 3) + cap_style = CapRound; + else + cap_style = CapButt; + line_style=LineOnOffDash; + dashlist_length = 2; + switch (line_type) { + case 3: /* gepunktet */ + dashlist_length = 2; + dashlist[0]=grunddot; + dashlist[1]=grunddash; + break; + case 5: /* gestrichelt */ + dashlist_length = 2; + dashlist[0]=2.0*grunddash; + dashlist[1]=grunddash; + break; + case 6: /* Textlinie */ + dashlist_length = 6; + dashlist[0]=4; + dashlist[1]=3; + dashlist[2]=2; + dashlist[3]=2; + dashlist[4]=2; + dashlist[5]=3; + break; + case 7: /* strichpunktiert */ + dashlist_length = 4; + dashlist[0]=2.0*grunddash; + dashlist[1]=grunddash; + dashlist[2]=grunddot; + dashlist[3]=grunddash; + break; + default: /*nicht definierte Faelle */ + dashlist_length = 6; + dashlist[0]=2; + dashlist[1]=2; + dashlist[2]=2; + dashlist[3]=2; + dashlist[4]=2; + dashlist[5]=5; + } + XSetDashes(display,gc,0,dashlist,dashlist_length); + } + XSetLineAttributes(display,gc,lw,line_style,cap_style,JoinBevel); + setcolor(display,gc,zcolor); +} + +Static Void ausfillpolygon(anzp,zcolor) + long anzp,zcolor; +{ + long ix,iy,k; + double xx,yy; + XPoint points[maxpunkte]; + for (k=0;k<anzp;k++) { + xx=rpxarray[k]; + yy=rpyarray[k]; + welt_to_bildschirm(xx,yy,&ix,&iy); + points[k].x = ix; + points[k].y = iy; + } + setvalues(display,gczeichnung,zcolor,0L,0L,0L); + XFillPolygon(display,win,gczeichnung,points,anzp, + Complex,CoordModeOrigin); +} + +Static Void setze_clip_bereiche(display) + Display *display; + +{long zcolor,line_type,ix,iy,width,height,lwidth,i; + XRectangle rectangles[1]; + + /* Clip-Bereich fuer Zeichnung*/ + rechteckbildschirmkoord(xgr,yzmax,xzmax,yprompt+wzeichenhoehe, + &ix,&iy,&width,&height); + rectangles[0].x=ix; + rectangles[0].y=iy; + rectangles[0].width=width; + rectangles[0].height=height; + XSetClipRectangles(display,gczeichnung,0,0,rectangles,1,Unsorted); + for (i=0; i<ztextfonts; i++) + { + XSetClipRectangles(display, gctext[i],0,0,rectangles,1,Unsorted); + } +} + + +Static Void setzefont(i,sqnr,fm,fl,fn) + long i, *sqnr; + char *fn, *fm, *fl; +{ + strcpy(textfont[i],fn); + strcpy(textfontmakro[i],fm); + strcpy(textfontlabel[i],fl); + prevfont[i]=*sqnr; + folgefont[*sqnr]=i; + *sqnr=i; + folgefont[i]=stdfontnummer; + prevfont[1]=i; +} + +Static Void inittextfonts() +{ + long sqnr; + /* Definition der Fonts fuer Schriften in der Zeichnung */ + /* vierte Pos fuer Menue, Texte gleich lang! */ + /* Param 1: Fontnummer */ + /* Param 2: Makroname, der vor Text kommt */ + /* Param 3: Anzeige im Menue */ + /* Param 4: Fontname */ + /* Reihenfolge Aufschreibung = Reihenfolge Anzeige */ + + if (ztextfonts != 19) fehler(9); + + sqnr = 0; + stdfontnummer= 1; + setzefont(1, &sqnr, nullstr, " ", "-*-times-medium-r-*-*-17-*"); + /* Standardfont und immer immer erster Font */ + setzefont(0, &sqnr, "\\FVIpt " , "6pt ", "-*-times-medium-r-*-*-8-*"); + setzefont(2, &sqnr, "\\FVIIIpt ", "8pt ", "-*-times-medium-r-*-*-10-*"); + setzefont(3, &sqnr, "\\FXpt " , "10pt ", "-*-times-medium-r-*-*-14-*"); + setzefont(4, &sqnr, "\\FXIIpt " , "12pt ", "-*-times-medium-r-*-*-17-*"); + setzefont(5, &sqnr, "\\FXIVpt ", "14pt ", "-*-times-medium-r-*-*-20-*"); + setzefont(6, &sqnr, "\\FXVIIIpt ","18pt ", "-*-times-medium-r-*-*-24-*"); + + setzefont(7, &sqnr, "\\FVIbpt " ,"6bpt ", "-*-times-bold-r-*-*-8-*"); + setzefont(8, &sqnr, "\\FVIIIbpt ","8bpt ", "-*-times-bold-r-*-*-10-*"); + setzefont(9, &sqnr, "\\FXbpt " ,"10bpt", "-*-times-bold-r-*-*-14-*"); + setzefont(10, &sqnr, "\\FXIIbpt ","12bpt", "-*-times-bold-r-*-*-17-*"); + setzefont(11, &sqnr, "\\FXIVbpt ","14bpt", "-*-times-bold-r-*-*-20-*"); + setzefont(12, &sqnr, "\\FXVIIIbpt ","18bpt", "-*-times-bold-r-*-*-24-*"); + + setzefont(13, &sqnr, "\\FVIipt " , "6ipt ", "-*-times-medium-i-*-*-8-*"); + setzefont(14, &sqnr, "\\FVIIIipt ", "8ipt ", "-*-times-medium-i-*-*-10-*"); + setzefont(15, &sqnr, "\\FXipt " , "10ipt", "-*-times-medium-i-*-*-14-*"); + setzefont(16, &sqnr, "\\FXIIipt " , "12ipt", "-*-times-medium-i-*-*-17-*"); + setzefont(17, &sqnr, "\\FXIVipt ", "14ipt", "-*-times-medium-i-*-*-20-*"); + setzefont(18, &sqnr, "\\FXVIIIipt ", "18ipt","-*-times-medium-i-*-*-24-*"); + +} + + +Static Void initgctext(display,win,valuemask,values) + Display *display; + Window win; + unsigned long valuemask; + XGCValues *values; +{ long i,hilf; + char fontname[maxstrl+1]; + + inittextfonts(); + for (i=0; i<ztextfonts; i++) { + strcpy(fontname,textfont[i]); + if ((text_font_info[i] = XLoadQueryFont(display,fontname)) == NULL) + {protokoll("can't load font: ", fontname); + strcpy(fontname,ersatzfont); + if ((text_font_info[i] = XLoadQueryFont(display,fontname)) == NULL) + fehler(8);} + values->font=text_font_info[i]->fid; + hilf=text_font_info[i]->ascent; + textzeichenascent[i]=hilf; + hilf=text_font_info[i]->descent; + textzeichenhoehe[i]=hilf + textzeichenascent[i]; + hilf=XTextWidth(text_font_info[i],"x",1); + textzeichenbreite[i]=hilf; + values->line_width=0; + values->line_style=LineSolid; + somengctext[i] = XCreateGC(display,win,valuemask,values); + gctext[i] = XCreateGC(display,win,valuemask,values); + } +} + + +Static Void init_window_font(display) + Display *display; +{ + long hilf,ls,lsmax; + char fontname[maxstrl+1]; + + strcpy(fontname,menuefont); + if ((font_info = XLoadQueryFont(display,fontname)) == NULL) + {protokoll("can't load font: ", fontname); + fehler(7);} + hilf=font_info->ascent; + wzeichenascent=hilf; + hilf=font_info->descent; + wzeichendescent = hilf; + wzeichenhoehe=wzeichendescent + wzeichenascent; + hilf=XTextWidth(font_info,"x",1); + wzeichenbreite=hilf; + lsmax=0; + for (hilf=1;hilf<=zmenue;hilf++) + { + ls=strlen(menue[hilf]); + if (ls>lsmax) lsmax=ls; + } + for (hilf=0;hilf<aktzahlfarben;hilf++) + { + ls=strlen(menfarbname[hilf])+1; + if (ls>lsmax) lsmax=ls; + } + kaestchenbreite = lsmax; + kaestchenbreite = (kaestchenbreite+3.0)*wzeichenbreite; + kaestchenhoehe=1.2*wzeichenhoehe; + xgrf= somenspalten*kaestchenhoehe+1.0*wzeichenbreite; + xgr=xgrf+kaestchenbreite +3.0*wzeichenbreite; + xzmax=xzmax0+xgr; + yzmax=yzmax0; + if (quer0format==true){ + xzmax=yzmax0+xgr; + yzmax=xzmax0+1.5*wzeichenhoehe; + } + xprompt=wzeichenbreite; + yprompt=0.5*wzeichenhoehe; + ixzmax=(long)floor(xzmax); + iyzmax=(long)floor(yzmax); +} + + +Static Void initGC(screen, display, win) + long screen; + Display *display; + Window win; +/* Erzeugen aller gc und des Fonts */ +{ + unsigned long valuemask = 0; + XGCValues values; + char fontname[maxstrl+1]; + + strcpy(fontname,menuefont); + valuemask=(GCForeground|GCBackground|GCFunction|GCLineWidth| + GCLineStyle|GCCapStyle|GCJoinStyle|GCFillStyle|GCFillRule| + GCFont|GCDashOffset|GCDashList|GCArcMode); + values.function=GXcopy; + values.cap_style=CapButt; + values.join_style=JoinBevel; + values.fill_style=FillSolid; + values.fill_rule=WindingRule; + values.arc_mode=ArcPieSlice; + values.dash_offset=0; + values.dashes=4; + if ((font_info = XLoadQueryFont(display,fontname)) == NULL) + {protokoll("can't load font: ", fontname); + fehler(7);} + values.font=font_info->fid; + values.line_width=2; + values.line_style=LineSolid; + values.foreground=BlackPixel(display,screen); + values.background=WhitePixel(display,screen); + gcinverse = XCreateGC(display,win,valuemask,&values); + XSetFunction(display,gcinverse,GXinvert); + XSetPlaneMask(display,gcinverse, + BlackPixel(display,screen)^WhitePixel(display,screen)); + gcxor = XCreateGC(display,win,valuemask,&values); + XSetFunction(display,gcxor,GXxor); + XSetPlaneMask(display,gcxor, + BlackPixel(display,screen)^WhitePixel(display,screen)); + values.line_width=1; + gcstd = XCreateGC(display,win,valuemask,&values); + gczeichnung= XCreateGC(display,win,valuemask,&values); + initgctext(display, win,valuemask,&values); +} + +Static Void systemstipple(display,win,nr,intensitaet) + Display *display; + Window win; + long nr; + double intensitaet; +{ /* erzeugen systematisches Stipple fuer Farben bei Monochrom */ + long i, bitnr, j, k, helligkeit, maxbits, maxbytes, offset; + double faktor; + + maxbits = hcolorbits*bcolorbits; + maxbytes = maxbits/8; + if (maxbits > 8*maxbytes) maxbytes++; + helligkeit = maxbits*intensitaet; + if ((helligkeit % 2)==0) helligkeit++; /* damit keine | _ Linien */ + offset = helligkeit % 8; + faktor = (double)maxbits/(double)helligkeit; + for (i=0;i<maxbytes;i++) + colorbits[i] = 255; /* ganz schwarz */ + for (i=0; i<=helligkeit;i++) {/* stipples loeschen */ + bitnr = faktor*i + offset; + if (frand()>0.95) /* etwas Zufall ! */ + bitnr++; + j = bitnr/8; j = j % maxbytes; + k = bitnr % 8; + colorbits[j] = colorbits[j] & (~ (1<<k)); /*k.Bit in j.Zeile*/ + } + colorstipple[nr] = XCreateBitmapFromData(display,win,colorbits, + bcolorbits,hcolorbits); +} + +Static Void initfarben(screen, display, win) + long screen; + Display *display; + Window win; +/* Erzeugen aller verfuegbaren Farben */ +{ + long i, nr, erg, ordnung, nvh; + double h,s,v; + Char colorname[maxlenfarbe+1]; + XColor rgbsolldef; + XWindowAttributes winattr; + + nvh = 0; + cmap=DefaultColormap(display,screen); + for (nr=0;nr<aktzahlfarben;nr++) { + strcpy(colorname, farbname[nr]); + erg=XAllocNamedColor(display,cmap,colorname,&(rgbistdef[nr]),&rgbsolldef); + if (erg!=1) { + printf("color %s not available\n",colorname); + nvh++; + } + if ((erg!=1)||((nr>=2)&& + (rgbistdef[nr].red ==rgbistdef[weiss].red)&& + (rgbistdef[nr].green==rgbistdef[weiss].green)&& + (rgbistdef[nr].blue ==rgbistdef[weiss].blue))){ + rgbistdef[nr].pixel=rgbistdef[schwarz].pixel; + rgbistdef[nr].red=rgbistdef[schwarz].red; + rgbistdef[nr].green=rgbistdef[schwarz].green; + rgbistdef[nr].blue=rgbistdef[schwarz].blue; + rgbistdef[nr].flags=rgbistdef[schwarz].flags; + } + /* Helligkeit 0..1 bestimmen */ + intensity[nr] = (0.299*rgbsolldef.red + 0.587*rgbsolldef.green + + 0.114*rgbsolldef.blue)/65535.0; + if (nr <= letztesgrau) + farbposfarbnr[nr]=nr; + else + farbposfarbnr[nr]=rgb2hsv2ordnung(rgbsolldef.red, + rgbsolldef.green,rgbsolldef.blue,65535); + + if (nocolors == true) { + systemstipple(display, win, nr,intensity[nr]); + } + } + if (nvh != 0) { + printf("we try to allocate own colormap\n"); + nvh = XGetWindowAttributes(display,win,&winattr); + if (nvh != 0) { + cmap = XCreateColormap(display,win,winattr.visual,AllocNone); + XSetWindowColormap(display,win,cmap); + for (nr=0;nr<aktzahlfarben;nr++) { + strcpy(colorname, farbname[nr]); + erg=XAllocNamedColor(display,cmap,colorname,&(rgbistdef[nr]),&rgbsolldef); + if (erg!=1) { + printf("color %s not available in own colormap\n",colorname); + } + if ((erg!=1)||((nr>=2)&& + (rgbistdef[nr].red ==rgbistdef[weiss].red)&& + (rgbistdef[nr].green==rgbistdef[weiss].green)&& + (rgbistdef[nr].blue ==rgbistdef[weiss].blue))){ + rgbistdef[nr].pixel=rgbistdef[schwarz].pixel; + rgbistdef[nr].red=rgbistdef[schwarz].red; + rgbistdef[nr].green=rgbistdef[schwarz].green; + rgbistdef[nr].blue=rgbistdef[schwarz].blue; + rgbistdef[nr].flags=rgbistdef[schwarz].flags; + } + /* Helligkeit 0..1 bestimmen */ + intensity[nr] = (0.299*rgbsolldef.red + 0.587*rgbsolldef.green + + 0.114*rgbsolldef.blue)/65535.0; + if (nr <= letztesgrau) + farbposfarbnr[nr]=nr; + else + farbposfarbnr[nr]=rgb2hsv2ordnung(rgbsolldef.red, + rgbsolldef.green,rgbsolldef.blue,65535); + + if (nocolors == true) { + systemstipple(display, win, nr,intensity[nr]); + } + } + } + } + + + for (i=0;i <= 8;i++) { + /* Bitmaps fuer grau erzeugen */ + graystipple[i]=XCreateBitmapFromData(display,win,graybits[i],4,4); + } +} + +Static Void eintragefarbname(nr, colorname) + long *nr; + Char *colorname; +/* Eintragen eines Farbnamens */ +/* nr ist Farbnummer, die auch in Farbmakros verwendet wird */ + +{ long i, m; + Char cc; + + if (*nr >= maxzahlfarben) return; /*ignorieren, zu viele Farben*/ + strcpy(farbname[*nr],colorname); + m=strlen(colorname); + /* verkuerzten Farbnamen fuer Menue erzeugen */ + if (m<=maxlenmenfarbe) strcpy(menfarbname[*nr],colorname); + else { + for (i=0; i<maxlenmenfarbe;i++) menfarbname[*nr][i]=colorname[i]; + cc=colorname[m-1]; + if ((cc>='0')&&(cc<='9')) menfarbname[*nr][maxlenmenfarbe-1]=cc; + menfarbname[*nr][maxlenmenfarbe]='\0'; + } + *nr = *nr+1; +} + +Static Void initfarbnamen() +/* Erzeugen aller verfuegbaren Farbnamen */ +/* Reihenfolge der Aufrufe bestimmt Farbnummer in Latex */ +/* deshalb darf Reihenfolge nicht mehr ver"andert werden !!! */ +/* die Positionsnummer im Farbmenue wird spaeter berechnet */ +{ long nr; + + nr=0; + eintragefarbname(&nr, "black"); + eintragefarbname(&nr, "white"); + eintragefarbname(&nr, "gray90"); + eintragefarbname(&nr, "gray80"); + eintragefarbname(&nr, "gray70"); + eintragefarbname(&nr, "gray60"); + eintragefarbname(&nr, "gray50"); + eintragefarbname(&nr, "gray40"); + eintragefarbname(&nr, "gray30"); + eintragefarbname(&nr, "gray20"); + eintragefarbname(&nr, "gray10"); + letztesgrau = nr-1; /*maximal 10*/ + if (letztesgrau > 10) {letztesgrau = 10; nr=11;} + eintragefarbname(&nr, "red1"); + eintragefarbname(&nr, "orange1"); + eintragefarbname(&nr, "sienna1"); + eintragefarbname(&nr, "gold1"); + eintragefarbname(&nr, "yellow"); + eintragefarbname(&nr, "chartreuse1"); + eintragefarbname(&nr, "green"); + eintragefarbname(&nr, "SpringGreen1"); + eintragefarbname(&nr, "cyan"); + eintragefarbname(&nr, "blue"); + eintragefarbname(&nr, "DarkOrchid1"); + eintragefarbname(&nr, "orchid1"); + eintragefarbname(&nr, "magenta"); + eintragefarbname(&nr, "red3"); + eintragefarbname(&nr, "orange3"); + eintragefarbname(&nr, "brown2"); + eintragefarbname(&nr, "orange2"); + eintragefarbname(&nr, "yellow3"); + eintragefarbname(&nr, "chartreuse3"); + eintragefarbname(&nr, "green3"); + eintragefarbname(&nr, "SpringGreen3"); + eintragefarbname(&nr, "cyan3"); + eintragefarbname(&nr, "blue3"); + eintragefarbname(&nr, "DarkOrchid3"); + eintragefarbname(&nr, "orchid3"); + eintragefarbname(&nr, "magenta3"); + eintragefarbname(&nr, "MistyRose1"); + eintragefarbname(&nr, "PeachPuff1"); + eintragefarbname(&nr, "RosyBrown1"); + eintragefarbname(&nr, "khaki1"); + eintragefarbname(&nr, "LightYellow1"); + eintragefarbname(&nr, "wheat1"); + eintragefarbname(&nr, "MintCream"); + eintragefarbname(&nr, "PaleGreen1"); + eintragefarbname(&nr, "LightCyan1"); + eintragefarbname(&nr, "LightBlue1"); + eintragefarbname(&nr, "thistle1"); + eintragefarbname(&nr, "plum1"); + eintragefarbname(&nr, "LavenderBlush1"); + eintragefarbname(&nr, "PaleTurquoise1"); + eintragefarbname(&nr, "DarkSeaGreen1"); + eintragefarbname(&nr, "aquamarine1"); + eintragefarbname(&nr, "DeepSkyBlue1"); + eintragefarbname(&nr, "SlateBlue1"); + eintragefarbname(&nr, "MediumOrchid1"); + eintragefarbname(&nr, "IndianRed1"); + eintragefarbname(&nr, "DeepPink1"); + eintragefarbname(&nr, "brown1"); + + if (nr > maxzahlfarben) aktzahlfarben=maxzahlfarben; + else aktzahlfarben = nr; +} + +Static Void schluss(i) +long i; +{ + XCloseDisplay(display); + if (datdeskr != NULL) + fclose(datdeskr); + exit(i); +} + + +Static double si_fabs(x) +double x; +/* Absolutwert GP-Zahl */ +{ + if (x < 0.0) + return (-x); + else return (x); +} + +Static double sisqrt(term, x) +double term, x; +/* Wurzel mit Ausgleich Rundungsfehler */ +/* Wurzel aus neg. Zahl gibt neg. Wert */ +{ + if (x > 0.0) + return sqrt(x); + else if (si_fabs(x) <= si_fabs(term) * 0.001) + return 0.0; + else + return (-sqrt(si_fabs(x))); +} + +Static double sifsqrt(term, x) +double term, x; +/* Wurzel mit Ausgleich Rundungsfehler */ +/* Wurzel aus neg. Zahl gibt Fehler */ +{ + double w; + w = sisqrt(term, x); + if (w < 0.0) + fehler(5L); + return w; +} + +Static double fsign(x) +double x; +/* Vorzeichen einer GP-Zahl */ +{ + if (x >= 0.0) + return 1.0; + else + return -1.0; +} + +Static Void glersterord(a, b, anz, erg) +double a, b; +long *anz; +double *erg; +/* Gl. ax+b=0 loesen */ +/* Anzahl anz der Loesungen in erg[1],... */ +{ + *anz = 0; + if (a != 0.0) { + *anz = 1; + erg[1] = -(b / a); + } +} + +Static Void glzweiterord(a, b, c, anz, erg) +double a, b, c; +long *anz; +double *erg; +/* Gl. ax*x+b*x+c=0 loesen */ +/* Anzahl anz der Loesungen in erg[1],... */ +{ + double w, n; + if (a == 0.0) { + glersterord(b, c, anz, erg); + return; + } + w = b * b - 4.0 * a * c; + n = 1.0 / (2.0 * a); + w = sisqrt(b * b, w); + if (w < 0.0) + *anz = 0; + if (w == 0.0) { + *anz = 1; + erg[1] = -b * n; + } + if (w <= 0.0) + return; + *anz = 2; + erg[1] = (w - b) * n; + erg[2] = (-b - w) * n; +} + + +Static double drittewurzel(x) +double x; +{ + return (-fsign(x) * exp(log(si_fabs(x)) / 3.0)); +} + + +Static double Cosh(x) +double x; +{ + return ((exp(x) + exp(-x)) / 2.0); +} + + +Static double Sinh(x) +double x; +{ + return ((exp(x) - exp(-x)) / 2.0); +} + + +Static double arcosh(x) +double x; +{ + /* x ist groesser 1 !*/ + return log(x + sifsqrt(1.0, x * x - 1.0)); +} + + +Static double arsinh(x) +double x; +{ + return log(x + sifsqrt(1.0, x * x + 1.0)); +} + + +Static Void nachkorr(a, b, c, d, e, x) +double a, b, c, d, e, *x; +/* Nachkorrektur einer Loesung x einer Gleichung */ +/* a*x*x*x*x+b*x*x*x+c*x*x+d*x+e=0 */ +/* durch Newton-Extrapolation */ +{ + double g, gstr, gzwstr, dx; + dx = 0.0; + g = (((a * *x + b) * *x + c) * *x + d) * *x + e; + gstr = ((4.0 * a * *x + 3.0 * b) * *x + 2.0 * c) * *x + d; + if (0.1 * si_fabs(*x * gstr) > si_fabs(g)) /*Korrektur sinnvoll*/ + dx = -(g / gstr); + else { /*Doppelnullstelle */ + gzwstr = (2.0 * a * *x + b) * 6.0 * *x + 2.0 * c; + if (0.1 * si_fabs(*x * gzwstr) > si_fabs(gstr)) + dx = -(gstr / gzwstr); + } + *x += dx; +} + + +Static Void gldritterord(a, b, c, d, anz, erg) +double a, b, c, d; +long *anz; +double *erg; +/* Gl. ax*x*x+b*x*x+c*x+d=0 loesen */ +/* Anzahl anz der Loesungen in erg[1],... */ +{ + double p, q, eda, det, r, cphi, sphi, phi, korr; + long i; + if (a == 0.0) { + glzweiterord(b, c, d, anz, erg); + goto _L1; + } + if (si_fabs(d) < 0.001) { + glzweiterord(a, b, c, anz, erg); + (*anz)++; + erg[*anz] = 0.0; + goto _L1; + } + eda = 1 / a; + korr = b * eda / -3.0; + p = (3.0 * a * c - b * b) * eda * eda / 9.0; + q = ((b * b * b * eda / 27.0 - b * c / 6.0) * eda + d / 2.0) * eda; + det = q * q + p * p * p; + r = fsign(q) * sifsqrt(1.0, si_fabs(p)); + if (p == 0.0 && q == 0.0) { + *anz = 1; + erg[1] = korr; + goto _L1; + } + if (p == 0.0) { + *anz = 1; + erg[1] = drittewurzel(-2.0 * q) + korr; + goto _L1; + } + if (p < 0.0 && det <= 0.0) { + cphi = q / (r * r * r); + if (cphi == 0.0) + phi = pi / 2.0; + else { + sphi = sifsqrt(1.0, 1.0 - cphi * cphi); + phi = atan(sphi / cphi); + } + *anz = 3; + erg[1] = korr - 2.0 * r * cos(phi / 3.0); + erg[2] = 2.0 * r * cos((pi - phi) / 3.0) + korr; + erg[3] = 2.0 * r * cos((pi + phi) / 3.0) + korr; + goto _L1; + } + if (p < 0.0 && det > 0.0) { + *anz = 1; + erg[1] = korr - 2.0 * r * Cosh(arcosh(q / (r * r * r)) / 3.0); + goto _L1; + } + *anz = 1; + erg[1] = korr - 2.0 * r * Sinh(arsinh(q / (r * r * r)) / 3.0); +_L1: + for (i = 1; i <= *anz; i++) + nachkorr(0.0, a, b, c, d, &erg[i]); +} + + +Static Void glvierterord(a, b, c, d, e, anz, erg) +double a, b, c, d, e; +long *anz; +double *erg; +/* Gl. a*x*x*x*x+b*x*x*x+c*x*x+d*x+e=0 loesen */ +/* Anzahl anz der Loesungen in erg[1],... */ +{ + double ga, eda, b1, c1, d1, e1, y, w; + terg erg1; + long anz1, i; + if (a == 0.0) { + gldritterord(b, c, d, e, anz, erg); + goto _L1; + } + if (si_fabs(e) < 0.001) { + gldritterord(a, b, c, d, anz, erg); + (*anz)++; + erg[*anz] = 0.0; + goto _L1; + } + if (b == 0.0 && d == 0.0) { + glzweiterord(a, c, e, &anz1, erg1); + *anz = 0; + for (i = 1; i <= anz1; i++) { + w = sisqrt(1.0, erg1[i]); + if (w >= 0.0) { + *anz += 2; + erg[*anz - 1] = w; + erg[*anz] = -w; + } + } + goto _L1; + } + eda = 1 / a; + b1 = b * eda; + c1 = c * eda; + d1 = d * eda; + e1 = e * eda; + gldritterord(8.0, -4.0 * c1, 2.0 * b1 * d1 - 8.0 * e1, + e1 * (4.0 * c1 - b1 * b1) - d1 * d1, anz, erg); + y = erg[1]; + ga = 8.0 * y + b1 * b1 - 4.0 * c1; + if (si_fabs(8.0 * y) > si_fabs(b1 * b1)) + w = 8.0 * y; + else + w = b1 * b1; + if (si_fabs(w) < si_fabs(4.0 * c1)) + w = 4.0 * c1; + ga = sisqrt(w, ga); + *anz = 0; + if (ga < 0.0) + goto _L1; + eda = b1 * y - d1; + if (ga == 0.0 && si_fabs(eda) > 0.001) + goto _L1; + if (ga == 0.0 && si_fabs(eda) <= 0.001) + eda = 0.0; + else + eda /= ga; + glzweiterord(1.0, (b1 + ga) / 2.0, y + eda, &anz1, erg1); + glzweiterord(1.0, (b1 - ga) / 2.0, y - eda, anz, erg); + for (i = 1; i <= anz1; i++) + erg[*anz + i] = erg1[i]; + *anz += anz1; +_L1: + for (i = 1; i <= *anz; i++) + nachkorr(a, b, c, d, e, &erg[i]); +} + + +Static Void initgrid() +{ + gridw0 = 5.0 / texfaktorv; + gridw = gridw0; + gridx0 = xmittelzei; + gridy0 = ymittelzei; + gridwx1 = 1.0; + gridwy1 = 0.0; + gridwx2 = 0.0; + gridwy2 = 1.0; +} + +Static Void ftausch(x, y) +double *x, *y; +{ + double c; + + c = *x; + *x = *y; + *y = c; +} + +Static Void initgruppentag(tag) +long tag; +{ + long i; + + for (i=0; i<=grumax; i++) + gruppentag[i] = tag; +} + +Static long sohn(i, gruppe) +long gruppe, i; +{ /*i. Sohn der Gruppe im Baum */ + /* Null falls keiner vorhanden */ + long j, k; + + if ((gruppe < 1)||(gruppe >grumax)) return 0; + k = 0; + for (j=1;j<=grumax;j++) { + if (vater[j]==gruppe) { + k++; + if (k==i) return j; + } + } + return 0; +} + +Static long gruppenwurzel(elsel) +long elsel; +{ /* oberste Gruppe, zu der die angegebene Gruppe gehoert */ + /* Null es gibt keine */ + long i, gruppe; + + gruppe = group[elsel]; + if ((gruppe < 1)||(gruppe >grumax)) return 0; + i = gruppe; + while (vater[i] != 0) + i = vater[i]; + return i; +} + +Static Void markteilbaum(gruppe,tag) +long gruppe,tag; +{ + long j,g; + + j = 1; + while ( (g=sohn(j,gruppe)) != 0) {/* j. Sohn von gruppe untersuchen */ + j++; + markteilbaum(g,tag); + } + gruppentag[gruppe] = tag; +} + +Static Void blinkgruppe(elsel) +long elsel; +{/* bei allen Elementen, die zur Gruppe des angegebenen Elements und */ + /* den darueberliegenden Gruppen gehoeren wird blink gesetzt */ + /* blink wird vorher nicht geloescht ! */ + long i,gw; + + if ((elsel<1)||(typ[elsel]<=0)||(elsel >zelmax)) return; + blink[elsel]=true; + gw=gruppenwurzel(elsel); + if (gw==0) return; + markteilbaum(gw,true); + for (i=1;i<=zelmax;i++) { + if ((typ[i] >0) && (group[i] != 0) && + (gruppentag[group[i]] == true)) { + /* Element gehoert zu der Gruppe */ + blink[i]=true; + } + } + /* alle Elemente der Gruppe sind markiert */ +} + + +Static long freiegruppe() +{ + long i; + + for (i=1;i<=maxgruppen;i++) + if (vater[i]==-1){/*freies Element*/ + vater[i]=0; + gruppentag[i] = false; + if (i>grumax) + grumax = i; + return i; + } + fehler(17); +} + +Static Void gruppieren(elsel,wurzel) +long elsel, wurzel; +{ /* neue Gruppe bilden */ + + long g; + + g = gruppenwurzel(elsel); + if (g==wurzel) return; + if (g==0) /* Element direkt in Gruppe */ + group[elsel] = wurzel; + else + vater[g]=wurzel; +} + +Static Void grumaxbestimmen() +{ + long i; + + for (i=grumax;i>0;i--) { + if (vater[i] != -1) + break; + } + grumax = i; +} + +Static Void loeschegruppe(elsel) +long elsel; +{ + long i, vorh, wurzel; + + vorh=false; + wurzel = gruppenwurzel(elsel); + if (wurzel == 0) {/* nur ein Element */ + group[elsel] = 0; + return; + } + for (i=1;i<=grumax;i++) { + if (vater[i]==wurzel) { + vater[i]=0; + } + } + vater[wurzel]=-1; /*Gruppennummer wieder frei */ + grumaxbestimmen(); + /* Direkt an Wurzel haengende Eelemente vereinzeln */ + for (i=1;i<=zelmax;i++) { + if (group[i]==wurzel) + group[i]=0; + } +} + +Static Void unbenutztegruppenfreigeben() +{ + long elsel, g, gw; + + if (aenderunggruppen == false) + return; + aenderunggruppen = false; + initgruppentag(false); + for (elsel=1;elsel <= zelmax; elsel++) { + if (typ[elsel] > 0) { + g = group[elsel]; + if (g != 0) + gruppentag[g] = true; + } + } + LL: ; + for (g=1;g<=grumax;g++) { + if (gruppentag[g] == true){ + if (vater[g] == -1) + vater[g] =0; + if ((vater[g] > 0)&&(gruppentag[vater[g]] ==false)) { + gruppentag[vater[g]] = true; + goto LL; + } + } + } + /* nicht benoetigte Gruppen freigeben ! */ + for (g=1;g<=grumax;g++) { + if (gruppentag[g] == false) + vater[g] = -1; + } + grumaxbestimmen(); +} + +Static Void gruppenumbenennen() +{ +/* es werden die Gruppen zur Umbenennung vorgesehen, deren Gruppentag */ +/* true ist */ + long i,imax,ineu,v,vneu,g; + + for (i=1;i<=grumax;i++) + umbenennung[i] = i; + if (selmenue[mgroupmode] == false) return; + imax = grumax; + for (i=1;i<=imax;i++) { + if (gruppentag[i] == true) { + g = freiegruppe(); + gruppentag[g] = false; + umbenennung[i] = g; + aenderunggruppen = true; + } + } + for (i=1;i<=imax;i++) { + if (gruppentag[i] == true) { + v = vater[i]; + if (v != 0) + vneu = umbenennung[v]; + else + vneu = 0; + ineu = umbenennung[i]; + vater[ineu] = vneu; + } + } +} + + +Static Void bestimmeneuegruppe(elsel) +long elsel; +{ + if (group[elsel] == 0) return; + if (selmenue[mgroupmode] == true) + group[elsel] = umbenennung[group[elsel]]; + else + group[elsel] = 0; +} + +Static double ppabstand(x1, y1, x2, y2) +double x1, y1, x2, y2; +/* Abstand zweier Punkte */ +{ + double dx, dy; + + dx = (x2 - x1); + dy = (y2 - y1); + return (sifsqrt(1.0, dx * dx + dy * dy)); +} + + +Static Void cursan(x, y) +double x, y; +/* Text-Cursor anschalten */ +{ + double yrel; + curs_x=x; + curs_y=y; + yrel=y-wzeichendescent; + rechteckinverse(x,yrel,x+wzeichenbreite,yrel+wzeichenhoehe); +} + + +Static boolean nglw(a, b) + double a, b; + /* true, falls naeherungsweise gleiche Winkel */ +{ + if (si_fabs(a - b) < 2.0) + return true; + else + return false; +} + + +Static boolean nglx(a, b) + double a, b; + /* true, falls naeherungsweise gleiche Koordinaten */ +{ + if (si_fabs(a - b) < 0.1) + return true; + else + return false; +} + + +Static Void pskalieren(x, y, dx, dy, f) +double *x, *y, dx, dy, f; +/* Translation Punkt x,y um dx,dy, Skalierungsfaktor f*/ +/* Ergebnis wieder in x,y */ +{ + *x = (*x - xmittelzei) * f + xmittelzei + dx; + *y = (*y - ymittelzei) * f + ymittelzei + dy; +} + +Static Void ausmenueelement(); + +Static Void somenfontwahl(i) + long i; +{ + fontnummer = i; + strcpy(menue[mfont],textfontlabel[fontnummer]); + ausmenueelement(mfont); +} + + +Static Void setzeakttextfont(elsel) +long elsel; +{ + long fontart; + + fontart = linetype[elsel]; + if (fontart < 0) fontart = 0; + if (fontart >= ztextfonts) fontart = ztextfonts -1; + somenfontwahl(fontart); +} + +Static Void textparam(elsel) +long elsel; +/* Berechenbare Parameter fuer Texte bestimmen */ +{ + double th, thh, tl, tlh, ll, rl, dy; + long lage, fontart, lstr; + fontart = linetype[elsel]; + if (fontart < 0) fontart = 0; + if (fontart >= ztextfonts) fontart = ztextfonts -1; + laenge1[elsel] = strlen(texte[textno[elsel]]); + lstr = siintround(laenge1[elsel]); + tl = XTextWidth(text_font_info[fontart],texte[textno[elsel]],lstr); + /*textbreite*/ + tlh = 0.5 * tl; + th = textzeichenascent[fontart]; /*texthoehe*/ + thh = 0.5 * th; + lage = (long)floor(si_fabs(laenge2[elsel]) + 0.2); + if (lage > 8) {/*eigentlich Fehlerfall*/ + lage = 0; + laenge2[elsel] = 0.0; + } + switch (lage) { /*case*/ + case 0: /*bl*/ + ll = 0.0; + dy = 0.0; + break; + case 1: /*cc*/ + ll = tlh; + dy = thh; + break; + case 2: /*rb*/ + ll = tl; + dy = 0.0; + break; + case 3: /*cb*/ + ll = tlh; + dy = 0.0; + break; + case 4: /*lt*/ + ll = 0.0; + dy = th; + break; + case 5: /*rt*/ + ll = tl; + dy = th; + break; + case 6: /*ct*/ + ll = tlh; + dy = th; + break; + case 7: /*lc*/ + ll = 0.0; + dy = thh; + break; + case 8: /*rc*/ + ll = tl; + dy = thh; + break; + } + rl = tl - ll; + x2[elsel] = x1[elsel] - ll; + y2[elsel] = y1_[elsel] - dy; + xb2[elsel] = x1[elsel] + rl * crw[elsel]; + yb2[elsel] = y1_[elsel] + rl * srw[elsel]; + xb1[elsel] = x1[elsel] - ll * crw[elsel]; + yb1[elsel] = y1_[elsel] - ll * srw[elsel]; +} + + +Static Void skalieren(i, dx, dy, f) +long i; +double dx, dy, f; +/* Skalieren Zeichnungselement i */ +{ + pskalieren(&x1[i], &y1_[i], dx, dy, f); + pskalieren(&x2[i], &y2[i], dx, dy, f); + pskalieren(&xb1[i], &yb1[i], dx, dy, f); + pskalieren(&xb2[i], &yb2[i], dx, dy, f); + if (si_iabs(typ[i]) != ttext) { + laenge1[i] *= f; + laenge2[i] *= f; + } + else + textparam(i); + berechneminmax(i); +} + + +Static Void addtheorem(ca, sa, cb, sb, cab, sab) +double ca, sa, cb, sb, *cab, *sab; +{ + *cab = ca * cb - sa * sb; + *sab = ca * sb + sa * cb; +} + + +Static Void ellpar(elsel, xm, ym, lx, ly, cr, sr) +long elsel; +double *xm, *ym, *lx, *ly, *cr, *sr; +/* Parameter einer Ellipse zurueckgeben */ +{ + *xm = x1[elsel]; + *ym = y1_[elsel]; + *lx = laenge1[elsel]; + *ly = laenge2[elsel]; + *cr = crw[elsel]; + *sr = srw[elsel]; +} + + +Static Void translation(dx, dy, xp, yp, xpr_, ypr_) + double dx, dy, xp, yp, *xpr_, *ypr_; + /* Koord. von p in neuem Koord.system, das um dx,dy translatiert*/ +{ *xpr_ = xp - dx; + *ypr_ = yp - dy; +} + + +Static Void rotation(cw, sw, xp, yp) + double cw, sw, *xp, *yp; + /*Koord. von p in neuem Koord.system, das positiv rotiert*/ +{ + double hx, hy; + hx = cw * *xp + sw * *yp; + hy = cw * *yp - sw * *xp; + *xp = hx; + *yp = hy; +} + + +Static double winkel0(dx, dy, a, b) +double dx, dy, a, b; +/* Winkel von x_Achse zu Strecke von (0,0) zu (dx,dy) fuer Ellipse */ +/* mit Hauptachsen a und b und Mittelpunkt (0,0) */ +{ + double at, rm; + if (dy == 0.0) { + if (dx >= 0.0) + at = 0.0; + else + at = wh; + goto _L1; + } + if (dx == 0.0) { + if (dy >= 0.0) + at = wv; + else + at = wdv; + goto _L1; + } + if (si_fabs(dy) > 10000.0 * si_fabs(dx)) { /*fast senkrecht*/ + if (dy >= 0.0) + at = wv; + else + at = wdv; + goto _L1; + } + rm = si_fabs(a / b * (dy / dx)); + at = fbograd * atan(rm); + /*spezielle Winkelrichtung gemaess Quadrant*/ + if (dx < 0.0 && dy > 0.0) + at = wh - at; + if (dx < 0.0 && dy < 0.0) + at += wh; + if (dx > 0.0 && dy < 0.0) + at = wg - at; + if (si_fabs(at) < 0.01) + at = 0.0; + if (si_fabs(at - wg) < 0.01) + at = wg; +_L1: + return at; +} + + +Static double winkelk(xm, ym, xp, yp) + double xm, ym, xp, yp; + /* Winkel von x_Achse zu Strecke von (xm,ym) zu (xp,yp)*/ + /*xm,ym Mittelpunkt Kreis*/ + /* xp,yp Koordinaten eines Punktes */ +{ + double dx, dy; + translation(xm, ym, xp, yp, &dx, &dy); + return (winkel0(dx, dy, 1.0, 1.0)); +} + + +Static Void setzewinkel(elsel, xm, ym, xp, yp) +long elsel; +double xm, ym, xp, yp; +/* Berechne Drehwinkel des Zeichnungselementes elsel */ +{ + rotwi[elsel] = winkelk(xm, ym, xp, yp); + crw[elsel] = cos(fgradbo * rotwi[elsel]); + srw[elsel] = sin(fgradbo * rotwi[elsel]); +} + + +Static Void ell_xy(xm, ym, a, b, cr, sr, xpr_, ypr_, xp, yp) + double xm, ym, a, b, cr, sr, xpr_, ypr_, *xp, *yp; + /* Umrechnung Punkt (xpr,ypr) im Ellipsenkoordinatensystem */ + /* in das Weltkoordinatensystem, dort (xp,yp) */ +{ + *xp = xpr_; + *yp = ypr_; + rotation(cr, -sr, xp, yp); /*Rotation um neg. Winkel*/ + translation(-xm, -ym, *xp, *yp, xp, yp); +} + + +Static Void ellw_xy(xm, ym, a, b, cr, sr, w, xp, yp) + double xm, ym, a, b, cr, sr, w, *xp, *yp; + /* Punkt auf Ellipse durch Winkel w in Grad bei Ellipse definiert */ + /* in Punkt (xp,yp) des Weltkoordinatensystems umrechnen */ +{ + ell_xy(xm, ym, a, b, cr, sr, a * cos(w * fgradbo), + b * sin(w * fgradbo), xp, yp); +} + + +Static Void xy_ell(xm, ym, cr, sr, xp, yp, xpr_, ypr_) + double xm, ym, cr, sr, xp, yp, *xpr_, *ypr_; + /*Transformation Punkt (xp,yp) in Weltkoordinaten in */ + /*Koordinatensystem der Ellipse, dort (xpr,ypr)*/ +{ + translation(xm, ym, xp, yp, xpr_, ypr_); + rotation(cr, sr, xpr_, ypr_); /*Rotation um pos. Winkel*/ +} + + +Static double winkelell(xm, ym, a, b, cr, sr, xp, yp) + double xm, ym, a, b, cr, sr, xp, yp; + /* xm,ym,a,b,cr,sr definieren Ellipse*/ + /* xp,yp Punkt in Zeichenebene */ + /* Winkel gesucht im Bezugskoordinatensystem der Ellipse*/ +{ + double dx, dy; + xy_ell(xm, ym, cr, sr, xp, yp, &dx, &dy); + return (winkel0(dx, dy, a, b)); +} + + +Static Void stdimagetextaus(twin, x, y, t, zcolor) +Window twin; +long zcolor; +double x, y; +Char *t; +/* Ausgabe string t an Stelle x,y */ +{ + long ix,iy,length; + length=strlen(t); + welt_to_bildschirm(x, y, &ix, &iy); + setcolor(display,gcstd,zcolor); + XDrawImageString(display,twin,gcstd,ix,iy,t,length); +} + +Static Void stdtextaus(twin, x, y, t, zcolor) +Window twin; +long zcolor; +double x, y; +Char *t; +/* Ausgabe string t an Stelle x,y */ +{ + long ix,iy,length; + length=strlen(t); + welt_to_bildschirm(x, y, &ix, &iy); + setcolor(display,gcstd,zcolor); + XDrawString(display,twin,gcstd,ix,iy,t,length); +} + + +Static Void ztextaus(twin, elsel, x, y, t, zcolor, fontart) +Window twin; +long zcolor,fontart, elsel; +double x, y; +Char *t; +/* Ausgabe string t an Stelle x,y in der Zeichnung */ +{ long ix,iy,length; + + length=strlen(t); + welt_to_bildschirm(x, y, &ix, &iy); + setcolor(display,gctext[fontart],zcolor); + XDrawString(display,twin,gctext[fontart],ix,iy,t,length); +} + + +Static Void somentextaus(x, y, t, fontart) +long fontart; +double x, y; +Char *t; +/* Ausgabe string t an Stelle x,y in der Zeichnung */ +{ + long ix,iy,lstr; + double dx; + + lstr=strlen(t); + dx = XTextWidth(text_font_info[fontart],t,lstr); + welt_to_bildschirm(x-dx/2.0, y, &ix, &iy); + XDrawString(display,win,somengctext[fontart],ix,iy,t,lstr); +} + +Static Void ausfarbkaestchen(xa,ye,xe,ya,zcolor) + double xa,ye,xe,ya; + long zcolor; +{ long ix,iy,width,height; + + rechteckbildschirmkoord(xa,ye,xe,ya,&ix,&iy,&width,&height); + setcolor(display,gcstd,zcolor); + XFillRectangle(display,win,gcstd,ix,iy,width,height); +} + +Static Void faerbekaestchen(i, zcolor) + long i, zcolor; +{ + ausfarbkaestchen(xam[i],yem[i],xem[i],yam[i],zcolor); +} + +Static Void somenbestxy(i, xa,ya,xe,ye,xt,yt) + long i; + double *xa,*ya,*xe,*ye,*xt,*yt; +{ long reihe,spalte; + + reihe= i/somenspalten; + spalte=i % somenspalten; + *xa=spalte*kaestchenhoehe+1.0*wzeichenbreite; + *ya=reihe*kaestchenhoehe+yprompt+1.5*wzeichenhoehe; + *xe=*xa+kaestchenhoehe; + *ye=*ya+kaestchenhoehe; + *xt=*xa+kaestchenhoehe/2.0; + *yt=*ya+kaestchenhoehe*0.1; +} + +Static long somenbesti(x,y) + double x,y; +{ long reihe,spalte; + double xa,ya; + + xa=x-1.0*wzeichenbreite; + ya=y-yprompt-1.5*wzeichenhoehe; + if ((xa<0.0)||(ya<0.0)) return -1L; + spalte=xa/kaestchenhoehe; + reihe=ya/kaestchenhoehe; + return (reihe*somenspalten+spalte); +} + +Static Void aussomenue() +{ long i; + double xa,ya,xe,ye,xt,yt; + + for (i=0;i<ztextfonts;i++) { + somenbestxy(i, &xa,&ya,&xe,&ye,&xt,&yt); + if (i!=1) somentextaus(xt,yt,"T",i); + } + for (i=0; i < aktzahlfarben; i++) { + somenbestxy(i+ztextfonts, &xa,&ya,&xe,&ye,&xt,&yt); + ausfarbkaestchen(xa,ye,xe,ya,farbnrfarbpos[i]); + } +} + +Static Void prompt() +/* Ausgabe Prompttext ab Stelle xprompt,yprompt */ +{ + Char promptzeile[maxstrl+maxstrl+2]; + long ls; + konkat(promptzeile,pr1,pr2); /*select/ menue[msel]*/ + konkat(promptzeile,promptzeile,pr3); /*Hinweise*/ + konkat(promptzeile,promptzeile,pr4); /*pr2menue[msel]*/ + konkat(promptzeile,promptzeile,pr5); /*Text fuer Texteingabe*/ + konkat(promptzeile,promptzeile,pr6); /*Eingabetext*/ + ls = (long) floor((xzmax-xprompt)/wzeichenbreite); + if (ls >= maxstrl) ls=maxstrl; + ls = ls - strlen(promptzeile); + while (ls > 0) { + konkat(promptzeile,promptzeile,blank); + ls--; + } + stdimagetextaus(win,xprompt, yprompt, promptzeile,schwarz); +} + +Static Void gridpunkt(mstrich, nstrich, x, y) + double mstrich,nstrich; + double *x, *y; +{ + *x = gridx0 + (mstrich * gridwx1 + nstrich * gridwx2) * gridw; + *y = gridy0 + (mstrich * gridwy1 + nstrich * gridwy2) * gridw; +} + + +Static Void textpositionieren() +/* Positionieren des Textes im Fensterausschnitt */ +{ long lsa, ls, lsmax, tposoffset, ogrenzeoffset; + + lsa = strlen(pr1)+strlen(pr2)+strlen(pr3)+strlen(pr4)+strlen(pr5); + ls = strlen(EinText); + lsmax = (long) floor((xzmax-xprompt)/wzeichenbreite)-3-lsa; + ogrenzeoffset = ls - lsmax; + if (ls <= lsmax) + tposoffset = 0; + else { + tposoffset = tposres - lsmax/2; + if (tposoffset < 0) + tposoffset = 0; + if (tposoffset > ogrenzeoffset) + tposoffset = ogrenzeoffset; + } + substringcpy(pr6,EinText,tposoffset,lsmax); + curs_x=xprompt+(tposres-tposoffset+lsa-1)*wzeichenbreite; + curs_y=yprompt; + if (geoeffnet==0) return; + cursan(curs_x, curs_y); +} + + +Static Void inittastaturtext(s,prtext, voll) +Char *s,*prtext; +long voll; +/* Eingabe Tastaturtext */ +/* s ist Ergebnisstring, erst am Ende verfuegbar */ +/* s muss initialisiert sein */ +{ + long ls,dphase; + Char csw[maxstrl+1]; + + erwartet=tastatur_erwartet; + strcpy(tpr1res,pr1); + strcpy(tpr2res,pr2); + strcpy(tpr3res,pr3); + strcpy(tpr4res,pr4); + if (voll==0) { + strcpy(pr1,nullstr); + strcpy(pr2,nullstr); + strcpy(pr3,nullstr); + strcpy(pr4,nullstr); + } + strcpy(pr5,prtext); + strcpy(EinText,s); + ls = strlen(EinText); + tposres = ls + 1; + textpositionieren(); +} + + +Static long tastaturtext(taste) +long taste; +/* Eingabe Tastaturtext */ +/* Ergebnis ==0: String fertig eingegeben */ +/* Ergebnis !=0: String noch nicht mit Return abgeschlossen */ +{ + long ls,lsa; + Char csw[maxstrl+1]; + + lsa = strlen(pr1)+strlen(pr2)+strlen(pr3)+strlen(pr4)+strlen(pr5); + ls = strlen(EinText); + if ((taste == tastecursright1)|| (taste == tastecursright2)) { + if (tposres <= ls) (tposres)++; + goto L0A; + } + if ((taste == tastecursleft1)||(taste == tastecursleft2)) { + if (tposres > 1) (tposres)--; + goto L0A; + } + if ((taste==tasted)&&(controlan==1L)) {/*delete */ + if (ls >= tposres) strdelete(EinText, (int)tposres); + goto L0A; + } + if ((taste==tastea)&&(controlan==1L)) {/*an Anfang Zeile */ + tposres = 1; + goto L0A; + } + if ((taste==tastee)&&(controlan==1L)) {/*an Ende Zeile */ + tposres = ls+1; + goto L0A; + } + if ((taste==tastek)&&(controlan==1L)) {/*loeschen bis Ende Zeile */ + EinText[tposres-1] = 0; + goto L0A; + } + if (taste == tastebackspace || taste == tastedelete) { + if (tposres > 1) { + (tposres)--; + strdelete(EinText, (int)tposres); + } + goto L0A; + } + if (taste == tastereturn) /*Return*/ + goto LE; + if (taste == 13) /*cr*/ + goto LE; + if (taste == 10) /*lf*/ + goto LE; + if (taste < 32) /*illegale Zeichen*/ + goto L0A; + if (taste >255) /*illegale Zeichen */ + goto L0A; + if (ls >= maxstrl) /*max stringlaenge erreicht*/ + goto LE; + sprintf(csw, "%c", (Char)taste); + if (tposres <= ls) + strinsert(csw, EinText, (int)tposres); + else + konkat(EinText, EinText,csw); + (tposres)++; + goto L0A; + LE: + strcpy(pr1,tpr1res); + strcpy(pr2,tpr2res); + strcpy(pr3,tpr3res); + strcpy(pr4,tpr4res); + strcpy(pr5,nullstr); + strcpy(pr6,nullstr); + erwartet=click_erwartet; + return 0; + + L0A: + textpositionieren(); + return 1; +} + +Static Void ausmenuetext(i,zcolor) +/* Ausdruck eines Textes im Element i des Menues */ +long i,zcolor; +{ + double dx,dy; + Char s[maxstrl+1]; + + dx=0.5*wzeichenbreite; + dy=(si_fabs(yem[i]-yam[i])-wzeichenhoehe)/2.0; + dy=0.8*dy + wzeichendescent; + strcpy(s, menue[i]); + stdtextaus(win,xam[i] + dx, yam[i] + dy,s,zcolor); +} + +Static Void ausmenueelement(i) + long i; +{ + if ((selmenue[i]==true)&&(i!=mcolor)){ + faerbekaestchen(i,schwarz); + ausmenuetext(i, weiss); + menuerechteck(xam[i],yam[i],xem[i],yem[i]); + return; + } + if (i!=mcolor){ + faerbekaestchen(i,weiss); + ausmenuetext(i, schwarz); + menuerechteck(xam[i],yam[i],xem[i],yem[i]); + return; + } + faerbekaestchen(i,aktcolor); + if (aktcolor==weiss) {ausmenuetext(i, schwarz); goto LW;} + if (aktcolor==schwarz) {ausmenuetext(i, weiss); goto LW;} + if (aktcolor <= (long) (letztesgrau/2)) {ausmenuetext(i, schwarz); goto LW;} + if (aktcolor <= letztesgrau) {ausmenuetext(i, weiss); goto LW;} +/* if (((rgbistdef[aktcolor].red & 0377) >100)|| + ((rgbistdef[aktcolor].green & 0377)>100)|| + ((rgbistdef[aktcolor].blue & 0377)>100)) +*/ + if (intensity[aktcolor] > 0.5) + ausmenuetext(i, schwarz); + else + ausmenuetext(i, weiss); + LW: + menuerechteck(xam[i],yam[i],xem[i],yem[i]); +} + +Static long xyein(x, y, taste, phase) + long phase,taste; + double *x, *y; +{ + long anz; + double lgx, lgy; + switch (phase){ + case 0: goto L0; + default: goto L1; + } + L0: + inittastaturtext(nullstr,pr2menue[mxytastatur],1L); + return 1; + L1: + anz=sscanf(EinText,"%lf%lf",&lgx,&lgy); + if (anz!=2) {lgx=0; lgy=0;} + /* lgx,lgy im Grid-Koordinatensystem, also umrechnen */ + gridpunkt(lgx, lgy, x, y); + selmenue[mxytastatur] = false; + ausmenueelement((long)mxytastatur); + return 0; +} + + +Static Void koeff_bezier(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y, bk) +double p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y; +tbezierkoeff *bk; +{ + bk->dx = p0x; + bk->cx = (p1x - p0x) * 3.0; + bk->bx = (p2x - p1x) * 3.0 - bk->cx; + bk->ax = p3x - p0x - bk->cx - bk->bx; + bk->dreiax = 3.0 * bk->ax; + bk->zweibx = 2.0 * bk->bx; + bk->dy = p0y; + bk->cy = (p1y - p0y) * 3.0; + bk->by = (p2y - p1y) * 3.0 - bk->cy; + bk->ay = p3y - p0y - bk->cy - bk->by; + bk->dreiay = 3.0 * bk->ay; + bk->zweiby = 2.0 * bk->by; +} + + +Static Void punkt_bezier(elsel, t, prx, pry) +long elsel; +double t, *prx, *pry; +{ double J0,J1,J2,J3,emt; + + emt = 1.0-t; + J0=emt*emt*emt; + J1=3.0*t*emt*emt; + J2=3.0*t*t*emt; + J3=t*t*t; + *prx=x1[elsel]*J0+xb1[elsel]*J1+xb2[elsel]*J2+x2[elsel]*J3; + *pry=y1_[elsel]*J0+yb1[elsel]*J1+yb2[elsel]*J2+y2[elsel]*J3; +} + +Static Void ableitung_bezier(elsel, t, dxdt, dydt) +long elsel; +double t, *dxdt,*dydt; +{ double dJ0,dJ1,dJ2,dJ3,emt; + + emt = 1.0-t; + dJ0=-3.0*emt*emt; + dJ1=3.0*emt*emt-6.0*t*emt; + dJ2=6.0*t*emt-3.0*t*t; + dJ3=3.0*t*t; + *dxdt= x1[elsel]*dJ0+xb1[elsel]*dJ1+xb2[elsel]*dJ2+x2[elsel]*dJ3; + *dydt=y1_[elsel]*dJ0+yb1[elsel]*dJ1+yb2[elsel]*dJ2+y2[elsel]*dJ3; +} + +Static double pbezabstand(elsel, xp, yp) +long elsel; +double xp, yp; +{ + terg erg; + tbezierkoeff bk; + long i, anzt; + double p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y, d, dmin, xb, yb; + + p0x = x1[elsel]; + p0y = y1_[elsel]; + p1x = xb1[elsel]; + p1y = yb1[elsel]; + p2x = xb2[elsel]; + p2y = yb2[elsel]; + p3x = x2[elsel]; + p3y = y2[elsel]; + dmin = ppabstand(p0x, p0y, xp, yp); + d = ppabstand(p3x, p3y, xp, yp); + if (d < dmin) + dmin = d; + koeff_bezier(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y, &bk); + gldritterord(bk.ax, bk.bx, bk.cx, bk.dx - xp, &anzt, erg); + for (i = 1; i <= anzt; i++) { + if ((erg[i] >= 0.0)&&(erg[i] <= 1.0)) { /*Aenderung 19.12.92.*/ + punkt_bezier(elsel, erg[i], &xb, &yb); + d = ppabstand(xb, yb, xp, yp); + if (d < dmin) dmin = d; + } + } + gldritterord(bk.ay, bk.by, bk.cy, bk.dy - yp, &anzt, erg); + for (i = 1; i <= anzt; i++) { + if ((erg[i] >= 0.0)&&(erg[i] <= 1.0)) { /*Aenderung 19.12.92.*/ + punkt_bezier(elsel, erg[i], &xb, &yb); + d = ppabstand(xb, yb, xp, yp); + if (d < dmin) dmin = d; + } + } + return dmin; +} + +Static long getlinedicke(i) +long i; +{long ldicke; + + ldicke=linedicke[i]; + ldicke=ldicke % 100; + if (ldicke > maxldicke) ldicke=maxldicke; + return ldicke; +} + + +Static long getmenuecolor() +{ + return aktcolor; +} + +Static long getlinecolor(i) +long i; +{long lcolor; + + lcolor=schwarz; /*linecolor*/ + if (linedicke[i] >=100) lcolor = linedicke[i]/100; + return lcolor; +} + + +Static long getzcolor(i, painterase) + long i, painterase; +{ long lcolor, zcolor; + + lcolor = getlinecolor(i); /*Farbe der Linie*/ + zcolor = weiss; /*Farbe, die zu zeichnen*/ + if (painterase==paint) zcolor=lcolor; + return zcolor; +} + + +Static Void getlineattribute(i, elemtyp, ltyp, ldicke, lende, lcolor) +long i, elemtyp, *ltyp, *ldicke, *lende, *lcolor; +{ + if (i == 0) { + *lende = 0; /*kein Pfeil*/ + if (selmenue[mpfeilende]==true) /*Pfeil am Ende*/ + *lende = 2; + if (selmenue[mpfeilanf]==true) /*Pfeil am Anfang*/ + *lende = 1; + if ((selmenue[mpfeilanf]==true) && (selmenue[mpfeilende]==true)) + *lende = 3; + *ldicke = aktldicke; /*eingestellte Linienstaerke*/ + *ltyp = 1; /*solid*/ + if (selmenue[mgestrichelt]==true) /*_ _ */ + *ltyp = 5; + if (selmenue[mgepunktet]==true) /*....*/ + *ltyp = 3; + if ((selmenue[mgestrichelt]==true) && (selmenue[mgepunktet]==true)) + /*_._*/ + *ltyp = 7; + if ((selmenue[mcapprojecting] == true)&&(elemtyp == tgerade)&& + (*lende == 0)&&(*ltyp == 1)) + *lende = 4; /*cap projecting */ + *lcolor = getmenuecolor(); + return; + } + *ltyp = linetype[i]; + *ldicke = getlinedicke(i); + *lende = lineende[i]; + *lcolor = getlinecolor(i); +} + +Static Void setlineattribute(i, elsel) + long i, elsel; +{long ltyp, ldicke, lende, lcolor; + + getlineattribute(i, typ[elsel], <yp, &ldicke, &lende, &lcolor); + if (typ[elsel] != ttext) linetype[elsel] = ltyp; + linedicke[elsel] = 100*lcolor+ldicke; + lineende[elsel] = lende; +} + +Static Void winpfeilaus(i, ende, xp, yp, x2, y2,zcolor) + long i, ende,zcolor; + double xp, yp, x2, y2; +/* Pfeilspitze an xp,yp */ +/* Pfeilende in Richtung Punkt x2,y2 */ +/* ende=1 fuer Anfang, ende=2 fuer Ende */ +{ + double d,lpf,bpf,sg,cg; + XPoint points[maxpunkte]; + switch (lineende[i]){ + case 0: return; + case 1: if (ende!=1) return; break; + case 2: if (ende!=2) return; break; + case 3: break; + case 4: return; + } + lpf=6.0+0.8*getlinedicke(i);/*Laenge Pfeil*/ + bpf=(4.0+1.2*getlinedicke(i))*0.5;/*halbe Breite Pfeil*/ + d=ppabstand(xp,yp,x2,y2); + if (d==0) return; + sg=(y2-yp)/d; + cg=(x2-xp)/d; + rpxarray[0] = xp; + rpyarray[0] = yp; + rpxarray[1] = xp+(cg*lpf-sg*bpf); + rpyarray[1] = yp+(sg*lpf+cg*bpf); + rpxarray[2] = xp+(cg*lpf+sg*bpf); + rpyarray[2] = yp+(sg*lpf-cg*bpf); + rpxarray[3] = xp; + rpyarray[3] = yp; + ausfillpolygon(4L,zcolor); +} + + +Static Void winpfeile(i,zcolor) +long i, zcolor; +{ + double xm, ym, lx, ly, cr, sr,xp1,xp2,yp1,yp2; + + switch (typ[i]) { + case tgerade: + winpfeilaus(i, 1L,x1[i],y1_[i],x2[i],y2[i],zcolor); + winpfeilaus(i, 2L,x2[i],y2[i],x1[i],y1_[i],zcolor); + break; + case tkreisbogen: + case tellbogen: + ellpar(i,&xm,&ym,&lx,&ly,&cr,&sr); + ellw_xy(xm,ym,lx,ly,cr,sr,wanf[i],&xp1,&yp1); + ellw_xy(xm,ym,lx,ly,cr,sr,wanf[i]+50,&xp2,&yp2); + winpfeilaus(i,1L,xp1,yp1,xp2,yp2,zcolor); + ellw_xy(xm,ym,lx,ly,cr,sr,wend[i],&xp1,&yp1); + ellw_xy(xm,ym,lx,ly,cr,sr,wend[i]-50,&xp2,&yp2); + winpfeilaus(i,2L,xp1,yp1,xp2,yp2,zcolor); + break; + case tbezier: + winpfeilaus(i, 1L, x1[i],y1_[i],xb1[i],yb1[i],zcolor); + winpfeilaus(i, 2L, x2[i],y2[i],xb2[i],yb2[i],zcolor); + break; + }/*case*/ +} + + +Static Void auspolyline(zcolor,elsel,anzp) + long zcolor,elsel,anzp; + /* Koordinaten 1..anzp in rpxarray und rpyarray*/ + /* elsel fuer Liniendefinition */ + /* falls elsel = 0 dann Standardattribute verwenden */ +{ + long ldicke,lende,ltyp,lcolor,ix,iy,k; + double xx,yy; + XPoint points[maxpunkte]; + for (k=0;k<anzp;k++) { + xx=rpxarray[k]; + yy=rpyarray[k]; + welt_to_bildschirm(xx,yy,&ix,&iy); + points[k].x = ix; + points[k].y = iy; + } + if (elsel==0){ + setvalues(display,gczeichnung,zcolor,0L,0L,0L); + XDrawLines(display,win,gczeichnung, + points,anzp,CoordModeOrigin);} + else { + getlineattribute(elsel, typ[elsel], <yp, &ldicke, &lende, &lcolor); + setvalues(display,gczeichnung,zcolor,ltyp,ldicke,lende); + XDrawLines(display,win,gczeichnung,points,anzp,CoordModeOrigin); + winpfeile(elsel,zcolor); + } +} + +Static double pgxyabstand(); + +Static Void bezierpunkte(x1,y1,x2,y2,x3,y3,x4,y4,anzp) + double x1,y1,x2,y2,x3,y3,x4,y4; + long *anzp; +{ double x12,y12,x23,y23,x34,y34,x1223,y1223,x2334,y2334; + double x12232334, y12232334; + + x23 = (x2+x3)*0.5; + y23 = (y2+y3)*0.5; + /*liegen Punkte ungefaehr auf einer Geraden? */ + if ( (pgxyabstand(x1, y1, x4, y4, x2, y2)< 3.0)&& + (pgxyabstand(x1, y1, x4, y4, x3, y3)< 3.0)) { + rpxarray[*anzp] = x1; + rpyarray[*anzp] = y1; + rpxarray[*anzp+1] = x23; + rpyarray[*anzp+1] = y23; + *anzp += 2; + if (*anzp >= maxpunkte-2) + fehler(4L); + return; + } + x12 = (x1+x2)*0.5; + y12 = (y1+y2)*0.5; + x34 = (x3+x4)*0.5; + y34 = (y3+y4)*0.5; + x1223 = (x12+x23)*0.5; + y1223 = (y12+y23)*0.5; + x2334 = (x23+x34)*0.5; + y2334 = (y23+y34)*0.5; + x12232334 = (x1223+x2334)*0.5; + y12232334 = (y1223+y2334)*0.5; + bezierpunkte(x1,y1,x12,y12,x1223,y1223,x12232334,y12232334,anzp); + bezierpunkte(x12232334,y12232334,x2334,y2334,x34,y34,x4,y4,anzp); +} + +Static Void minmaxbezier(elsel,anzp) + long elsel, anzp; +{ long i; + + elxmin[elsel]=rpxarray[0]; + elxmax[elsel]=rpxarray[0]; + elymin[elsel]=rpyarray[0]; + elymax[elsel]=rpyarray[0]; + + for (i=1;i<anzp;i++) { + if (rpxarray[i] < elxmin[elsel]) + elxmin[elsel]=rpxarray[i]; + if (rpyarray[i] < elymin[elsel]) + elymin[elsel]=rpyarray[i]; + if (rpxarray[i] > elxmax[elsel]) + elxmax[elsel]=rpxarray[i]; + if (rpyarray[i] > elymax[elsel]) + elymax[elsel]=rpyarray[i]; + } +} + + +Static Void ausbezier(elsel,zcolor) +long elsel,zcolor; +{ + long anzp; + + anzp = 0; + bezierpunkte(x1[elsel],y1_[elsel],xb1[elsel],yb1[elsel], + xb2[elsel],yb2[elsel],x2[elsel],y2[elsel],&anzp); + rpxarray[anzp] = x2[elsel]; + rpyarray[anzp] = y2[elsel]; + anzp++; + minmaxbezier(elsel,anzp); + auspolyline(zcolor,elsel,anzp); +} + + +Static Void ausbeziergef(elsel,zcolor) +long elsel,zcolor; +{ + long anzp; + + anzp = 0; + bezierpunkte(x1[elsel],y1_[elsel],xb1[elsel],yb1[elsel], + xb2[elsel],yb2[elsel],x2[elsel],y2[elsel],&anzp); + rpxarray[anzp] = x2[elsel]; + rpyarray[anzp] = y2[elsel]; + anzp++; + minmaxbezier(elsel,anzp); + ausfillpolygon(anzp, zcolor); +} + +Static Void kaestchen(i, anteil, teilung, pos) +long i, anteil, teilung, *pos; +{ + long zeile, platz; + double dx, dy; + + if (*pos == 0) + *pos = 11; + zeile = (long)(*pos / 10.0); + platz = *pos - zeile * 10; + dx = (xem[0] - xam[0]) / teilung; + dy = si_fabs(yem[0] - yam[0]); + xam[i] = xam[0] + (platz - 1) * dx; + xem[i] = xam[i] + anteil * dx; + if (si_fabs(xem[i]-xem[0]) < 1.0) xem[i]=xem[0]; + yem[i] = yem[0] - zeile * dy; + yam[i] = yam[0] - zeile * dy; + platz += anteil; + if (platz > teilung) { + zeile++; + platz = 1; + } + *pos = zeile * 10 + platz; +} + + +Static Void init_tmenue() +{ + long i; + + for (i = 1; i <= zmenue; i++) + strcpy(pr2menue[i], blank); + for (i = 1; i <= zmenue; i++) + strcpy(pr3menue[i], blank); + strcpy(menue[mende], "quit"); + strcpy(pr2menue[mende],intfiletext); + strcpy(pr3menue[mende],extfiletext); + radiogroup[mende] = 1; + strcpy(menue[mladen], "load"); + strcpy(pr2menue[mladen],"input file:"); + radiogroup[mladen] = 1; + strcpy(menue[msave], "save"); + strcpy(pr2menue[msave],intfiletext); + strcpy(pr3menue[msave],extfiletext); + radiogroup[msave] = 1; + strcpy(menue[mtext], "text"); + strcpy(pr2menue[mtext], " position?"); + strcpy(pr3menue[mtext], "?:"); + radiogroup[mtext] = 1; + strcpy(menue[mgerade], "line"); + strcpy(pr2menue[mgerade], " point 1?"); + strcpy(pr3menue[mgerade], " point 2?"); + radiogroup[mgerade] = 1; + strcpy(menue[mkreis], "circle"); + strcpy(pr2menue[mkreis], " center point?"); + strcpy(pr3menue[mkreis], " point on circle?"); + radiogroup[mkreis] = 1; + strcpy(menue[mell], "ellipse"); + strcpy(pr2menue[mell], " center point?"); + strcpy(pr3menue[mell], prxachse); + radiogroup[mell] = 1; + strcpy(menue[mrechteck], "rectangle"); + strcpy(pr2menue[mrechteck], " corner 1?"); + strcpy(pr3menue[mrechteck], " corner 2?"); + radiogroup[mrechteck] = 1; + strcpy(menue[mdreieck], "triangle"); + strcpy(pr2menue[mdreieck], " point 1?"); + strcpy(pr3menue[mdreieck], " point 2?"); + radiogroup[mdreieck] = 1; + strcpy(menue[mviereck], "quadrangle"); + strcpy(pr2menue[mviereck], " point 1?"); + strcpy(pr3menue[mviereck], " point 2?"); + radiogroup[mviereck] = 1; + strcpy(menue[mbezier], "Bezier"); + strcpy(pr2menue[mbezier], " starting point?"); + strcpy(pr3menue[mbezier], " end point?"); + radiogroup[mbezier] = 1; + strcpy(menue[mpolygon], "polygon"); + strcpy(pr2menue[mpolygon], " center point?"); + strcpy(pr3menue[mpolygon], " point on circle?"); + radiogroup[mpolygon] = 1; + strcpy(menue[mspiegeln], "mirror"); + strcpy(pr2menue[mspiegeln], " mirror line?"); + strcpy(pr3menue[mspiegeln], " object(s)?"); + radiogroup[mspiegeln] = 1; + strcpy(menue[mkopieren], "copy"); + strcpy(pr2menue[mkopieren], " reference line?"); + strcpy(pr3menue[mkopieren], " destination line?"); + radiogroup[mkopieren] = 1; + strcpy(menue[mkopbewmaus], "m"); + strcpy(pr2menue[mkopbewmaus], " reference point?"); + strcpy(pr3menue[mkopbewmaus], " destination point?"); + radiogroup[mkopbewmaus] = 0; + strcpy(menue[mbewegen], "move"); + strcpy(pr2menue[mbewegen], " reference line?"); + strcpy(pr3menue[mbewegen], " destination line?"); + radiogroup[mbewegen] = 1; + strcpy(menue[mergaenzen], "complete"); + strcpy(pr2menue[mergaenzen], " line 1?"); + strcpy(pr3menue[mergaenzen], " line 2?"); + radiogroup[mergaenzen] = 1; + strcpy(menue[mausdehnen], "extend"); + strcpy(pr2menue[mausdehnen], " line/arc?"); + radiogroup[mausdehnen] = 1; + strcpy(menue[mbrechen], "trim"); + strcpy(pr2menue[mbrechen], " remove part?"); + radiogroup[mbrechen] = 1; + strcpy(menue[mloeschen], "delete"); + strcpy(pr2menue[mloeschen], " object(s)?"); + radiogroup[mloeschen] = 1; + strcpy(menue[mup], "up"); + strcpy(pr2menue[mup], "/reverse print order, object(s)?"); + radiogroup[mup] = 1; + strcpy(menue[mdown], "down"); + strcpy(pr2menue[mdown], "/put in background, object(s) ?"); + radiogroup[mdown] = 1; + strcpy(menue[meinrasten], "snap"); + radiogroup[meinrasten] = 0; + strcpy(menue[mgefuellt], "*"); + radiogroup[mgefuellt] = 0; + strcpy(menue[mbogen], "C"); + radiogroup[mbogen] = 0; + strcpy(menue[mparallel], "||"); + strcpy(pr2menue[mparallel], " direction of end point?"); + strcpy(pr3menue[mparallel], " parallel line?"); + radiogroup[mparallel] = 2; + strcpy(menue[mlot], "-|"); + strcpy(pr3menue[mlot], " line for normal?"); + radiogroup[mlot] = 2; + strcpy(menue[mmittelpunkt], "mp"); + strcpy(pr2menue[mmittelpunkt], " (mp for center of object)"); + radiogroup[mmittelpunkt] = 0; + strcpy(menue[mpfeilanf], "b>"); + radiogroup[mpfeilanf] = 0; + strcpy(menue[mpfeilende], "e>"); + radiogroup[mpfeilende] = 0; + strcpy(menue[mdick], "=="); + radiogroup[mdick] = 0; + strcpy(menue[mgestrichelt], " _"); + radiogroup[mgestrichelt] = 0; + strcpy(menue[mgepunktet], " ."); + radiogroup[mgepunktet] = 0; + strcpy(menue[mlschieben], "<"); + strcpy(pr2menue[mlschieben], " picture moves left"); + radiogroup[mlschieben] = 0; + strcpy(menue[moschieben], "^"); + strcpy(pr2menue[moschieben], " picture moves up"); + radiogroup[moschieben] = 0; + strcpy(menue[muschieben], "v"); + strcpy(pr2menue[muschieben], " picture moves down"); + radiogroup[muschieben] = 0; + strcpy(menue[mrschieben], ">"); + strcpy(pr2menue[mrschieben], " picture moves right"); + radiogroup[mrschieben] = 0; + strcpy(menue[mredraw], "[]"); + strcpy(pr2menue[mredraw], " redraw"); + radiogroup[mredraw] = 0; + strcpy(menue[mgitter], "G"); + strcpy(pr2menue[mgitter], " grid origin?"); + radiogroup[mgitter] = 1; + strcpy(menue[mcenter], "o"); + strcpy(pr2menue[mcenter], " picture to center"); + radiogroup[mcenter] = 0; + strcpy(menue[mgross], "+"); + strcpy(pr2menue[mgross], " zooming in"); + radiogroup[mgross] = 0; + strcpy(menue[mklein], "-"); + strcpy(pr2menue[mklein], " zooming out"); + radiogroup[mklein] = 0; + strcpy(menue[mxytastatur], " xy"); + strcpy(pr2menue[mxytastatur], + " key input of point in grid coordinates:"); + radiogroup[mxytastatur] = 0; + strcpy(menue[mltext], "l"); + radiogroup[mltext] = 4; + strcpy(menue[mrtext], "r"); + radiogroup[mrtext] = 4; + strcpy(menue[mbtext], "b"); + radiogroup[mbtext] = 5; + strcpy(menue[mttext], "t"); + radiogroup[mttext] = 5; + strcpy(menue[mfont], nullstr); + radiogroup[mfont] = 0; + strcpy(menue[mcut], "cut"); + strcpy(pr2menue[mcut]," reference point?"); + radiogroup[mcut] = 1; + strcpy(menue[mpaste], "paste"); + strcpy(pr2menue[mpaste]," destination point?"); + radiogroup[mpaste] = 1; + strcpy(menue[mcolor], "color"); + radiogroup[mcolor] = 0; + strcpy(menue[mchangelineattr], "chatt"); + strcpy(pr2menue[mchangelineattr], " set attributes to change (= _ . b> e> |] font color l r b t) then select object(s)?"); + radiogroup[mchangelineattr] = 1; + strcpy(menue[mdegrees], "deg"); + strcpy(pr2menue[mdegrees], " input angle in degrees:"); + radiogroup[mdegrees] = 0; + strcpy(menue[mfill], "fill"); + strcpy(pr2menue[mfill], " circle, ellipse, arc or first line (to define triangle or quadrangle)?"); + strcpy(pr3menue[mfill], " second line (to define triangle or quadrangle)?"); + radiogroup[mfill] = 1; + strcpy(menue[mgroupmode], "groupmode"); + radiogroup[mgroupmode] = 0; + strcpy(menue[mnewgroup], "newgroup"); + strcpy(pr2menue[mnewgroup], " first(next) group to combine defined by object(s)?"); + radiogroup[mnewgroup] = 1; + strcpy(menue[mungroup], "ungroup"); + strcpy(pr2menue[mungroup], " group defined by object?, OK to ungroup"); + radiogroup[mungroup] = 1; + strcpy(menue[mshowgroup], "showgroup"); + strcpy(pr2menue[mshowgroup], " group defined by object?"); + radiogroup[mshowgroup] = 1; + strcpy(menue[mgroupok], "OK"); + strcpy(pr2menue[mgroupok], " group ok"); + radiogroup[mgroupok] = 0; + + strcpy(menue[mconnect], "connect"); + strcpy(pr2menue[mconnect], " (not all object types allowed) object1?"); + strcpy(pr3menue[mconnect], " (not all object types allowed) object2 or point?"); + radiogroup[mconnect] = 1; + strcpy(menue[mconnxy], "X"); + radiogroup[mconnxy] = 6; + strcpy(menue[mconnyx], "Y"); + radiogroup[mconnyx] = 6; + strcpy(menue[mconnpoint], "p"); + strcpy(menue[mqueryattr], "attr?"); + strcpy(pr2menue[mqueryattr], " (color, font, linewidth) object?"); + radiogroup[mqueryattr] = 1; + radiogroup[mconnpoint] = 0; + strcpy(menue[mrot], "rotate"); + strcpy(pr2menue[mrot], " degrees, object(s)?"); + strcpy(pr3menue[mrot], " degrees, pivot point?"); + radiogroup[mrot] = 1; + strcpy(menue[mcapprojecting], "|]"); + radiogroup[mcapprojecting] = 0; + strcpy(menue[mwinkelrot], ""); + radiogroup[mwinkelrot] = 0; + strcpy(menue[mread], "stdin"); + strcpy(pr2menue[mread]," "); + radiogroup[mread] = 1; + strcpy(menue[mreadzeit], ""); + radiogroup[mreadzeit] = 0; +/* maximale Nr. bei radiogroup ist 6 */ +/* 1 fuer normale Menueeintraege */ +/* 0 fuer Voreinstellungen */ +} + +Static Void init_kmenue() +{ + long pos,i; double dy; + + xam[0] = xgrf+1.0*wzeichenbreite; + xem[0] = xam[0]+kaestchenbreite; + yam[0] = yzmax - 0.5*kaestchenhoehe; + yem[0] = yam[0]+ kaestchenhoehe; + /* Reihenfolge des Aufrufs gibt Reihenfolge der Anordnung */ + /* 2. und 3. Parameter bei kaestchen: anteil, teilung */ + pos = 0; + kaestchen((long)mtext, 1L, 2L, &pos); + kaestchen((long)mfont, 1L, 2L, &pos); + kaestchen((long)mgerade, 1L, 2L, &pos); + kaestchen((long)mkreis, 1L, 2L, &pos); + kaestchen((long)mell, 1L, 1L, &pos); + kaestchen((long)mrechteck, 1L, 1L, &pos); + kaestchen((long)mdreieck, 1L, 1L, &pos); + kaestchen((long)mviereck, 1L, 1L, &pos); + kaestchen((long)mbezier, 1L, 1L, &pos); + kaestchen((long)mpolygon, 1L, 1L, &pos); + kaestchen((long)mconnect, 5L, 8L, &pos); + kaestchen((long)mconnpoint, 1L, 8L, &pos); + kaestchen((long)mconnxy, 1L, 8L, &pos); + kaestchen((long)mconnyx, 1L, 8L, &pos); + kaestchen((long)mspiegeln, 1L, 2L, &pos); + kaestchen((long)mqueryattr, 1L, 2L, &pos); + kaestchen((long)mrot, 2L, 3L, &pos); + kaestchen((long)mwinkelrot, 1L, 3L, &pos); + kaestchen((long)mkopbewmaus, 1L, 8L, &pos); + kaestchen((long)mkopieren, 3L, 8L, &pos); + kaestchen((long)mbewegen, 4L, 8L, &pos); + kaestchen((long)mergaenzen, 1L, 1L, &pos); + kaestchen((long)mausdehnen, 1L, 2L, &pos); + kaestchen((long)mbrechen, 1L, 2L, &pos); + kaestchen((long)mloeschen, 1L, 2L, &pos); + kaestchen((long)mfill, 1L, 2L, &pos); + kaestchen((long)mup, 1L, 2L, &pos); + kaestchen((long)mdown, 1L, 2L, &pos); + kaestchen((long)mcut, 1L, 2L, &pos); + kaestchen((long)mpaste, 1L, 2L, &pos); + kaestchen((long)mltext, 1L, 4L, &pos); + kaestchen((long)mrtext, 1L, 4L, &pos); + kaestchen((long)mbtext, 1L, 4L, &pos); + kaestchen((long)mttext, 1L, 4L, &pos); + kaestchen((long)mgefuellt, 1L, 4L, &pos); + kaestchen((long)mbogen, 1L, 4L, &pos); + kaestchen((long)mparallel, 1L, 4L, &pos); + kaestchen((long)mlot, 1L, 4L, &pos); + kaestchen((long)mmittelpunkt, 1L, 4L, &pos); + kaestchen((long)mpfeilanf, 1L, 4L, &pos); + kaestchen((long)mpfeilende, 1L, 4L, &pos); + kaestchen((long)mcapprojecting, 1L, 4L, &pos); + kaestchen((long)mdick, 1L, 3L, &pos); + kaestchen((long)mgestrichelt, 1L, 3L, &pos); + kaestchen((long)mgepunktet, 1L, 3L, &pos); + kaestchen((long)mgroupmode, 1L, 1L, &pos); + kaestchen((long)mnewgroup, 1L, 1L, &pos); + kaestchen((long)mungroup, 3L, 4L, &pos); + kaestchen((long)mgroupok, 1L, 4L, &pos); + kaestchen((long)mshowgroup, 1L, 1L, &pos); + kaestchen((long)mlschieben, 1L, 5L, &pos); + kaestchen((long)moschieben, 1L, 5L, &pos); + kaestchen((long)mredraw, 1L, 5L, &pos); + kaestchen((long)muschieben, 1L, 5L, &pos); + kaestchen((long)mrschieben, 1L, 5L, &pos); + kaestchen((long)mgitter, 1L, 4L, &pos); + kaestchen((long)mcenter, 1L, 4L, &pos); + kaestchen((long)mgross, 1L, 4L, &pos); + kaestchen((long)mklein, 1L, 4L, &pos); + kaestchen((long)meinrasten, 1L, 3L, &pos); + kaestchen((long)mxytastatur, 1L, 3L, &pos); + kaestchen((long)mdegrees, 1L,3L, &pos); + kaestchen((long)mcolor, 1L, 1L, &pos); + kaestchen((long)mread, 1L, 2L, &pos); + kaestchen((long)mreadzeit, 1L, 2L, &pos); + kaestchen((long)mchangelineattr, 1L,2L, &pos); + kaestchen((long)mladen, 1L, 2L, &pos); + kaestchen((long)msave, 1L, 2L, &pos); + kaestchen((long)mende, 1L, 2L, &pos); + + dy=yprompt+1.5*wzeichenhoehe-yam[mende]; + for (i=1;i<=zmenue;i++) {yam[i] += dy; yem[i] += dy;} +} + +Static Void ausmenue() +/* Ausdruck des Menues */ +{ + long i; + for (i = 1; i <= zmenue; i++) + ausmenueelement(i); + aussomenue(); +} + +Static Void mstrnstr(x, y, mstr, nstr) +double x, y; +long *mstr, *nstr; +{ + double dx, dy, f; + + dx = x - gridx0; + dy = y - gridy0; + f = 1 / ((gridwx1 * gridwy2 - gridwx2 * gridwy1) * gridw); + *mstr = (long)floor((dx * gridwy2 - dy * gridwx2) * f + 0.5); + *nstr = (long)floor((dy * gridwx1 - dx * gridwy1) * f + 0.5); +} + + +Static Void gridsnap(x, y) +double *x, *y; +{ + long mstrich, nstrich; + double xx,yy; + mstrnstr(*x, *y, &mstrich, &nstrich); + gridpunkt((double)mstrich, (double)nstrich, &xx, &yy); + *x=xx; + *y=yy; +} + + +Static Void naehe(x1, y1, x2, y2, xmin, ymin, min) +double x1, y1, x2, y2, *xmin, *ymin, *min; +{ + double d, dx, dy; + + dx = si_fabs(x2 - x1); + if (dx >= *min) + return; + dy = si_fabs(y2 - y1); + if (dy >= *min) + return; + d = ppabstand(x1, y1, x2, y2); + if (d >= *min) + return; + *min = d; + *xmin = x1; + *ymin = y1; +} + + +Static Void elsnap(x, y) +double *x, *y; +{ + long i; + double xg, yg, xmin, ymin, min; + Static boolean relevant(); + + min = 5.0; + xmin = *x; + ymin = *y; + xg = *x; + yg = *y; + gridsnap(&xg, &yg); + naehe(xg, yg, *x, *y, &xmin, &ymin, &min); + for (i = 1; i <= zelmax; i++) { + if (typ[i] > 0) { + if (relevant(i, *x, *y)==true) { + naehe(x1[i], y1_[i], *x, *y, &xmin, &ymin, &min); + switch (typ[i]) { + + case tgerade: /*Gerade*/ + naehe(x2[i], y2[i], *x, *y, &xmin, &ymin, &min); + break; + + case trechteckgef: + case tviereckgef: + naehe(x2[i], y2[i], *x, *y, &xmin, &ymin, &min); + naehe(xb1[i], yb1[i], *x, *y, &xmin, &ymin, &min); + naehe(xb2[i], yb2[i], *x, *y, &xmin, &ymin, &min); + break; + + case tdreieckgef: + naehe(x2[i], y2[i], *x, *y, &xmin, &ymin, &min); + naehe(xb1[i], yb1[i], *x, *y, &xmin, &ymin, &min); + break; + + case tkreisbogen: + case tellbogen: /*Bogen*/ + case tkreissektorgef: + case tellsektorgef: + naehe(xb1[i], yb1[i], *x, *y, &xmin, &ymin, &min); + naehe(xb2[i], yb2[i], *x, *y, &xmin, &ymin, &min); + break; + + case tbezier: /*Bezier*/ + case tbeziergef: + naehe(x2[i], y2[i], *x, *y, &xmin, &ymin, &min); + break; + }/*case*/ + }/*if relevant */ + } /*if,for*/ + } + *x = xmin; + *y = ymin; +} + +Static Void marklinie(ix,iy,idx,idy,zcolor) + long zcolor,ix,iy,idx,idy; +{ + setvalues(display,gczeichnung,zcolor,0L,0L,0L); + XDrawLine(display,win,gczeichnung,ix-idx,iy-idy,ix+idx,iy+idy); +} + + +Static Void ausmarken(anzp, mtyp, mhoehe, zcolor) +long anzp, mtyp, zcolor; +double mhoehe; +/* Koordinaten in rpxarray,rpyarray */ +{ + long i,ix,iy,imhoehe; + double xx,yy; + XPoint points[maxpunkte],tpoints[10]; + imhoehe = siintround(mhoehe); + if (anzp==0) return; + for (i=0;i<anzp;i++){ + xx=rpxarray[i]; + yy=rpyarray[i]; + welt_to_bildschirm(xx,yy,&ix,&iy); + points[i].x=ix; + points[i].y=iy; + } + if (mtyp==1) {/* Punkte */ + setvalues(display,gczeichnung,zcolor,0L,0L,0L); + XDrawPoints(display,win,gczeichnung,points,anzp,CoordModeOrigin); + return; + } + for (i=0;i<anzp;i++){/*Jede Marke einzeln zeichnen*/ + xx=rpxarray[i]; + yy=rpyarray[i]; + ix=points[i].x; + iy=points[i].y; + switch (mtyp) + { + case 2: /*fuer click (45 Grad Kreuz liegend)*/ + marklinie(ix,iy,imhoehe,imhoehe,zcolor); + marklinie(ix,iy,-imhoehe,imhoehe,zcolor); + break; + case 3: /*fuer Mittelpunkt Zeichnung (Stern)*/ + marklinie(ix,iy,imhoehe,imhoehe,zcolor); + marklinie(ix,iy,-imhoehe,imhoehe,zcolor); + marklinie(ix,iy,0,imhoehe,zcolor); + marklinie(ix,iy,imhoehe,0,zcolor); + break; + case 4: /*fuer Textposition (Dreieck) */ + tpoints[0].x=ix; + tpoints[0].y=iy; + tpoints[3].x=ix; + tpoints[3].y=iy; + welt_to_bildschirm(xx + .3*mhoehe,yy-mhoehe,&ix,&iy); + tpoints[1].x=ix; + tpoints[1].y=iy; + welt_to_bildschirm(xx - .3*mhoehe,yy-mhoehe,&ix,&iy); + tpoints[2].x=ix; + tpoints[2].y=iy; + setvalues(display,gczeichnung,zcolor,0L,0L,0L); + XDrawLines(display,win,gczeichnung,tpoints,4,CoordModeOrigin); + break; + }/* switch */ + } +}/*ausmarken*/ + + +Static Void einemarkeaus(x,y,mtyp,mhoehe,zcolor) + double x,y, mhoehe; + long mtyp,zcolor; +{ + rpxarray[0]=x; + rpyarray[0]=y; + ausmarken(1L,mtyp,mhoehe,zcolor); +} + + +Static Void setzetextmarke(x, y, zcolor) +double x, y; +long zcolor; +{ + long typmarke,i; + double hoehemarke; + typmarke = 4; + hoehemarke = wzeichenbreite; + einemarkeaus(x,y, typmarke, hoehemarke,zcolor); +} + +Static Void setzeclickmarke(x, y, zcolor) +double x, y; +long zcolor; +{ + long typmarke,i; + double hoehemarke; + typmarke = 2; + hoehemarke = 6.0; + einemarkeaus(x,y, typmarke, hoehemarke,zcolor); +} + + +Static Void ausalleclickmarken() +/* Markierung der Click-Punkte */ +{ + long i; + + for (i = 1; i <= 4; i++) { + if (bmarker[i]==true) + setzeclickmarke(xmarker[i], ymarker[i],schwarz); + } +} + + +Static Void neueclickmarke(x, y) +double x, y; +{ + long i; + + if (bmarker[1]==true) + setzeclickmarke(xmarker[1], ymarker[1],weiss); + for (i = 1; i <= 3; i++) { + xmarker[i] = xmarker[i + 1]; + ymarker[i] = ymarker[i + 1]; + bmarker[i] = bmarker[i + 1]; + } + bmarker[4] = true; + xmarker[4] = x; + ymarker[4] = y; + setzeclickmarke(x, y, schwarz); +} + + +Static Void ijminmax(x, y, imin, imax, jmin, jmax) +double x, y; +long *imin, *imax, *jmin, *jmax; +{ + long i,j; + + mstrnstr(x, y, &i, &j); + if (i < *imin) + *imin = i; + if (i > *imax) + *imax = i; + if (j < *jmin) + *jmin = j; + if (j > *jmax) + *jmax = j; +} + + +Static Void ausgrid(zcolor) +long zcolor; +{ + long i, j, imin, jmin, imax, jmax, nn; + double x, y, hoehemarke; + nn = 0; + hoehemarke = 2.0; + einemarkeaus(gridx0, gridy0, 3L,hoehemarke, zcolor); + /*fuer Zentrum */ + mstrnstr(xgr, yprompt, &i, &j); + imin = i; + imax = i; + jmin = j; + jmax = j; + ijminmax(xgr, yzmax, &imin, &imax, &jmin, &jmax); + ijminmax(xzmax, yprompt, &imin, &imax, &jmin, &jmax); + ijminmax(xzmax, yzmax, &imin, &imax, &jmin, &jmax); + hoehemarke = 1.0; + for (j = jmin; j <= jmax; j++) { + for (i = imin; i <= imax; i++) { + gridpunkt((double)i, (double)j, &x, &y); + rpxarray[nn]=x; + rpyarray[nn]=y; + nn++; + if (nn >= maxpunkte) { + ausmarken(nn,1L,hoehemarke,zcolor); + nn = 0; + } + } + } + if (nn > 0) + ausmarken(nn,1L,hoehemarke,zcolor); +} /*ausgrid*/ + + + +Static Void elskalieren(gridw, dxx, dyy, f) +double *gridw, dxx, dyy, f; +{ + long i; + double dx, dy; + + if (f != 1.0) { + *gridw = f * *gridw; + while (*gridw > 1.5 * gridw0) + *gridw /= 2.0; + while (*gridw < 0.6 * gridw0) + *gridw = 2.0 * *gridw; + } + i = (long)floor(dxx / *gridw + 0.5); + dx = i * *gridw; + i = (long)floor(dyy / *gridw + 0.5); + dy = i * *gridw; + + /* fuer readstdin vermerken, welche Skalierungen durchgef"uhrt wurden */ + readdxx = readdxx*f +dx; + readdyy = readdyy*f +dy; + readf = readf*f; + + /* jetzt eigentliche Skalierung */ + + for (i = 1; i <= zelmax; i++) { + if (typ[i] != 0) + skalieren(i, dx, dy, f); + } + for (i = 1; i <= 4; i++) { + if (bmarker[i]==true) + pskalieren(&xmarker[i], &ymarker[i], dx, dy, f); + } + pskalieren(&xlast, &ylast, dx, dy, f); + pskalieren(&gridx0, &gridy0, dx, dy, f); +} + + +Static Void minmax(xmin, xmax, ymin, ymax) +double *xmin, *xmax, *ymin, *ymax; +{ + long i; + boolean erstes; + + *xmax = 0.0; + *ymax = 0.0; + *xmin = 0.0; + *ymin = 0.0; + erstes = true; + for (i = 1; i <= zelmax; i++) { + if (typ[i] > 0) { /*i*/ + if (erstes==true) { + *xmax = elxmax[i]; + *ymax = elymax[i]; + *xmin = elxmin[i]; + *ymin = elymin[i]; + erstes = false; + } + if (elxmax[i] > *xmax) *xmax = elxmax[i]; + if (elymax[i] > *ymax) *ymax = elymax[i]; + if (elxmin[i] < *xmin) *xmin = elxmin[i]; + if (elymin[i] < *ymin) *ymin = elymin[i]; + } + } +} + +Static boolean inwinkel(elsel, w) +long elsel; +double w; +{ + boolean erg; + double wa, we; + + erg = false; + wa = wanf[elsel]; + we = wend[elsel]; + if (si_fabs(wa - w) < 5.0) + erg = true; + if (si_fabs(we - w) < 5.0) + erg = true; + if (we > wa) { + if (w >= wa && w <= we) + erg = true; + } + if (we <= wa) { + if (w <= we || w >= wa) + erg = true; + } + return erg; +} + +Static Void initgrenzen(xp,yp,xxmax,xxmin,yymax,yymin) + double xp,yp,*xxmax,*xxmin,*yymax,*yymin; +{ + *xxmax = xp; + *xxmin = xp; + *yymax = yp; + *yymin = yp; +} + +Void grenzen(xp,yp,xxmax,xxmin,yymax,yymin) + double xp, yp, *xxmax,*xxmin,*yymax,*yymin; +{ + if (xp > *xxmax) *xxmax = xp; + if (xp < *xxmin) *xxmin = xp; + if (yp > *yymax) *yymax = yp; + if (yp < *yymin) *yymin = yp; +} + +Static Void ellgrenzpunkte(i,xxmax,xxmin,yymax,yymin) + long i; + double *xxmax,*xxmin,*yymax,*yymin; +{ + double xm,ym,lx,ly,cr,sr; + double xg1,yg1,w1,xg2,yg2,w2,xg3,yg3,w3,xg4,yg4,w4; + double h1,h2,h3,h4,h5; + + ellpar(i,&xm,&ym,&lx,&ly,&cr,&sr); + h1 = lx*lx*cr*cr+ly*ly*sr*sr; + h2 = ly*ly*cr*cr+lx*lx*sr*sr; + h3 = cr*sr*(lx*lx-ly*ly); + h4 = sqrt(h1); + h5 = sqrt(h2); + xg1 = xm + h4; + xg2 = xm - h4; + yg1 = ym + h4*h3/h1; + yg2 = ym - h4*h3/h1; + w1 = winkelell(xm, ym, lx, ly, cr, sr, xg1, yg1); + w2 = winkelell(xm, ym, lx, ly, cr, sr, xg2, yg2); + yg3 = ym + h5; + yg4 = ym - h5; + xg3 = xm + h5*h3/h2; + xg4 = xm - h5*h3/h2; + w3 = winkelell(xm, ym, lx, ly, cr, sr, xg3, yg3); + w4 = winkelell(xm, ym, lx, ly, cr, sr, xg4, yg4); + if (inwinkel(i,w1)==true) grenzen(xg1,yg1,xxmax,xxmin,yymax,yymin); + if (inwinkel(i,w2)==true) grenzen(xg2,yg2,xxmax,xxmin,yymax,yymin); + if (inwinkel(i,w3)==true) grenzen(xg3,yg3,xxmax,xxmin,yymax,yymin); + if (inwinkel(i,w4)==true) grenzen(xg4,yg4,xxmax,xxmin,yymax,yymin); +} + + +Static Void berechneminmax(i) + long i; +{ + double xxmin,yymin,xxmax,yymax; + double xm,ym,lx,ly,cr,sr; + + if (typ[i] <= 0) return; + switch (typ[i]) { + + case ttext: + initgrenzen(x1[i], y1_[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(xb1[i], yb1[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(xb2[i], yb2[i],&xxmax,&xxmin,&yymax,&yymin); + break; + + case tgerade: + initgrenzen(x1[i], y1_[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(x2[i], y2[i],&xxmax,&xxmin,&yymax,&yymin); + break; + + case trechteckgef: + case tviereckgef: + initgrenzen(x1[i], y1_[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(x2[i], y2[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(xb1[i], yb1[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(xb2[i], yb2[i],&xxmax,&xxmin,&yymax,&yymin); + break; + + case tdreieckgef: + initgrenzen(x1[i], y1_[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(x2[i], y2[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(xb1[i], yb1[i],&xxmax,&xxmin,&yymax,&yymin); + break; + + case tkreis: + case tkreisgef: + ellpar(i,&xm,&ym,&lx,&ly,&cr,&sr); + initgrenzen(xm+lx, ym+ly,&xxmax,&xxmin,&yymax,&yymin); + grenzen(xm-lx, ym-ly,&xxmax,&xxmin,&yymax,&yymin); + break; + + case tell: + case tellgef: + initgrenzen(x1[i],y1_[i],&xxmax,&xxmin,&yymax,&yymin); + ellgrenzpunkte(i,&xxmax,&xxmin,&yymax,&yymin); + break; + + case tkreisbogen: + case tellbogen: + initgrenzen(xb1[i], yb1[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(xb2[i],yb2[i],&xxmax,&xxmin,&yymax,&yymin); + ellgrenzpunkte(i,&xxmax,&xxmin,&yymax,&yymin); + break; + + case tellsektorgef: + case tkreissektorgef: + initgrenzen(x1[i],y1_[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(xb1[i], yb1[i],&xxmax,&xxmin,&yymax,&yymin); + grenzen(xb2[i],yb2[i],&xxmax,&xxmin,&yymax,&yymin); + ellgrenzpunkte(i,&xxmax,&xxmin,&yymax,&yymin); + break; + + case tbezier: + case tbeziergef: + /* keine minmax-Berechnung, da diese ueber ausel() erfolgt */ + return; + }/*case*/ + elxmin[i]=xxmin; + elxmax[i]=xxmax; + elymin[i]=yymin; + elymax[i]=yymax; +} + +Static Void ausfastalles() +{ + static void ausnurelemente(); + XClearWindow(display,win); + if (erwartet==tastatur_erwartet) + textpositionieren(); + prompt(); + ausmenue(); + ausnurelemente(); +} + + +Static Void ausalles() +{ + static void auselemente(); + XClearWindow(display,win); + if (erwartet==tastatur_erwartet) + textpositionieren(); + prompt(); + ausmenue(); + auselemente(); + ausalleclickmarken(); + if (erwartet==tastatur_erwartet) + cursan(curs_x,curs_y); +} + + +Static Void verschieben(art) +long art; +{ + double f, fminus, fplus, dxx, dyy, xmax, ymax, xmin, ymin; + Char s1[maxstrl+1], s2[maxstrl+1], s3[maxstrl+1], + s4[maxstrl+1], s5[maxstrl+1], s6[maxstrl+1]; + + fplus = 1.5; + fminus = 1.0 / fplus; + strcpy(s1, pr1); + strcpy(s2, pr2); + strcpy(s3, pr3); + strcpy(s4, pr4); + strcpy(s5, pr5); + strcpy(s6, pr6); + strcpy(pr1, pr2menue[art]); + strcpy(pr2, nullstr); + strcpy(pr3, nullstr); + strcpy(pr4, nullstr); + strcpy(pr5, nullstr); + strcpy(pr6, nullstr); + + prompt(); + f = 1.0; + dxx = (long)floor((xzmax - xgr) / 4.0 + 0.5); + dyy = (long)floor(yzmax / 4.0 + 0.5); + switch (art) { + + case mlschieben: + dyy = 0.0; + dxx = -dxx; + break; + + case mrschieben: + dyy = 0.0; + break; + + case moschieben: + dxx = 0.0; + break; + + case muschieben: + dxx = 0.0; + dyy = -dyy; + break; + + case mgross: + dxx = 0.0; + dyy = 0.0; + f = fplus; + break; + + case mklein: + dxx = 0.0; + dyy = 0.0; + f = fminus; + break; + + case mcenter: + minmax(&xmin, &xmax, &ymin, &ymax); + dxx = xmittelzei - (long)floor((xmax + xmin) * 0.5 + 0.5); + dyy = ymittelzei - (long)floor((ymax + ymin) * 0.5 + 0.5); + break; + }/*case*/ + elskalieren(&gridw, dxx, dyy, f); + XClearWindow(display,win); + selmenue[art] = false; + strcpy(pr1, s1); + strcpy(pr2, s2); + strcpy(pr3, s3); + strcpy(pr4, s4); + strcpy(pr5, s5); + strcpy(pr6, s6); + ausalles(); +} /*schieben*/ + +Static Void sondertaste (taste) +long taste; +{/* Behandlung von Tasten, die nicht bei */ + /* erwarteter Texteingabe gedrueckt wurden */ + if ((taste == tastecursleft1)||(taste == tastecursleft2)) + verschieben((long)mlschieben); + if ((taste == tastecursright1)||(taste == tastecursright2)) + verschieben((long)mrschieben); + if ((taste == tastecursup1)||(taste == tastecursup2)) + verschieben((long)moschieben); + if ((taste == tastecursdown1)||(taste == tastecursdown2)) + verschieben((long)muschieben); + if ((taste == tasteplus2)||(taste == tasteplus1)) + verschieben((long)mgross); + if ((taste == tasteminus2)||(taste == tasteminus1)) + verschieben((long)mklein); +} + +Static Void control (taste, press) +long taste, press; +{ + if ((taste == tastecontroll)||(taste == tastecontrolr)) + controlan = press; +} + +Static Void menueloc(x, y, i) +double x, y; +long *i; +{ + long j; + + *i = 0; + for (j = 1; j <= zmenue; j++) { + if (x < xam[j]) + goto _L1; + if (x > xem[j]) + goto _L1; + if (y < yam[j]) + goto _L1; + if (y > yem[j]) + goto _L1; + *i = j; + goto _L2; +_L1: ; + } + goto _L3; +_L2: + if (*i==mredraw) { + *i=0; + ausalles(); + return; + } + /* test ob Anklicken fuer changeattributs relevant */ + if (*i==mpfeilanf) changelende = true; + if (*i==mpfeilende) changelende = true; + if (*i==mcapprojecting) changelende = true; + if (*i==mdick) changelwidth = true; + if (*i==mgestrichelt) changelstyle = true; + if (*i==mgepunktet) changelstyle = true; + if (*i==mfont) changefont = true; + if (*i==mcolor) changecolor = true; + if (*i==mltext) changeposition = true; + if (*i==mrtext) changeposition = true; + if (*i==mbtext) changeposition = true; + if (*i==mttext) changeposition = true; + + if (!(radiogroup[*i] == 1 && selmenue[*i]==true)) { + if (selmenue[*i]==true) selmenue[*i] = false; + else selmenue[*i]=true; + ausmenueelement(*i); + } + if (radiogroup[*i] != 0 && selmenue[*i]==true) { /*if*/ + for (j = 1; j <= zmenue; j++) { + if (*i != j && selmenue[j]==true && radiogroup[j] == radiogroup[*i]) { + selmenue[j] = false; + ausmenueelement(j); + } + } /*j*/ + } +_L3: ; +} + + +Static boolean gschnittpunkt(x1, y1, dx1, dy1, x2, y2, dx2, dy2, xs, ys) +double x1, y1, dx1, dy1, x2, y2, dx2, dy2, *xs, *ys; +{ + boolean Result; + double xp, yp, m1, m2, dm, diffx12, diffy12; + + /*Schnittpunkt zweier Geraden*/ + Result = false; + diffx12 = x1 - x2; + diffy12 = y1 - y2; + xp = 0.0; + yp = 0.0; + if (dx1 == 0.0 && dx2 == 0.0) /*parallel*/ + goto _L2; + if (dx1 == 0.0) { + xp = x1; + yp = dy2 / dx2 * diffx12 + y2; + goto _L1; + } + if (dx2 == 0.0) { + xp = x2; + yp = y1 - dy1 / dx1 * diffx12; + goto _L1; + } + if (dy1 == 0.0 && dy2 == 0.0) /*parallel*/ + goto _L2; + if (dy1 == 0.0) { + xp = diffy12 * dx2 / dy2 + x2; + yp = y1; + goto _L1; + } + if (dy2 == 0.0) { + xp = x1 - diffy12 * dx1 / dy1; + yp = y2; + goto _L1; + } + m1 = dy1 / dx1; + m2 = dy2 / dx2; + if (si_fabs(m1 - m2) < 0.0001) /*parallel*/ + goto _L2; + dm = m2 - m1; + dm = 1 / dm; + xp = diffy12 * dm + m2 * dm * x2 - m1 * dm * x1; + yp = m2 * dm * y1 - m1 * dm * m2 * diffx12 - m1 * dm * y2; +_L1: + Result = true; +_L2: + *xs = xp; + *ys = yp; + return Result; +} + + +Static boolean lot(x1, y1, dx1, dy1, xp, yp, xs, ys) +double x1, y1, dx1, dy1, xp, yp, *xs, *ys; +{ + if (gschnittpunkt(x1, y1, dx1, dy1, xp, yp, -dy1, dx1, xs, ys)==true) + return true; + else + return false; +} + + +Static boolean inxystrecke(x1, y1, x2, y2, xs, ys) +double x1, y1, x2, y2, xs, ys; +{ + double d, d1, d2; + + d = ppabstand(x1, y1, x2, y2); + d1 = ppabstand(xs, ys, x1, y1); + d2 = ppabstand(xs, ys, x2, y2); + if ((d1 + d2) < (d + 3.0)) + return true; + else + return false; +} + + +Static double pgxyabstand(x1, y1, x2, y2, xp, yp) +double x1, y1, x2, y2, xp, yp; +{ + double xs,ys,d12,d1s,d2s,dmin; + + dmin = initabstand; + lot(x1, y1, x2-x1, y2-y1, xp, yp, &xs, &ys); + d12=ppabstand(x1,y1,x2,y2); + d1s=ppabstand(x1,y1,xs,ys); + d2s=ppabstand(x2,y2,xs,ys); + if (inxystrecke(x1, y1, x2, y2, xs, ys)==true) { + /* Fusspunkt Lot ist etwa in Strecke */ + /* nur dann wird Strecke als selektiert betrachtet! */ + dmin = ppabstand(xp,yp,xs,ys); + } + return dmin; +} + +Static double pgabstand(elsel, xp, yp) +long elsel; +double xp, yp; +{ double dmin; + + dmin = pgxyabstand(x1[elsel], y1_[elsel], x2[elsel], y2[elsel], xp, yp); + return dmin; +} + + + + +Static Void kopunvotext(elsel, i) +long elsel, i; +{ + typ[i] = typ[elsel]; + x1[i] = x1[elsel]; + y1_[i] = y1_[elsel]; + x2[i] = x2[elsel]; + y2[i] = y2[elsel]; + xb1[i] = xb1[elsel]; + yb1[i] = yb1[elsel]; + xb2[i] = xb2[elsel]; + yb2[i] = yb2[elsel]; + wanf[i] = wanf[elsel]; + wend[i] = wend[elsel]; + elxmin[i] =elxmin[elsel]; + elxmax[i] =elxmax[elsel]; + elymin[i] =elymin[elsel]; + elymax[i] =elymax[elsel]; + lineende[i] = lineende[elsel]; + linedicke[i] = linedicke[elsel]; + linetype[i] = linetype[elsel]; + laenge1[i] = laenge1[elsel]; + laenge2[i] = laenge2[elsel]; + rotwi[i] = rotwi[elsel]; + crw[i] = crw[elsel]; + srw[i] = srw[elsel]; + textno[i] = textno[elsel]; + sequenz[i] = sequenz[elsel]; + blink[i] = false; /* Beim Kopieren ist neues Element nicht */ + /* selektiert !!!!! */ + blinkalt[i] = false; + group[i] = group[elsel]; +} + +Static Void loescheelement(i) +long i; +{ + if ((typ[i] == ttext) || (typ[i] == -ttext)) + strcpy(texte[textno[i]],nullstr); + typ[i] = 0; +} + + +Static Void kompakt() +{ + /*belegte Elemente an Anfang der Liste*/ + /*ohne Aenderung der Reihenfolge */ + long i, delta; + + delta=0; + for (i = 1; i <= zelmax; i++) { + if (typ[i] <= 0) { + delta++; + loescheelement(i); + } + else { + if (delta != 0) {kopunvotext(i,i-delta); typ[i]=0;} + } + } + zelmax=zelmax-delta; +} + +Static Void freieselement(k) +long *k; +{ + long i; +_L0: + if (zelmax==zel) fehler(1L); + zelmax++; + i = zelmax; + *k = i; + typ[i] = -1; /*vorlaeufig belegt*/ + x1[i] = 0.0; + y1_[i] = 0.0; + x2[i] = 0.0; + y2[i] = 0.0; + xb1[i] = 0.0; + yb1[i] = 0.0; + xb2[i] = 0.0; + yb2[i] = 0.0; + wanf[i] = 0.0; + wend[i] = wg; + elxmin[i] = 0.0; + elxmax[i] = 0.0; + elymin[i] = 0.0; + elymax[i] = 0.0; + linedicke[i] = 1L; + lineende[i] = 0L; + linetype[i] = 1L; + laenge1[i] = 0.0; + laenge2[i] = 0.0; + rotwi[i] = 0.0; + crw[i] = 1.0; + srw[i] = 0.0; + textno[i] = 0; + sequenz[i] = 0; + blink[i] = false; + blinkalt[i] = false; + group[i] = 0; +} + +Static Void freiestextel(k) +long *k; +{ + long i; + + for (i = 1; i <= zstr; i++) { + if (istnullstr(texte[i])==true) + goto _L1; + } + fehler(2L); +_L1: + *k = i; +} + + +Static Void kopunv(elsel, i) +long elsel, i; +{ kopunvotext(elsel,i); + if (typ[i] != ttext) + return; + typ[i] = -ttext; + freiestextel(&textno[i]); + typ[i] = ttext; + strcpy(texte[textno[i]], texte[textno[elsel]]); +} + +Static Void ausline(k,zcolor) + long k,zcolor; +{ + rpxarray[0]=x1[k]; + rpyarray[0]=y1_[k]; + rpxarray[1]=x2[k]; + rpyarray[1]=y2[k]; + auspolyline(zcolor,k,2L); +} + + +Static Void ausgefviereck(k,zcolor) +long k,zcolor; +{ + rpxarray[0]=x1[k]; + rpyarray[0]=y1_[k]; + rpxarray[1]=xb1[k]; + rpyarray[1]=yb1[k]; + rpxarray[2]=x2[k]; + rpyarray[2]=y2[k]; + rpxarray[3]=xb2[k]; + rpyarray[3]=yb2[k]; + rpxarray[4]=x1[k]; + rpyarray[4]=y1_[k]; + ausfillpolygon(5L,zcolor); +} + +Static Void ausgefdreieck(k,zcolor) +long k,zcolor; +{ + rpxarray[0]=x1[k]; + rpyarray[0]=y1_[k]; + rpxarray[1]=x2[k]; + rpyarray[1]=y2[k]; + rpxarray[2]=xb1[k]; + rpyarray[2]=yb1[k]; + rpxarray[3]=x1[k]; + rpyarray[3]=y1_[k]; + ausfillpolygon(4L,zcolor); +} + +Static Void austextline(k,zcolor) +long k; +{ + long ix1,iy1,ix2,iy2; + + welt_to_bildschirm(xb1[k], yb1[k], &ix1, &iy1); + welt_to_bildschirm(xb2[k], yb2[k], &ix2, &iy2); + setvalues(display,gczeichnung,zcolor,6L,0L,0L); + XDrawLine(display,win,gczeichnung,ix1,iy1,ix2,iy2); +} + + +Static Void bogenauspar(elsel,ltyp,ldicke,lende,lcolor, + ixa,iya,ilx,ily,iwa,idw) +long elsel,*ltyp,*ldicke,*lcolor,*ixa,*iya,*ilx,*ily,*iwa,*idw; +{ + double xm,ym,lx,ly,cr,sr,wa,dw; + long ixm, iym; + ellpar(elsel, &xm, &ym, &lx, &ly, &cr, &sr); + getlineattribute(elsel, typ[elsel], ltyp, ldicke, lende, lcolor); + welt_to_bildschirm(xm-lx, ym+ly, ixa, iya); + *ilx = siintround(2.0*lx); + *ily = siintround(2.0*ly); + wa=wanf[elsel]; + dw=wend[elsel]-wa; + if (dw<=0.0) dw += wg; + /* Winkel in Grad*64 */ + *iwa=siintround(wa*6.4); + *idw=siintround(dw*6.4); +} + + +Static Void ausbogen(elsel,zcolor) + long elsel,zcolor; +{ + long ltyp,ldicke,lende,lcolor,ixa,iya,ilx,ily,iwa,idw; + + bogenauspar(elsel,<yp,&ldicke,&lende,&lcolor, + &ixa,&iya,&ilx,&ily,&iwa,&idw); + setvalues(display,gczeichnung,zcolor,ltyp,ldicke,lende); + XDrawArc(display,win,gczeichnung,ixa,iya,ilx,ily,iwa,idw); + winpfeile(elsel,zcolor); +} + +Static Void ausgefbogen(elsel,zcolor) + long elsel,zcolor; +{ + long ltyp,ldicke,lende,lcolor,ixa,iya,ilx,ily,iwa,idw; + bogenauspar(elsel,<yp,&ldicke,&lende,&lcolor, + &ixa,&iya,&ilx,&ily,&iwa,&idw); + setvalues(display,gczeichnung,zcolor,ltyp,ldicke,lende); + XFillArc(display,win,gczeichnung,ixa,iya,ilx,ily,iwa,idw); + winpfeile(elsel,zcolor); +} + +Static Void ellipse2polygon(i,kerg) +long i,*kerg; +{ + double umfang, lambda, lambdaq, xp, yp, dw, w, + xm, ym, lx, ly, lmax, cr, sr, wa, we; + long k, m; + + ellpar(i, &xm, &ym, &lx, &ly, &cr, &sr); + lambda = (lx-ly)/(lx+ly); + lambdaq = lambda*lambda; + umfang = pi*(lx+ly)*(64.0-3.0*lambdaq*lambdaq)/(64.0-16*lambdaq); + m = umfang/10.0; /* ungefaehre Zahl der Strecken mit je 5 Pixel */ + if (m < 10) m = 10; + if (m > maxpunkte) m = maxpunkte - 10; + if (m > 50) m = 50; + dw = wg/m; + wa = wanf[i]; + we = wend[i]; + w = wa; + if (we <= wa) we += wg; + + k = 0; + while (w < we){ + ellw_xy(xm, ym, lx, ly, cr, sr, w, &xp, &yp); + w += dw; + rpxarray[k]=xp; + rpyarray[k]=yp; + k++; + }; + ellw_xy(xm, ym, lx, ly, cr, sr, we, &xp, &yp); + rpxarray[k]=xp; + rpyarray[k]=yp; + k++; + if (typ[i] == tellsektorgef) { + rpxarray[k]=xm; + rpyarray[k]=ym; + k++; + rpxarray[k]=rpxarray[0]; + rpyarray[k]=rpyarray[0]; + k++; + } + *kerg = k; +} + +Static Void ausellgef(i,zcolor) +long i,zcolor; +{ long k; + + ellipse2polygon(i,&k); + ausfillpolygon(k,zcolor); +} + +Static Void ausellipse(i,zcolor) +long i,zcolor; +{ long k; + + ellipse2polygon(i,&k); + auspolyline(zcolor,i,k); +} + +Static Void ausel(i, painterase) +long i, painterase; +{ long fontart, zcolor; + + zcolor = getzcolor(i, painterase); + /* zcolor ist Farbe der Zeichnung */ + /* bestimmen aus Angabe color und Wert Farbe bei Element! */ + switch (typ[i]) { /*case*/ + + case ttext: + if (rotwi[i] != 0.0) austextline(i,zcolor); + fontart=linetype[i]; + if (i != texterase) + ztextaus(win, i, x2[i], y2[i], texte[textno[i]],zcolor,fontart); + setzetextmarke(x1[i], y1_[i], zcolor); + break; + + case tgerade: + ausline(i,zcolor); + break; + + case trechteckgef: + case tviereckgef: + ausgefviereck(i,zcolor); + break; + + case tdreieckgef: + ausgefdreieck(i,zcolor); + break; + + case tkreis: + ausbogen(i,zcolor); + break; + + case tkreisgef: + case tkreissektorgef: + ausgefbogen(i,zcolor); + break; + + case tkreisbogen: + ausbogen(i,zcolor); + break; + + case tellgef: + case tellsektorgef: + ausellgef(i,zcolor); + break; + + case tell: + case tellbogen: + ausellipse(i,zcolor); + break; + + case tbezier: + ausbezier(i,zcolor); + break; + + case tbeziergef: + ausbeziergef(i,zcolor); + break; + } +} + +Static Void ltd_usleep(s, mu) +long s, mu; +{ + st_delay.tv_usec = mu; + st_delay.tv_sec = s; + select(32, 0, 0, 0, &st_delay); +} + +Static Void Flush_ltd_usleep(s, mu) +long s, mu; +{ + XFlush(display); + /* ganz wichtig, damit vor sleep noch alles ausgegeben wird */ + ltd_usleep(s, mu); +} + +Static Void ausblinkelemente() +{ + long i,f; + f = 1; + if (tablett) + f = 10; + if (blinkintervallzaehler==0) { + /* blinkfarbe == paint oder erase ! */ + if (blinkfarbe == erase) { + for (i = 1; i <= zelmax; i++) + if ((typ[i] > 0)&&(blink[i]==true)) ausel(i, erase); + for (i = 1; i <= zelmax; i++) + if ((typ[i] > 0)&&(blink[i]==false)) ausel(i, paint); + } + else + for (i = 1; i <= zelmax; i++) { + if (typ[i] > 0) ausel(i, paint); + } + } + ausgrid(schwarz); + Flush_ltd_usleep(0L,(long)(100000/f)); + /* 100/f ms Grund-Wartezeit bzw. Reaktionszeit */ + if ((blinkfarbe==paint)&&(blinkintervallzaehler++ > 10*f)) { + blinkintervallzaehler = 0; + blinkfarbe=erase; + } + else { + if ((blinkfarbe==erase)&&(blinkintervallzaehler++ > 2*f)) { + blinkintervallzaehler = 0; + blinkfarbe=paint; + } + } +} + +Static Void ausnurelemente() +{ + long i; + + for (i = 1; i <= zelmax; i++) { + if (typ[i] > 0) + ausel(i, paint); + } /* end for */ + zeichnen = false; +} + +Static Void auselemente() +{ + ausnurelemente(); + ausalleclickmarken(); + ausgrid(schwarz); +} + +Static Void blinkenaus() +{ + blinkend = false; + auselemente(); +} + +Static Void blinkenan() +{ long i; + + for (i = 1; i <= zelmax; i++) { + blinkalt[i] = blink[i]; + blink[i] = false; + } + if (blinkend==true) + blinkenaus(); + blinkfarbe = erase; + blinkend = true; + blinkintervallzaehler = 0; +} +Static boolean duplikat(); + +Static long interncreateline(elselalt, xx1, yy1, xx2, yy2) +long elselalt; +double xx1, yy1, xx2, yy2; +{ + double d; + long elsel, ldicke, ltyp, lende; + + if (elselalt == 0) { + d = ppabstand(xx1, yy1, xx2, yy2); + if (d < dminein) + return 0; + } + freieselement(&elsel); + typ[elsel] = tgerade; + x1[elsel] = xx1; + y1_[elsel] = yy1; + x2[elsel] = xx2; + y2[elsel] = yy2; + setlineattribute(elselalt, elsel); + berechneminmax(elsel); + return elsel; +} + +Static Void createline(elselalt, xx1, yy1, xx2, yy2) +long elselalt; +double xx1, yy1, xx2, yy2; +{ + long elsel; + + elsel = interncreateline(elselalt, xx1, yy1, xx2, yy2); + if (elsel != 0) + ausel(elsel, paint); +} + +Static long einbezier(x,y,taste,msel,phase) +long *msel,phase,taste; +double x,y; +{ + static long elsel; + long elselalt, ltyp, ldicke, lende; + static boolean fortsetzung; + double d1,d2; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + case 4: goto L4; + } + L0: + fortsetzung = false; + return 1; + L1: + freieselement(&elsel); + x1[elsel] = x; + y1_[elsel] = y; + strcpy(pr4, " end point of tangent to starting point?"); + return 2; + L2: + xb1[elsel] = x; + yb1[elsel] = y; + if (si_fabs(x - x1[elsel]) < 3.0 && si_fabs(y - y1_[elsel]) < 3.0) + return 2; + strcpy(pr4, " first point of tangent to end point?"); + return 3; + L3: + xb2[elsel] = x; + yb2[elsel] = y; + if (fortsetzung == true) { + /* Steigung bei Anfangspunkt beibehalten, aber die Entfernung zum */ + /* Punkt 2 auf halben Abstand Punkt3 von Anfangspunkt setzen */ + d1 = ppabstand(x1[elsel],y1_[elsel], xb1[elsel],yb1[elsel]); + d2 = ppabstand(x1[elsel],y1_[elsel], x,y); + if (d2==0.0) + d2=4.0; + xb1[elsel] = x1[elsel] + d2/d1*0.4*(xb1[elsel]-x1[elsel]); + yb1[elsel] = y1_[elsel] + d2/d1*0.4*(yb1[elsel]-y1_[elsel]); + } + strcpy(pr4, pr3menue[*msel]); + return 4; + L4: + x2[elsel] = x; + y2[elsel] = y; + if (si_fabs(x - xb2[elsel]) < 3.0 && si_fabs(y - yb2[elsel]) < 3.0) + return 4; + if (selmenue[mgefuellt] == true) + typ[elsel] = tbeziergef; + else + typ[elsel] = tbezier; + setlineattribute(0L, elsel); + /* berechneminmax(elsel); */ + /* unnoetig, da bei ausel fuer bezier berechnet!! */ + ausel(elsel, paint); + /* ggf. weiterfuehren der Bezierkurve */ + elselalt=elsel; + freieselement(&elsel); + x1[elsel]=x2[elselalt]; + y1_[elsel]=y2[elselalt]; + xb1[elsel]=2*x1[elsel]-xb2[elselalt]; + yb1[elsel]=2*y1_[elsel]-yb2[elselalt]; + strcpy(pr4, " first point of tangent to end point?"); + fortsetzung = true; + return 3; +} + + +Static Void ellanfendpunkt(i) +long i; +{ + double lx, ly, xm, ym, cr, sr; + + ellpar(i, &xm, &ym, &lx, &ly, &cr, &sr); + while (wanf[i] >= wg) + wanf[i] -= wg; + while (wanf[i] < 0.0) + wanf[i] += wg; + while (wend[i] > wg) + wend[i] -= wg; + while (wend[i] < 0.0) + wend[i] += wg; + ellw_xy(xm, ym, lx, ly, cr, sr, wanf[i], &xb1[i], &yb1[i]); + ellw_xy(xm, ym, lx, ly, cr, sr, wend[i], &xb2[i], &yb2[i]); +} + + +Static Void kreisanfendpunkt(i) +long i; +{ + double xm, ym, rad; + + xm = x1[i]; + ym = y1_[i]; + rad = laenge1[i]; + while (wanf[i] >= wg) + wanf[i] -= wg; + while (wanf[i] < 0.0) + wanf[i] += wg; + while (wend[i] > wg) + wend[i] -= wg; + while (wend[i] < 0.0) + wend[i] += wg; + xb1[i] = xm + rad * cos(wanf[i] * fgradbo); + yb1[i] = ym + rad * sin(wanf[i] * fgradbo); + xb2[i] = xm + rad * cos(wend[i] * fgradbo); + yb2[i] = ym + rad * sin(wend[i] * fgradbo); +} + +Static long winkeleingabe(w) +double *w; +{ long i; double wi; + + if(istnullstr(EinText)==true) return 1; + i=sscanf(EinText,"%lf",&wi); + if (i!=1) return 2; + if ((wi > 4000)||(wi < -4000)) return 2; + while (wi > 360.0) wi -= 360.0; + while (wi < 0.0) wi += 360.0; + *w = wi*10; + return 0; +} + +Static long einarc(x,y,elsel,taste,phase) + long elsel, taste, phase; + double x,y; + /* Eingabe Kreisbogen */ +{ + long i, ltyp, ldicke, lende; + + phase -= phase2; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + strcpy(pr4, pranfwi); + if (selmenue[mdegrees]==true) + inittastaturtext(nullstr,pr2menue[mdegrees],1L); + winerwartet = 1; + return (phase2+1); + L1: + if (taste==0) {/* stringeingabe*/ + i = winkeleingabe(&wanf[elsel]); + if (i != 0) goto L0; + } + else + wanf[elsel] = winkelk(x1[elsel], y1_[elsel], x, y); + L1B: + winerwartet = 1; + strcpy(pr4, prendwi); + if (selmenue[mdegrees]==true) + inittastaturtext(nullstr,pr2menue[mdegrees],1L); + return (phase2+2); + L2: + if (taste==0) {/* stringeingabe*/ + i = winkeleingabe(&wend[elsel]); + if (i != 0) goto L1B; + } + else + wend[elsel] = winkelk(x1[elsel], y1_[elsel], x, y); + winerwartet = 0; + if (si_fabs(wanf[elsel]-wend[elsel])<10) goto L1B; + setlineattribute(0L, elsel); + kreisanfendpunkt(elsel); + if (selmenue[mgefuellt]==true) {typ[elsel] = tkreissektorgef;} + else typ[elsel] = tkreisbogen; + berechneminmax(elsel); + ausel(elsel, paint); + if (typ[elsel] != tkreissektorgef) return 0; + /* anschliessenden Sektor eingeben, nur Endwinkel */ + /* zunaechst bisherigen Sektor umspeichern */ + freieselement(&i); + kopunv(elsel,i); + typ[elsel] = -1; + wanf[elsel] = wend[elsel]; + strcpy(pr4, prendwisektor); + goto L1B; +} + + + +Static Void normgrid() +{ + double a, dx, dy; + + dx = gridwx1 + gridwx2; + dy = gridwy1 + gridwy2; + a = sifsqrt(1.0, dx * dx + dy * dy); + gridw0 = a; + gridw = a; + a = 1 / a; + gridwx1 *= a; + gridwy1 *= a; + gridwx2 *= a; + gridwy2 *= a; +} + +Static Void selmenloeschen(msel) +long *msel; +{ + selmenue[*msel]=false; + ausmenueelement(*msel); + *msel=0; +} + +Static long eingitter(x,y,msel,phase) + long *msel,phase; + double x,y; + /*eingitter*/ +{ + double dx, dy, a, c, aq, cq, cosa; + static double b, bq; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + } + L0: + strcpy(pr2, " grid"); + ausgrid(weiss); + initgrid(); + ausgrid(schwarz); + strcpy(pr4, pr2menue[*msel]); + return 1; + L1: + ausgrid(weiss); + gridx0 = x; + gridy0 = y; + ausgrid(schwarz); + strcpy(pr4, " first grid point to the right?"); + return 2; + L2: + x -= gridx0; + y -= gridy0; + bq = x * x + y * y; + b = sifsqrt(1.0, bq); + if (b < 5) return 2; + ausgrid(weiss); + gridwx1 = x; + gridwy1 = y; + gridwx2 = -y; + gridwy2 = x; + normgrid(); + ausgrid(schwarz); + strcpy(pr4, " first grid point up?"); + return 3; + L3: + x -= gridx0; + y -= gridy0; + cq = x * x + y * y; + c = sifsqrt(1.0, cq); + if (c < 5) return 3; + dx = gridwx1 * gridw - x; + dy = gridwy1 * gridw - y; + aq = dx * dx + dy * dy; + a = sifsqrt(1.0, aq); + if (a < 5) return 3; + /*Kosinussatz*/ + cosa = (aq - bq - cq) / (2 * b * c); + if (si_fabs(cosa) > 0.98) return 2; + ausgrid(weiss); + gridwx1 *= gridw; + gridwy1 *= gridw; + gridwx2 = x; + gridwy2 = y; + normgrid(); + ausgrid(schwarz); + selmenloeschen(msel); + return 0; +} + + +Static long eincircle(x,y,taste,msel,phase) + long *msel,taste,phase; + double x,y; + /* Eingabe Kreis oder Kreisbogen */ +{ + static long elsel; + long ltyp, ldicke, lende; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + default: goto L3; /* Fuer einarc */ + } + L0: + return 1; + L1: + freieselement(&elsel); + x1[elsel] = x; + y1_[elsel] = y; + strcpy(pr4, pr3menue[*msel]); + return 2; + L2: + laenge1[elsel] = ppabstand(x, y, x1[elsel], y1_[elsel]); + if (laenge1[elsel] < 2.0) laenge1[elsel] = 2.0; + laenge2[elsel] = laenge1[elsel]; + setlineattribute(0L, elsel); + lineende[elsel] = 0; + if ((selmenue[mbogen]!=true)&&(selmenue[mgefuellt]!=true)) { + typ[elsel] = tkreis; + berechneminmax(elsel); + ausel(elsel, paint); + return 0; + } + if ((selmenue[mbogen]!=true)&&(selmenue[mgefuellt]==true)) { + typ[elsel] = tkreisgef; + berechneminmax(elsel); + ausel(elsel, paint); + return 0; + } + phase=phase2; + L3: + phase =einarc(x,y,elsel,taste,phase); + return phase; +} + + +Static boolean relevant(i, xp, yp) +long i; +double xp, yp; +/* Pruefung, ob der Punkt relevant fuer */ +/* die Wahl des Elements i sein kann */ +{ + double xanf, yanf, xend, yend, rmax; + + if (typ[i] <=0) return false; + rmax = 1.05*maxabstand; + xanf=elxmin[i]-rmax; + xend=elxmax[i]+rmax; + yanf=elymin[i]-rmax; + yend=elymax[i]+rmax; + if ((xp >= xanf)&&(xp <= xend)&& + (yp >= yanf)&&(yp <= yend)) return true; + return false; +} + +Static double pkreisabstand(i, xp, yp) +long i; +double xp, yp; +{ double d, dmin; + + dmin= initabstand; + d = si_fabs(ppabstand(x1[i], y1_[i], xp, yp) - laenge1[i]); + if (d < dmin) + dmin = d; + return dmin; +} + +Static double pkreisboabstand(i, xp, yp) +long i; +double xp, yp; +{ + double d, w; + + d = pkreisabstand(i, xp, yp); + if (d>=initabstand) + return d; + w = winkelk(x1[i], y1_[i], xp, yp); + if (inwinkel(i, w)==false) + return initabstand; + return d; +} + +Static double pellabstand(i, xp, yp) +long i; +double xp, yp; +{ + double xell, yell, w, d, dmin; + + dmin= initabstand; + w = winkelell(x1[i], y1_[i], laenge1[i], laenge2[i], crw[i], srw[i], xp, yp); + ellw_xy(x1[i], y1_[i], laenge1[i], laenge2[i], crw[i], srw[i], w, &xell, + &yell); + d = ppabstand(xp, yp, xell, yell); + if (d < dmin) + dmin = d; + return dmin; +} + +Static double pellboabstand(i, xp, yp) +long i; +double xp, yp; +{ + double xell, yell, w, d, dmin; + + dmin= initabstand; + w = winkelell(x1[i], y1_[i], laenge1[i], laenge2[i], crw[i], srw[i], xp, yp); + ellw_xy(x1[i], y1_[i], laenge1[i], laenge2[i], crw[i], srw[i], w, &xell, + &yell); + d = ppabstand(xp, yp, xell, yell); + if (inwinkel(i, w)==false) + return dmin; + if (d < dmin) + dmin = d; + return dmin; +} + +Static double pviereckabstand(i, xp, yp) +long i; +double xp, yp; +{ double d, dmin; + + dmin = pgxyabstand(x1[i], y1_[i], x2[i], y2[i], xp, yp); + d = pgxyabstand(x1[i], y1_[i], xb1[i], yb1[i], xp, yp); + if (d < dmin) + dmin = d; + d = pgxyabstand(xb1[i], yb1[i], x2[i], y2[i], xp, yp); + if (d < dmin) + dmin = d; + d = pgxyabstand(x2[i], y2[i], xb2[i], yb2[i], xp, yp); + if (d < dmin) + dmin = d; + d = pgxyabstand(xb2[i], yb2[i], x1[i], y1_[i], xp, yp); + if (d < dmin) + dmin = d; + return dmin; +} + +Static double pdreieckabstand(i, xp, yp) +long i; +double xp, yp; +{ + double d, dmin; + dmin = pgxyabstand(x1[i], y1_[i], xb1[i], yb1[i], xp, yp); + d = pgxyabstand(xb1[i], yb1[i], x2[i], y2[i], xp, yp); + if (d < dmin) + dmin = d; + d = pgxyabstand(x2[i], y2[i], x1[i], y1_[i], xp, yp); + if (d < dmin) + dmin = d; + return dmin; +} + +Static double abstmod1(d) +double d; +{/* fuer nicht gefuellte Elemente */ + double x, dgrenz; + dgrenz = maxabstand*0.3; + if (d < dgrenz) return d; + x = (d-dgrenz)*2.0+dgrenz; + return x; +} + +Static double abstmod2(d) +double d; +{/* fuer gefuellte Elemente */ + double x, dgrenz; + dgrenz = maxabstand*0.3; + if (d < dgrenz) return (d+2.0); + x = (d-dgrenz)*0.5+dgrenz+2.0; + return x; +} + +Static double abstelement(i, xp, yp) +long i; +double xp, yp; +/* wird nur zur Selektion der Elemente benutzt, deshalb wird der */ +/* berechnete Abstand bei gefuellten Elementen und anderen Elementen */ +/* so modifiziert, dass bei gef. Elemeneten groessere Abstaende noch */ +/* zugelassen sind und kleinere Abstaende erhoeht werden */ +/* In der Naehe eines nichtgefuellten Element wird deshalb diese bevorzugt */ + +{ + double d, d2; + + d = initabstand; + if (typ[i] <= 0) + goto _L1; + if (relevant(i, xp, yp)==false) + goto _L1; + switch (typ[i]) { + + case ttext: + d = ppabstand(x1[i], y1_[i], xp, yp); + goto Lngef; + + case tgerade: + d = pgabstand(i, xp, yp); + goto Lngef; + + case trechteckgef: + case tviereckgef: + d = pviereckabstand(i, xp, yp); + goto Lgef; + + case tdreieckgef: + d = pdreieckabstand(i, xp, yp); + goto Lgef; + + case tkreis: + d = pkreisabstand(i, xp, yp); + goto Lngef; + + case tkreisgef: + d = pkreisabstand(i, xp, yp); + goto Lgef; + + + case tkreisbogen: + d = pkreisboabstand(i, xp, yp); + goto Lngef; + + case tkreissektorgef: + d = pkreisboabstand(i, xp, yp); + d2 = pgxyabstand(x1[i], y1_[i], xb2[i], yb2[i], xp, yp); + if (d2 < d) d = d2; + d2 = pgxyabstand(x1[i], y1_[i], xb1[i], yb1[i], xp, yp); + if (d2 < d) d = d2; + goto Lgef; + + case tell: + d = pellabstand(i, xp, yp); + goto Lngef; + + case tellgef: + d = pellabstand(i, xp, yp); + goto Lgef; + + case tellbogen: + d = pellboabstand(i, xp, yp); + goto Lngef; + + case tellsektorgef: + d = pellboabstand(i, xp, yp); + d2 = pgxyabstand(x1[i], y1_[i], xb2[i], yb2[i], xp, yp); + if (d2 < d) d = d2; + d2 = pgxyabstand(x1[i], y1_[i], xb1[i], yb1[i], xp, yp); + if (d2 < d) d = d2; + goto Lgef; + + case tbezier: + d = pbezabstand(i, xp, yp); + goto Lngef; + case tbeziergef: + d = pbezabstand(i, xp, yp); + d2 = pgxyabstand(x1[i], y1_[i], x2[i], y2[i], xp, yp); + if (d2 < d) d = d2; + goto Lgef; + }/*case*/ +Lgef: + d = abstmod2(d); + return d; +Lngef: + d= abstmod1(d); + return d; +_L1: + return d; +} + + +Static Void sucheelement(art, elsel, xp, yp) +long art, *elsel; +double xp, yp; +{ + double dmin, d; + long i; + + *elsel = 0; + dmin = 5.0*maxabstand; + for (i = 1; i <= zelmax; i++) { + if (typ[i] > 0) { + if (suchtypok[typ[i]][art]=='y') { + d = abstelement(i, xp, yp); + if (d < dmin) { + dmin = d; + *elsel = i; + } + } + } + } +} + +Static boolean blinkgruppeninre(); +Static boolean elementinre(); + +Static boolean blinkelemente(xanf, yanf, xend, yend, elselmin) +double xanf, yanf, xend, yend; +long elselmin; +{/* Alle Elemente/Gruppen im Bereich blink == true */ + /* return true, falls solche vorhanden */ + /* Falls Bereich: nur Elemente >= elselmin beruecksichtigt */ + /* Blinken ist aber noch nicht aktiviert !! */ + long elsel, erg; + + blinkenan(); + blinkend = false; + initgruppentag(false); + if (xanf == xend) { /*selecteinelement*/ + sucheelement((long)alleelem, &elsel, xanf, yanf); + if (elsel == 0) { + return false; + } + if (selmenue[mgroupmode] == false){ + blink[elsel] = true; + return true; + } + blinkgruppe(elsel); + return true; + } + if (selmenue[mgroupmode] == false){ + erg = false; + for (elsel = elselmin; elsel <= zelmax; elsel++) { + if (elementinre(xanf, yanf, xend, yend, elsel)==true) { + blink[elsel] = true; + erg = true; + } + } + return erg; + } + return blinkgruppeninre(xanf, yanf, xend, yend, elselmin); +} + +Static long einellarc(x,y,elsel,taste,phase) + long elsel,phase,taste; + double x,y; +/* Eingabe Ellipsenbogen */ +{ + long i, ltyp, ldicke, lende; + + phase -= phase2; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + strcpy(pr4, pranfwi); + if (selmenue[mdegrees]==true) + inittastaturtext(nullstr,pr2menue[mdegrees],1L); + winerwartet = 1; + return (phase2+1); + L1: + if (taste==0) {/* stringeingabe*/ + i = winkeleingabe(&wanf[elsel]); + if (i != 0) goto L0; + } + else + wanf[elsel] = winkelell(x1[elsel], y1_[elsel], laenge1[elsel], + laenge2[elsel], crw[elsel], srw[elsel], x, y); + L1B: + winerwartet = 1; + strcpy(pr4, prendwi); + if (selmenue[mdegrees]==true) + inittastaturtext(nullstr,pr2menue[mdegrees],1L); + return (phase2+2); + L2: + if (taste==0) {/* stringeingabe*/ + i = winkeleingabe(&wend[elsel]); + if (i != 0) goto L1B; + } + else + wend[elsel] = winkelell(x1[elsel], y1_[elsel], laenge1[elsel], + laenge2[elsel], crw[elsel], srw[elsel], x, y); + winerwartet = 0; + if (si_fabs(wanf[elsel]-wend[elsel])<10) goto L1B; + setlineattribute(0L, elsel); + ellanfendpunkt(elsel); + if (selmenue[mgefuellt]==true) {typ[elsel] = tellsektorgef;} + else typ[elsel] = tellbogen; + berechneminmax(elsel); + ausel(elsel, paint); + if (typ[elsel] != tellsektorgef) return 0; + /* anschliessenden Sektor eingeben, nur Endwinkel */ + /* zunaechst bisherigen Sektor umspeichern */ + freieselement(&i); + kopunv(elsel,i); + typ[elsel] = -1; + wanf[elsel] = wend[elsel]; + strcpy(pr4, prendwisektor); + goto L1B; +} + + +Static long einellipse(x,y,xa,ya,taste,msel,phase) +long *msel,taste,phase; +double x,y,xa,ya; +/* Eingabe Ellipse */ +{ + double xpr_, ypr_; + static long elsel, elselg; + long ltyp, ldicke, lende; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + case 4: goto L4; + default: goto L5; /* Phasen in einellarc */ + } + L0: + return 1; + L1: + freieselement(&elsel); + x1[elsel] = x; + y1_[elsel] = y; + if (selmenue[mparallel]==true) { + strcpy(pr4, " line, parallel to major axis? "); + return 2; + } + strcpy(pr4, prxachse); + return 3; + L2: + sucheelement((long)nurgerade, &elselg,xa, ya); + if (elselg==0) return 2; + setzewinkel(elsel, x1[elselg], y1_[elselg], x2[elselg], y2[elselg]); + strcpy(pr4, prxachse); + return 3; + L3: + xy_ell(x1[elsel], y1_[elsel], crw[elsel], srw[elsel], x, y, &xpr_, &ypr_); + laenge1[elsel] = si_fabs(xpr_); + if (laenge1[elsel] < dminein) return 3; + strcpy(pr4, pryachse); + return 4; + L4: + xy_ell(x1[elsel], y1_[elsel], crw[elsel], srw[elsel], x, y, &xpr_, &ypr_); + laenge2[elsel] = si_fabs(ypr_); + if (laenge2[elsel] < dminein) return 4; + setlineattribute(0L, elsel); + lineende[elsel] = 0; + if ((selmenue[mbogen]!=true)&&(selmenue[mgefuellt]!=true)) { + typ[elsel] = tell; + berechneminmax(elsel); + ausel(elsel, paint); + return 0; + } + if ((selmenue[mbogen]!=true)&&(selmenue[mgefuellt]==true)) { + typ[elsel] = tellgef; + berechneminmax(elsel); + ausel(elsel, paint); + return 0; + } + phase=phase2; + L5: + return (einellarc(x,y,elsel,taste,phase)); +} + + + +Static long einlinepp(x,y,xa,ya,elsel,taste,msel,phase) + long *msel, elsel,taste,phase; + double x,y,xa,ya; + /* Endpunkt der Strecke durch Punkt gegeben */ +{ + phase -= phase2; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + strcpy(pr4, pr3menue[*msel]); + return (phase2+1); + L1: + x2[elsel]=x; + y2[elsel]=y; + createline(0L, x1[elsel], y1_[elsel], x2[elsel], y2[elsel]); + return 0; +} + + +Static long einlinepg(x,y,xa,ya,elsel,taste,msel,phase) + long *msel, elsel,taste,phase; + double x,y,xa,ya; + /* Endpunkt durch parallele Linie */ +{ + double dx, dy, dxu, dyu; + long i; + phase -= phase2; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + strcpy(pr4, pr2menue[mparallel]); + return (phase2+1); + L1: + x2[elsel]=x; + y2[elsel]=y; + strcpy(pr4, pr3menue[mparallel]); + return (phase2+2); + L2: + sucheelement((long)nurgerade, &i, xa, ya); + if (i==0) return 2; + dx = x2[i] - x1[i]; + dy = y2[i] - y1_[i]; + dxu = x2[elsel] - x1[elsel]; + dyu = y2[elsel] - y1_[elsel]; + if (si_fabs(dx) > si_fabs(dy)) { + if (fsign(dxu)!=fsign(dx)){dx = -dx; dy = -dy;} + } + else { + if (fsign(dyu)!=fsign(dy)){dx = -dx; dy = -dy;} + } + x2[elsel] = x1[elsel] + dx; + y2[elsel] = y1_[elsel] + dy; + createline(0L, x1[elsel], y1_[elsel], x2[elsel], y2[elsel]); + return 0; +} + + +Static long einlinelot(x,y,xa,ya,elsel,taste,msel,phase) + long *msel, elsel,taste,phase; + double x,y,xa,ya; + /* Endpunkt der Geraden durch Lot auf andere Gerade */ +{ + double dx, dy, xs, ys; + long i; + phase -= phase2; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + strcpy(pr4, pr3menue[mlot]); + return (phase2+1); + L1: + sucheelement((long)nurgerade, &i, xa, ya); + if (i==0) return (phase2+1); + dx = x2[i] - x1[i]; + dy = y2[i] - y1_[i]; + if (lot(x1[i], y1_[i], dx, dy, x1[elsel], y1_[elsel], &xs, &ys)==true) + createline(0L, x1[elsel], y1_[elsel], xs, ys); + return 0; +} + + +Static long einline(x,y,xa,ya,taste,msel,phase) + long *msel,taste,phase; + double x,y,xa,ya; +/* Eingabe einer Strecke */ +{ + static long elsel, art; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + default: goto L2; /* fuer einlinelot,einlinepg,einlinepp */ + } + L0: + strcpy(pr4, pr2menue[*msel]); + freieselement(&elsel); + return 1; + L1: + /* erster Punkt */ + x1[elsel]=x; + y1_[elsel]=y; + /*zweiter Punkt */ + art=0; + if (selmenue[mparallel]==true) art=1; + if (selmenue[mlot]==true) art=2; + phase=phase2; + L2: + switch (art){ + case 0: + phase=einlinepp(x,y,xa,ya,elsel,taste,msel,phase); + break; + case 1: + phase=einlinepg(x,y,xa,ya,elsel,taste,msel,phase); + break; + case 2: + phase=einlinelot(x,y,xa,ya,elsel,taste,msel,phase); + break; + } + if (phase!=0) return phase; + return 0; +} /*line*/ + + +Static Void ergbox(el1, el2) +long el1, el2; +{ + long i, j; + double xx[4], yy[4]; + + xx[0] = x1[el1]; + yy[0] = y1_[el1]; + xx[1] = x2[el1]; + yy[1] = y2[el1]; + xx[2] = x1[el2]; + yy[2] = y1_[el2]; + xx[3] = x2[el2]; + yy[3] = y2[el2]; + for (i = 0; i <= 1; i++) { + for (j = 2; j <= 3; j++) { + if (si_fabs(xx[i] - xx[j]) < 5.0 && + si_fabs(yy[i] - yy[j]) < 5.0) + goto _L1; + } + } + goto _L2; +_L1: + if (i == 0) { + ftausch(&xx[0], &xx[1]); + ftausch(&yy[0], &yy[1]); + } + if (j == 3) { + ftausch(&xx[2], &xx[3]); + ftausch(&yy[2], &yy[3]); + } + /* punkte 1 und 2 sind in der Naehe nun*/ + createline(el2, xx[0], yy[0], xx[0] + xx[3] - xx[2], yy[0] + yy[3] - yy[2]); + createline(el1, xx[3], yy[3], xx[3] + xx[0] - xx[1], yy[3] + yy[0] - yy[1]); +_L2: ; +} + +Static long geteingabezeile(datdeskr) +FILE *datdeskr; +{ /* Zeile lesen, Zahl Zeichen zurueck, Grenze maxstrl */ + + long anz; + + if (fgets(eingabezeile,maxstrl+1,datdeskr)==NULL) + anz = 1; + else + anz = strlen(eingabezeile); + anz--; + eingabezeile[anz] = '\0'; + return anz; +} + +Static Void eindateigruppen(datdeskr) +FILE *datdeskr; +{ + long i, erfolg, gruppe, element, vorg; + /* den einzelnen Zeichnungselementen Gruppennummern zuordnen */ + fscanf(datdeskr, "%ld", &gruppe); + while ((gruppe > 0)&&(gruppe <= maxgruppen)) { + fscanf(datdeskr, "%ld", &element); + while ((element > 0)&&(element <= zelmax)) { + if (typ[element]==0) fehler(11); + if (group[element] != 0) fehler(12); + group[element] = gruppe; + fscanf(datdeskr, "%ld", &element); + } + if (element != 0) fehler(12); + fscanf(datdeskr, "%ld", &gruppe); + } + if (gruppe != 0) fehler(13); + /* Gruppenbaum aufbauen */ + fscanf(datdeskr, "%ld%ld", &gruppe, &vorg); + while ((gruppe > 0)&&(gruppe <= maxgruppen)) { + if ((vorg <=0)||(vorg >maxgruppen)) fehler(15); + if (vater[gruppe] != -1) fehler(15); /* Doppeldefinition */ + vater[gruppe] = vorg; + fscanf(datdeskr, "%ld%ld", &gruppe, &vorg); + } + if (gruppe != 0) fehler(14); + /* Baum vervollstaendigen */ + for (i=1;i<=maxgruppen;i++) { + if (vater[i] >0) { + if (vater[vater[i]] == -1) { + /* Gruppennummer noch nicht vergeben */ + vater[vater[i]] = 0; /* ist ein oberster Knoten */ + } + } + } + /* Sicherstellung, dass alle elementaren Gruppen im Baum */ + /* aber auch keine unnoetigen */ + grumax = maxgruppen; + aenderunggruppen = true; + unbenutztegruppenfreigeben(); +} + + +Static long ausdateigruppen() +{ + long i, j, anz, gruppe, element, vorg; + + /* Elemente sind komprimiert!!! */ + for (i=1; i<=zelmax;i++) blink[i] = false; + for (i=1; i<=zelmax;i++) { + if ((blink[i] == false)&&(group[i] !=0)) { + anz = 0; + gruppe = group[i]; + fprintf(datdeskr, "%ld ",gruppe); + for (j=i; j<=zelmax; j++) { + if (group[j]==gruppe) { + blink[j] = true; + anz++; + fprintf(datdeskr, "%ld ",j); + if (anz >10) { + anz = 0; + fprintf(datdeskr, "\n"); + } + }/*if*/ + }/* for j*/ + fprintf(datdeskr, " 0\n"); /* Abschluss einer Gruppe */ + } + }/*for i*/ + fprintf(datdeskr, " 0 \n"); /* Abschluss elementare Gruppen */ + /* Ausgabe der relevanten Teile des Baums */ + for (i=1;i<=grumax;i++) { + if (vater[i] > 0) { + fprintf(datdeskr, "%ld %ld\n", i, vater[i]); + } + } + fprintf(datdeskr, "0 0"); /* Abschluss Knoten-Vater-Paare */ +} + +Static Void einvorspannepc(datdeskr) +FILE *datdeskr; +{ + /* wegen readstdin ist die erste Zeile immer schon gelesen */ + sscanf(eingabezeile, "%*[^123456789]%lg", &version); + geteingabezeile(datdeskr); + sscanf(eingabezeile, "%lg", &texfaktor); + geteingabezeile(datdeskr); + sscanf(eingabezeile, "%lg", &texdashl); + geteingabezeile(datdeskr); + sscanf(eingabezeile, "%lg", &texdotg); + geteingabezeile(datdeskr); + sscanf(eingabezeile, "%lg", &texinterd); + if (version < 4.0) { + geteingabezeile(datdeskr); + sscanf(eingabezeile, "%lg", &gridw0); + } + if (version >= 10.0) { + geteingabezeile(datdeskr); + sscanf(eingabezeile, "%lg%lg%lg%lg%lg%lg%lg%lg", + &gridw0, &gridw, &gridx0, &gridy0, + &gridwx1, &gridwy1, &gridwx2, &gridwy2); + } + if (version >= 11.0) { + geteingabezeile(datdeskr); + sscanf(eingabezeile, "%*lg%*lg%*lg%*lg%*lg%*lg%lg%lg%d%d", + &breite,&hoehe,&mitvorspann,&querformat); + } +} + +Static long einlesenelement(datdeskr,elseladr) +FILE *datdeskr; +long *elseladr; +{ /* auszuwertender String in eingabezeile bereits gelesen !!!! */ + long i,k,anz; + + freieselement(&i); + *elseladr = i; + typ[i]=0; + anz=sscanf(eingabezeile, + "%ld%lg%lg%lg%lg%lg%lg%lg%lg%lg%lg%ld%ld%ld%lg%lg%lg", + &typ[i], &x1[i], &y1_[i], &x2[i], &y2[i], &xb1[i], &yb1[i], + &xb2[i], &yb2[i], &wanf[i], &wend[i], &linedicke[i], + &lineende[i], &linetype[i], &laenge1[i], &laenge2[i], &rotwi[i]); + if (typ[i] <= 0) + return anz; + if (rotwi[i] != 0.0) { + crw[i] = cos(rotwi[i] * fgradbo); + srw[i] = sin(rotwi[i] * fgradbo); + } + switch (typ[i]) { + + case tgerade: + laenge1[i] = ppabstand(x1[i], y1_[i], x2[i], y2[i]); + laenge2[i] = laenge1[i]; + break; + + case trechteckgef: + /*setzewinkel(i, x1[i], y1_[i], xb1[i], yb1[i]);*/ + break; + + case tellbogen: + case tellsektorgef: + ellanfendpunkt(i); + break; + + case tkreisbogen: + case tkreissektorgef: + kreisanfendpunkt(i); + break; + + case ttext: + freiestextel(&k); + textno[i] = k; + geteingabezeile(datdeskr); + strcpy(texte[k],eingabezeile); + textparam(i); + break; + }/*case*/ + berechneminmax(i); + return anz; +} + + + +Static long eindatei(msel,dateiname,taste,phase) +Char *dateiname; +long *msel, taste, phase; +{ + long i, k, anz; + double xxmin,xxmax,yymin,yymax; + Static Void init_neuezeichnung(); + +switch (phase) { + case 0: goto L0; + case 1: goto L1; + case 2: goto L1B; + default: goto L1; + } + + L0: + inittastaturtext(dateiname, pr2menue[*msel],0L); + return 1; + L1: + strcpy(dateiname,EinText); + if(istnullstr(dateiname)==true) goto L3; /*ohne Initialisieren*/ + L1B: + /* Einsprung nur fuer automatische Ausgabe */ + datdeskr = fopen(dateiname, "r"); + protokoll("open input file: ",dateiname); + init_neuezeichnung(); /* mit Initialisieren */ + if (datdeskr == NULL) { + protokoll("can't open file ",dateiname); + goto L3; + } + /* wegen readstdin muss die erste Zeile immer schon gelesen sein*/ + geteingabezeile(datdeskr); + einvorspannepc(datdeskr); + + while (1) { + anz = geteingabezeile(datdeskr); + if (anz == 0) + fehler(3L); + anz = einlesenelement(datdeskr,&i); + if (typ[i] <= 0) + goto L2; + } /*while*/ + + L2: /*Ende*/ + if (version >= 13.0) {/* Gruppen sind da!*/ + eindateigruppen(datdeskr); + } + if (version < 11.0) { + minmax(&xxmin,&xxmax,&yymin,&yymax); + breite=(xxmax-xxmin)*texfaktor; + hoehe=(yymax-yymin)*texfaktor; + } + + if (datdeskr != NULL) fclose(datdeskr); + datdeskr = NULL; + L3: + selmenloeschen(msel); + ausalles(); + konkat(winname,window_name,": "); + konkat(winname,winname,dateiname); + XStoreName(display,win,winname); + return 0; +} + +Static double dashlength() +{ + return (texdashl / texfaktor); +} + + +Static double dotgap(i) +{ + if (i==0) return (texdotg / texfaktor); + else return (texdotg*(1+0.15*getlinedicke(i)) / texfaktor); +} + + +Static double interdotgap() +{ + double h; + + h = texinterd / texfaktor; + return h; +} + + +Static Void texpfeilaus(i, ende, xa, ya, dx, dy) +long i, ende; +double xa, ya, dx, dy; +{ + long dxv, dyv; + double w; + + if (lineende[i] == 0) return; + if (lineende[i] == 4) return; + if (ende == 1 && (lineende[i] == 1 || lineende[i] == 3)) { /*am Anfang*/ + w = 2.0 * pi - winkel0(-dx, -dy, 1.0, 1.0) * fgradbo; + fprintf(datdeskr, "\\aLdPfeil{%.3f,%.3f}{%.3f}{%d}\n", + xa, ya, w, getlinedicke(i)); + fputs(einrueck, datdeskr); + } + if (ende == 2 && (lineende[i] == 2 || lineende[i] == 3)) { /*am Ende*/ + w = 2.0 * pi - winkel0(-dx, -dy, 1.0, 1.0) * fgradbo; + fprintf(datdeskr, "\\eLdPfeil{%.3f,%.3f}{%.3f}{%d}\n", + xa, ya, w, getlinedicke(i)); + fputs(einrueck, datdeskr); + } +} + +Static Void texpfeilep(i,xa,ya,xe,ye) +long i; +double xa,ya,xe,ye; /* reduzierte Punkte */ + /*bei tex ging put voraus*/ +{ double x0, y0, x, y, dx, dy; + + x0=x1[i]; + y0=y1_[i]; + x=x0; + y=y0; + dx=xa-x; + dy=ya-y; + texpfeilaus(i, 1L, x-x0, y-y0, dx, dy); + x=x2[i]; + y=y2[i]; + dx=xe-x; + dy=ye-y; + texpfeilaus(i, 2L, x-x0, y-y0, dx, dy); +} + + +Static Void texpfeilew(i,redwa,redwe) +long i; +double redwa,redwe; /* Winkel im Bogenmass fuer reduzierten Bogen */ + /*bei tex ging put und bei Ell. ggf rotiert voraus*/ +{ double lx, ly, w, x, y, dx, dy; + + lx = laenge1[i]; + ly = laenge2[i]; + w = wanf[i] * fgradbo; + x = lx * cos(w); + y = ly * sin(w); + dx = lx * cos(redwa) - x; + dy = ly * sin(redwa) - y; + texpfeilaus(i, 1L, x, y, dx, dy); + w = wend[i] * fgradbo; + x = lx * cos(w); + y = ly * sin(w); + dx = lx * cos(redwe) - x; + dy = ly * sin(redwe) - y; + texpfeilaus(i, 2L, x, y, dx, dy); +} + + +Static double kuerzungsstrecke(elsel) + long elsel; +{ /* Kuerzungsstrecke fuer Pfeile am Ende */ + /* beim Aufrufer umzusetzen in Winkel bzw. Kuerzungsfaktoren */ + double z; + + /*z ist zu kuerzende Strecke in pixels, abhaengig von Formel fuer */ + /*stdpfeile in pst-latexdraw.sty */ + /* Der Faktor 1.5 ergibt sich durch Vergroesserung des Faktors 1.33, */ + /* welcher die x-Koordinate angibt, die beim Pfeil die Breite */ + /* ergibt, die der Linienstaerke der Linie entspricht. Pfeil u.a. */ + /* definiert in pst-latexdraw.sty durch */ + /* (-8,-3) */ + /* (1.33,0.5) */ + /* (-8,0) (1.33,0) (0,0) */ + /*jeweils skaliert mit Faktor f=linienstaerke in pts * 0.27 + 0.4 */ + /* gemaess Makro .... \code{#1 .27 mul .4 add dup scale .... */ + z=(getlinedicke(elsel)*lw2pt*0.27+0.4)*2.0/texfaktor; + return z; +} + + +Static void pfeilreduktiongerade(elsel,xa,ya,xe,ye) + long elsel; + double *xa,*ya,*xe,*ye; +{ /* Verkuerzung der Geraden wegen Pfeilen am Ende */ + double d,z,k,dx,dy; + + z = kuerzungsstrecke(elsel); + d=ppabstand(*xa,*ya,*xe,*ye);/*Laenge der Geraden*/ + if (d<=0.0) d=1.0; + k=z/d; + if (k > 0.5) k = 0.5; + dx = k * (*xe); + dy = k * (*ye); + + switch (lineende[elsel]) { + + case 1: + *xa = dx; + *ya = dy; + break; + + case 2: + *xe -= dx; + *ye -= dy; + break; + + case 3: + *xa = dx; + *ya = dy; + *xe -= dx; + *ye -= dy; + break; + }/*case*/ +} + +Static double kuerzungswinkel(z,a,b,wa,wgr) +double z,a,b,wa,wgr; +/* Bestimmung von dw, um den Bogen bei wa zu kuerzen ist */ +/* alle Winkel im Bogenmass, mathematisch */ +/* wa und wgr begrenzen das sinnvolle Intervall und geben Richtung! */ +{ double xa,ya,dxa,dya,x,y,acw,asw,r,w,dw; + + xa = a*cos(wa); + ya = b*sin(wa); + dxa = a*sin(wa); + dya = b*cos(wa); + r = sqrt(dxa*dxa+dya*dya)+1.0; + dw=z/r*fsign(wgr-wa)*0.05; + w=wa; +LL: + x = a*cos(w); + y = b*sin(w); + if (ppabstand(x,y,xa,ya) >= z) { + dw = w-wa-dw; + return dw; + } + w += dw; + if ( ((dw>0)&&(w<=wgr))||((dw<0)&&(w>=wgr)) ) + goto LL; + dw = w-wa-dw; + return dw; +} + +Static void pfeilreduktionbogen(elsel,redwa,redwe) + long elsel; + double *redwa,*redwe; +{ /* Verkuerzung der Boegen wegen Pfeilen am Ende */ + /* redwa, redwe sind im Bogenmass, mathematisch, redwe > redwa */ + /* redwa, redwe vorbesetzt!!! */ + double mitte, a, b, z, dwa,dwe; + + a = laenge1[elsel]; + b = laenge2[elsel]; + if (*redwe <= *redwa) + *redwe += 2.0*pi; + mitte = (*redwe + *redwa)*0.5; + z = kuerzungsstrecke(elsel); + dwa = kuerzungswinkel(z, a, b, *redwa, mitte); + dwe = kuerzungswinkel(z, a, b, *redwe, mitte); + switch (lineende[elsel]) { + + case 1: + *redwa += dwa; + break; + + case 2: + *redwe += dwe; + break; + + case 3: + *redwa += dwa; + *redwe += dwe; + break; + }/*case*/ +} + +Static Void austexgerade(i) +long i; +{ + double xa, ya, xe, ye, oxe, oye; + + /*relativ zu x1,y1*/ + xa = 0.0; + ya = 0.0; + xe = x2[i] - x1[i]; /*relative Koordinaten*/ + ye = y2[i] - y1_[i]; + oxe=xe; + oye=ye; + putc('{', datdeskr); + if (lineende[i] == 0) { + if (linetype[i]==1) + fprintf(datdeskr, "\\ldline(%.3f,%.3f)(%.3f,%.3f)}\n", + xa, ya, xe, ye); + else + fprintf(datdeskr, "\\ldline[%d](%.3f,%.3f)(%.3f,%.3f)}\n", + linetype[i], xa, ya, xe, ye); + } + else if (lineende[i] == 4) { /* capprojecting */ + if (linetype[i]==1) + fprintf(datdeskr, "\\ldcpline(%.3f,%.3f)(%.3f,%.3f)}\n", + xa, ya, xe, ye); + else + fprintf(datdeskr, "\\ldcpline[%d](%.3f,%.3f)(%.3f,%.3f)}\n", + linetype[i], xa, ya, xe, ye); + } + else { + pfeilreduktiongerade(i,&xa,&ya,&xe,&ye); + texpfeilep(i,xa+x1[i],ya+y1_[i],xe+x1[i],ye+y1_[i]); + /* oxe,oye = Originalkoordinaten Endpunkt nicht verkuerzt */ + fprintf(datdeskr, + "\\LdpLine{%d}{(%.3f,%.3f)}[%d](%.3f,%.3f)(%.3f,%.3f)}\n", + lineende[i], oxe, oye, linetype[i], xa, ya, xe, ye); + /* zweite }, damit put geschlossen wird */ + } +} + +Static double radwinkeltotex(radianw) +double radianw; +{ return (2.0 * pi - radianw); } + +Static double gradwinkeltotex(w) +double w; +{ return (2.0 * pi - w * fgradbo);} + + +Static Void texwinkel(wa,we, texwa, texwe) +double wa, we, *texwa, *texwe; +{ /* Umrechnung math. Darstellung der Winkel in Darstellung in latex */ + /* alle Winkel im Bogenmass */ + *texwa = radwinkeltotex(we); + *texwe = radwinkeltotex(wa); + if (*texwe <= *texwa) + *texwe += 2.0 * pi; +} + + +Static Void austexgefrechteck(i) +long i; +{ + double dx, dy; + + /* put bzgl. x1,y1 ging voraus*/ + dx = ppabstand(x1[i], y1_[i], xb1[i], yb1[i]); + dy = ppabstand(x1[i], y1_[i], xb2[i], yb2[i]); + fprintf(datdeskr, "{\\rule{%.3lf\\unitlength}{%.3lf\\unitlength}}\n", + dx,dy); +} + +Static Void austexgefdreieck(i) +long i; +{ + double x2rel,y2rel, xb1rel, yb1rel; + + /* put bzgl. x1,y1 ging voraus*/ + x2rel = x2[i]-x1[i]; + y2rel = y2[i]-y1_[i]; + xb1rel = xb1[i]-x1[i]; + yb1rel = yb1[i]-y1_[i]; + fprintf(datdeskr, "{\\gefdreieck(%.3lf,%.3lf)(%.3lf,%.3lf)}\n", + x2rel,y2rel,xb1rel,yb1rel); + /* erster und dritter Punkt ist Nullpunkt (d.h. relativ zu put!)*/ +} + +Static Void austexgefviereck(i) +long i; +{ + double x2rel,y2rel, xb1rel, yb1rel, xb2rel, yb2rel; + + /* put bzgl. x1,y1 ging voraus*/ + x2rel = x2[i]-x1[i]; + y2rel = y2[i]-y1_[i]; + xb1rel = xb1[i]-x1[i]; + yb1rel = yb1[i]-y1_[i]; + xb2rel = xb2[i]-x1[i]; + yb2rel = yb2[i]-y1_[i]; + fprintf(datdeskr, "{\\gefviereck(%.3lf,%.3lf)(%.3lf,%.3lf)(%.3lf,%.3lf)}\n", + xb1rel,yb1rel,x2rel,y2rel,xb2rel,yb2rel); + /* erster und vierter Punkt ist Nullpunkt (d.h. relativ zu put!)*/ +} + + +Static Void austexkreis(i) +long i; +{ + double wa, we, redwa, redwe, texwa, texwe, lx, zlx, otexwa,otexwe; + + /* put bzgl. x1,y1 ging voraus*/ + putc('{', datdeskr); + lx = laenge1[i]; + zlx=2.0 * lx; + wa = wanf[i] * fgradbo; + we = wend[i] * fgradbo; + redwa = wa; + redwe = we; + texwinkel(wa, we, &texwa, &texwe); + otexwa = texwa; /*Originalwerte vor Adaption an Pfeile*/ + otexwe = texwe; + + switch (typ[i]) { + + case tkreis: + if (linetype[i]== 1) + fprintf(datdeskr, "\\circle{%.3f}}\n", zlx); + else + fprintf(datdeskr, "\\circle[%d]{%.3f}}\n", linetype[i], zlx); + break; + + case tkreisgef: + fprintf(datdeskr, "\\circle*{%.3f}}\n", zlx); + break; + + case tkreisbogen: + if (lineende[i]==0) { + if (linetype[i]== 1) + fprintf(datdeskr, "\\arc{%.3f}{%.3f}{%.3f}}\n", zlx, texwa, texwe); + else + fprintf(datdeskr, "\\arc[%d]{%.3f}{%.3f}{%.3f}}\n", + linetype[i], zlx, texwa, texwe); + } + else { + pfeilreduktionbogen(i, &redwa, &redwe); + texpfeilew(i,redwa,redwe); + texwinkel(redwa, redwe, &texwa, &texwe); + /* otexwa,otexwe = Originalwerte der Endpunkte */ + fprintf(datdeskr, "\\LdpArc{%d}{%.3f}{%.3f}[%d]{%.3f}{%.3f}{%.3f}}\n", + lineende[i],otexwa,otexwe,linetype[i], zlx, texwa, texwe); + } + break; + + case tkreissektorgef: + wa=0.1*wanf[i]; + we=0.1*wend[i]; + fprintf(datdeskr,"\\pieslice{%.3f}{%.3f}{%.2f}{%.2f}}\n", + zlx,zlx,wa,we); + break; + } +} + +Static Void austexell(i) +long i; +{ + double wa, we, redwa, redwe, texwa, texwe, lx, ly, zlx, zly, otexwa, otexwe; + + /* put bzgl. x1,y1 ging voraus*/ + putc('{', datdeskr); + lx = laenge1[i]; + ly = laenge2[i]; + zlx=2.0 * lx; + zly=2.0 * ly; + wa = wanf[i] * fgradbo; + we = wend[i] * fgradbo; + redwa = wa; + redwe = we; + texwinkel(wa, we, &texwa, &texwe); + otexwa=texwa; + otexwe=texwe; + + switch (typ[i]) { + case tell: + if (linetype[i]== 1) + fprintf(datdeskr, "\\ellipse{%.3f}{%.3f}}\n", zlx, zly); + else + fprintf(datdeskr, "\\ellipse[%d]{%.3f}{%.3f}}\n", + linetype[i], zlx, zly); + break; + case tellgef: + fprintf(datdeskr, "\\ellipse*{%.3f}{%.3f}}\n", zlx, zly); + break; + + case tellbogen: + if (lineende[i]==0) { + if (linetype[i]== 1) + fprintf(datdeskr, "\\ellarc{%.3f}{%.3f}{%.3f}{%.3f}}\n", + zlx, zly,texwa, texwe); + else + fprintf(datdeskr, "\\ellarc[%d]{%.3f}{%.3f}{%.3f}{%.3f}}\n", + linetype[i], zlx, zly, texwa, texwe); + } + else { + pfeilreduktionbogen(i, &redwa,&redwe); + texpfeilew(i,redwa,redwe); + texwinkel(redwa, redwe, &texwa, &texwe); + /* otexwa,otexwe = Originalwerte der Endpunkte */ + fprintf(datdeskr, + "\\LdpEllarc{%d}{%.3f}{%.3f}[%d]{%.3f}{%.3f}{%.3f}{%.3f}}\n", + lineende[i],otexwa,otexwe,linetype[i], zlx, zly, texwa, texwe); + } + break; + + case tellsektorgef: + wa=0.1*wanf[i]; + we=0.1*wend[i]; + fprintf(datdeskr,"\\pieslice{%.3f}{%.3f}{%.2f}{%.2f}}\n", + zlx,zly,wa,we); + break; + } +} + +Static Void pfeilreduktionbezier(elsel,nx0,ny0,nx1,ny1,nx2,ny2,nx3,ny3) +long elsel; +double *nx0,*ny0,*nx1,*ny1,*nx2,*ny2,*nx3,*ny3; +{ double z,d1,d2,t1,t2,dxdt,dydt; + + z = kuerzungsstrecke(elsel); + d1= ppabstand(x1[elsel],y1_[elsel],xb1[elsel],yb1[elsel]); + d2= ppabstand(x2[elsel],y2[elsel],xb2[elsel],yb2[elsel]); + t1= z/(3.0*d1); + t2= 1.0-z/(3.0*d2); + switch (lineende[elsel]) { + + case 1: + t2=1.0; + break; + + case 2: + t1=0.0; + break; + + case 3: + break; + }/*case*/ + punkt_bezier(elsel,t1,nx0,ny0); + ableitung_bezier(elsel,t1,&dxdt,&dydt); + *nx1=dxdt/3.0 + *nx0; + *ny1=dydt/3.0 + *ny0; + punkt_bezier(elsel,t2,nx3,ny3); + ableitung_bezier(elsel,t2,&dxdt,&dydt); + *nx2=-dxdt/3.0 + *nx3; + *ny2=-dydt/3.0 + *ny3; +} + +Static Void austexbezier(i) +long i; +{ double nx0,ny0,nx1,ny1,nx2,ny2,nx3,ny3; + /* neue Werte der Stuetzpunkte wegen Pfeilen*/ + + putc('{', datdeskr); + if (lineende[i]==0) { + if (linetype[i]==1) + fprintf(datdeskr, "\\bezier(%.3f,%.3f)(%.3f,%.3f)(%.3f,%.3f)}\n", + xb1[i] - x1[i], yb1[i] - y1_[i], + xb2[i] - x1[i], yb2[i] - y1_[i], + x2[i] - x1[i], y2[i] - y1_[i]); + else + fprintf(datdeskr, "\\bezier[%d](%.3f,%.3f)(%.3f,%.3f)(%.3f,%.3f)}\n", + linetype[i], xb1[i] - x1[i], yb1[i] - y1_[i], + xb2[i] - x1[i], yb2[i] - y1_[i], + x2[i] - x1[i], y2[i] - y1_[i]); + } + else { + pfeilreduktionbezier(i,&nx0,&ny0,&nx1,&ny1,&nx2,&ny2,&nx3,&ny3); + texpfeilep(i,nx0,ny0,nx3,ny3); + /*zunaechst Originalstuetzpunkte, dann neue Stuetzpunkte wegen Pfeilen */ + fprintf(datdeskr, "\\LdpBezier{%d}(%.3f,%.3f)(%.3f,%.3f)(%.3f,%.3f)[%d](%.3f,%.3f)(%.3f,%.3f)(%.3f,%.3f)(%.3f,%.3f)}\n", + lineende[i], xb1[i] - x1[i], yb1[i] - y1_[i], + xb2[i] - x1[i], yb2[i] - y1_[i], + x2[i] - x1[i], y2[i] - y1_[i], + linetype[i], nx0 - x1[i], ny0 - y1_[i], + nx1 - x1[i], ny1 - y1_[i], + nx2 - x1[i], ny2 - y1_[i], + nx3 - x1[i], ny3 - y1_[i]); + } +} + + +Static Void austexbeziergef(i) +long i; +{ + + putc('{', datdeskr); + fprintf(datdeskr, "\\beziergef(%.3f,%.3f)(%.3f,%.3f)(%.3f,%.3f)}\n", + xb1[i] - x1[i], yb1[i] - y1_[i], + xb2[i] - x1[i], yb2[i] - y1_[i], + x2[i] - x1[i], y2[i] - y1_[i]); +} + + +Static Void austextext(i) +long i; +{ + long lage, fontart; + fontart = linetype[i]; + lage = (long)floor(laenge2[i] + 0.5); + fprintf(datdeskr, "{\\makebox(0,0)%s{%s%s}}\n", + textausrichtung[lage],textfontmakro[fontart],texte[textno[i]]); +} + + +Static Void austexelement(i, xmin, ymin) +long i; +double xmin, ymin; +{ + double rrot, xa, ya; + long zcolor; + + zcolor=getzcolor(i,paint); + rrot = 2.0 * pi - rotwi[i] * fgradbo; + xa = x1[i] - xmin; + ya = y1_[i] - ymin; + if (rotwi[i] == 0.0) { + if (zcolor==schwarz) fprintf(datdeskr, "\\put(%.3f,%.3f)",xa,ya); + else fprintf(datdeskr, "\\putc(%.3f,%.3f){%d}", xa, ya, zcolor); + } + else { + if (zcolor==schwarz) + fprintf(datdeskr, "\\rput[%.3f](%.3f,%.3f)", rrot,xa,ya); + else + fprintf(datdeskr, "\\rputc[%.3f](%.3f,%.3f){%d}", rrot,xa,ya,zcolor); + } + + switch (typ[i]) { /*case*/ + + case ttext: + austextext(i); + break; + + case tgerade: + austexgerade(i); + break; + + case trechteckgef: + austexgefviereck(i); + break; + + case tdreieckgef: + austexgefdreieck(i); + break; + + case tviereckgef: + austexgefviereck(i); + break; + + case tkreis: + case tkreisgef: + case tkreisbogen: + case tkreissektorgef: + austexkreis(i); + break; + + case tell: + case tellgef: + case tellbogen: + case tellsektorgef: + austexell(i); + break; + + case tbezier: + austexbezier(i); + break; + case tbeziergef: + austexbeziergef(i); + break; + } +} + + +Static Void auslinedicke(istdicke,solldicke) +long *istdicke,solldicke; +{ + double ptdicke; + if (*istdicke != solldicke) + { *istdicke=solldicke; + ptdicke=lw2pt*solldicke; + fprintf(datdeskr,"\\ldlinewidth{%d}{%.1lf}\n",solldicke,ptdicke); + } +} + + +Static long austexdatei(msel, dateiname, taste, phase) +Char *dateiname; +long *msel,taste, phase; + +{ + long i, akttexldicke; + double deltax, deltay, xxmax, yymax, xxmin, yymin; + double fx, fy; + Char altbh[maxstrl+1]; + + LANF: + switch (phase) { + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + case 4: goto L4; + case 5: goto L5; + case 6: goto L6; + case 7: goto L7; + } + L0: + strcpy(texdateiname,dateiname); + trenneextension(texdateiname); + konkat(texdateiname,texdateiname,".tex"); + inittastaturtext(texdateiname,pr3menue[*msel],0L); + return 1; + L1: + strcpy(texdateiname,EinText); + if (istnullstr(texdateiname)==true) return 0; + inittastaturtext(nullstr, + "change output options ? (y/...)",0L); + return 2; + L2: + if (*EinText!='y') goto L7; + inittastaturtext(nullstr, + "LaTeX file ready to copy into LaTeX source ? (y/...)",0L); + return 3; + L3: + nmitvorspann=true; + if (*EinText=='y') nmitvorspann=false; + inittastaturtext(nullstr, "use old unitlength ? (y/...)",0L); + return 4; + L4: + oldunitlength=false; + if (*EinText=='y') { + nbreite=breite; + nhoehe=hoehe; + oldunitlength=true; + goto L5B; + } + L4B: + sprintf(altbh,"%.1f %.1f",breite,hoehe); + inittastaturtext(altbh, + "maximum width and height of LaTeX picture in mm? (DIN A4:210 296): ",0L); + return 5; + L5: + i=sscanf(EinText,"%lg%lg",&nbreite,&nhoehe); + if ((i!=2)||(nbreite<10.0)||(nhoehe<10.0)) goto L4B; + L5B: + inittastaturtext(nullstr,"rotate LaTeX picture? (y/...)",0L); + return 6; + L6: + /*Aenderungen erst durchfuehren, wenn Ausgabe wirklich erfolgt*/ + querformat=true; + if (*EinText=='y') querformat=false; + mitvorspann=nmitvorspann; + hoehe=nhoehe; + breite=nbreite; + if (oldunitlength==false) { + minmax(&xxmin, &xxmax, &yymin, &yymax); + deltax = xxmax - xxmin; + if (deltax == 0.0) deltax = 1.0; + deltay = yymax - yymin; + if (deltay == 0.0) deltay = 1.0; + fx = breite / deltax; + fy = hoehe / deltay; + if (fx <= fy) + texfaktor = fx; + else + texfaktor = fy; + } + + L7: + minmax(&xxmin, &xxmax, &yymin, &yymax); + deltax = xxmax - xxmin; + if (deltax == 0.0) deltax = 1.0; + deltay = yymax - yymin; + if (deltay == 0.0) deltay = 1.0; + datdeskr = fopen(texdateiname, "w"); + protokoll(extfiletext,texdateiname); + if (datdeskr == NULL) { + protokoll("can't open file ",texdateiname); + return 0; + } + if (mitvorspann==true) { + fprintf(datdeskr, + "%s\n",docstyle); + fprintf(datdeskr, "\\begin{document}\n"); + } + + fprintf(datdeskr, "\\setlength{\\unitlength}{%.3lfmm}\n",texfaktor); + if (querformat==false) { + fprintf(datdeskr, "\\begin{picture}(%.3f,%.3f)\n", deltay,deltax); + fprintf(datdeskr, "\\rput[4.7124](%.3f,0){\n", deltay); + } + fprintf(datdeskr, "\\begin{picture}(%.3f,%.3f)\n", deltax,deltay); + akttexldicke = -1; + for (i = 1; i <= zelmax; i++) { + if (typ[i] > 0) { + auslinedicke(&akttexldicke,getlinedicke(i)); + austexelement(i, xxmin, yymin); + } + } + fprintf(datdeskr, "\\end{picture}\n"); + if (querformat==false) + fprintf(datdeskr, "}\\end{picture}\n"); + if (mitvorspann==true) { + fprintf(datdeskr, "\\end{document}\n"); + } + fprintf(datdeskr, "%s\n", blank); + if (datdeskr != NULL) + fclose(datdeskr); + datdeskr = NULL; + return 0; +} + + +Static Void ausskalieren() +{ + double xmin, ymin, xmax, ymax, dx, dy, fx, fy, f; + + minmax(&xmin, &xmax, &ymin, &ymax); + dx = xmax - xmin; + dy = ymax - ymin; + fx = 1.0; + fy = 1.0; + if (dx != 0.0) { + if (dx < 0.5 * xzmax) + fx = 0.5 * xzmax / dx; + if (dx > 4.0 * xzmax) + fx = 4.0 * xzmax / dx; + } + if (dy != 0.0) { + if (dy < 0.5 * yzmax) + fy = 0.5 * yzmax / dy; + if (dy > 4.0 * yzmax) + fy = 4.0 * yzmax / dy; + } + if (fx > fy) + f = fy; + else + f = fx; + pskalieren(&xmin, &ymin, 0.0, 0.0, f); + pskalieren(&xmax, &ymax, 0.0, 0.0, f); + dx = xmittelzei - (xmax + xmin) * 0.5; + dy = ymittelzei - (ymax + ymin) * 0.5; + elskalieren(&gridw, dx, dy, f); +} + +Static long schreibenausdatei(msel,dateiname,taste,phase) +Char *dateiname; +long *msel,taste,phase; +{ + long i; + double xxmin, xxmax, yymin, yymax, dxpixel, dypixel; + + if (istnullstr(dateiname) == true) return 0; + datdeskr = fopen(dateiname, "w"); + if (datdeskr == NULL) { + protokoll("can't open file ",dateiname); + return 0; + } + + kompakt(); + protokoll(intfiletext,dateiname); + minmax(&xxmin, &xxmax, &yymin, &yymax); + dxpixel=xxmax-xxmin; + dypixel=yymax-yymin; + fprintf(datdeskr, "%s\n", window_name); + fprintf(datdeskr, "% .5E (TEXFAKTOR)\n", texfaktor); + fprintf(datdeskr, "% .5E (TEXDASHLAENGE)\n", texdashl); + fprintf(datdeskr, "% .5E (TEXDOTGAP)\n", texdotg); + fprintf(datdeskr, "% .5E (TEXINTERDOTGAP)\n", texinterd); + fprintf(datdeskr, "%.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f (GITTERWERTE)\n", + gridw0, gridw, gridx0, gridy0, + gridwx1, gridwy1, gridwx2, gridwy2); + fprintf(datdeskr, + "%.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %d %d (AUSGABEOPTIONEN)\n", + xxmin, yymin, xxmax, yymax, dxpixel, dypixel, + breite, hoehe, mitvorspann, querformat); + for (i = 1; i <= zelmax; i++) { + if (typ[i] > 0) { + fprintf(datdeskr, + "%ld %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %ld %ld %ld %.3lf %.3lf %.3lf\n", + typ[i],x1[i],y1_[i],x2[i],y2[i],xb1[i],yb1[i],xb2[i], yb2[i], + wanf[i],wend[i],linedicke[i],lineende[i],linetype[i], + laenge1[i],laenge2[i],rotwi[i]); + if (typ[i] == ttext) /*text*/ + fprintf(datdeskr, "%s\n", texte[textno[i]]); + } + } + fprintf(datdeskr,"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"); + ausdateigruppen(); + if (datdeskr != NULL) fclose(datdeskr); + datdeskr = NULL; + return 0; +} + + +Static long ausdatei(msel,dateiname,taste,phase) +Char *dateiname; +long *msel,taste,phase; +{ + long i; + + switch(phase) { + case 0: goto L0; + default: goto L1; + } + + L0: + inittastaturtext(dateiname,pr2menue[*msel],0L); + return 1; + L1: + strcpy(dateiname,EinText); + return schreibenausdatei(msel,dateiname,taste,phase); +} + +Static long extendline(elsel, xa, ya) +long elsel; +double xa, ya; +{ + double deltax, deltay, d1, d2, f, dx, dy; + dx = x2[elsel] - x1[elsel]; + dy = y2[elsel] - y1_[elsel]; + d1 = ppabstand(xa, ya, x1[elsel], y1_[elsel]); + d2 = ppabstand(xa, ya, x2[elsel], y2[elsel]); + deltax = 0.0; + deltay = 0.0; + f = dx * dx + dy * dy; + f = verlline / sifsqrt(1.0, f); + deltax = dx * f; + deltay = dy * f; + if (d2 < d1) { /*verl bei x2,y2*/ + x2[elsel] += deltax; + y2[elsel] += deltay; + } else { /*verl bei x1,y1*/ + x1[elsel] -= deltax; + y1_[elsel] -= deltay; + } +} + +Static long extendbogen(elsel, xa, ya) +long elsel; +double xa, ya; +{ + double wa, we, wi; + + wa = wanf[elsel]; + we = wend[elsel]; + if (we < wa) we += wg; + switch (typ[elsel]) { + case tkreisbogen: + case tkreissektorgef: + wi = winkelk(x1[elsel], y1_[elsel], xa, ya); + break; + case tellsektorgef: + case tellbogen: + wi = winkelell(x1[elsel], y1_[elsel], laenge1[elsel], + laenge2[elsel], crw[elsel], srw[elsel], xa, ya); + break; + } + if (!((wi >= wa) && (wi <= we))) wi += wg; + if (si_fabs(wi-wa) < si_fabs(wi-we)) { /* wa ausdehnen */ + wa -= 150.0; + } else {/* we ausdehnen */ + we += 150.0; + } + if ((we-wa) >= wg) {/* voller Kreis bzw. volle Ellipse */ + wanf[elsel] = 0.0; + wend[elsel] = wg; + switch (typ[elsel]) { + case tkreisbogen: + typ[elsel] = tkreis; + break; + case tkreissektorgef: + typ[elsel] =tkreisgef; + break; + case tellsektorgef: + typ[elsel] =tellgef; + break; + case tellbogen: + typ[elsel] =tell; + break; + } + return; + } + /* Bogen bleibt */ + while (wa > wg) wa -= wg; + while (we > wg) we -= wg; + while (wa < 0.0) wa += wg; + while (we < 0.0) we += wg; + wanf[elsel] = wa; + wend[elsel] = we; + switch (typ[elsel]) { + case tkreisbogen: + case tkreissektorgef: + kreisanfendpunkt(elsel);wi = winkelk(x1[elsel], y1_[elsel], xa, ya); + break; + case tellsektorgef: + case tellbogen: + ellanfendpunkt(elsel); + break; + } +} + +Static long extend(xa, ya, msel, phase) +long *msel,phase; +double xa, ya; +{ + long elsel; + double deltax, deltay, d1, d2, f, dx, dy; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + return 1; + L1: + sucheelement((long)nurextendel, &elsel, xa, ya); + if (elsel==0) return 1; + ausel(elsel, erase); + switch (typ[elsel]) { + case tgerade: + extendline(elsel, xa, ya); + break; + case tkreisbogen: + case tkreissektorgef: + case tellsektorgef: + case tellbogen: + extendbogen(elsel, xa, ya); + break; + } + berechneminmax(elsel); + auselemente(); + return 1; +} + + +Static long einbox(x,y,taste,msel,phase) + long *msel,taste,phase; + double x,y; +{ + static long elsel; + double dx, dy; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + return 1; + L1: + freieselement(&elsel); + x1[elsel]=x; + y1_[elsel]=y; + strcpy(pr4, pr3menue[*msel]); + return 2; + L2: + x2[elsel]=x; + y2[elsel]=y; + dx = x2[elsel] - x1[elsel]; + dy = y2[elsel] - y1_[elsel]; + if (si_fabs(dx) < 2.0 || si_fabs(dy) < 2.0) return 2; + if (dx < 0) { + dx = -dx; + ftausch(&x1[elsel], &x2[elsel]); + } + if (dy < 0) { + dy = -dy; + ftausch(&y1_[elsel], &y2[elsel]); + } + xb1[elsel] = x1[elsel] + dx; + yb1[elsel] = y1_[elsel]; + xb2[elsel] = x1[elsel]; + yb2[elsel] = y1_[elsel] + dy; + if (selmenue[mgefuellt]==true) { /*gefuelltes Rechteck*/ + typ[elsel] = trechteckgef; + setlineattribute(0L, elsel); + berechneminmax(elsel); + ausel(elsel, paint); + return 0; + } + createline(0L, x1[elsel], y1_[elsel], xb1[elsel], yb1[elsel]); + createline(0L, xb1[elsel], yb1[elsel], x2[elsel], y2[elsel]); + createline(0L, x2[elsel], y2[elsel], xb2[elsel], yb2[elsel]); + createline(0L, xb2[elsel], yb2[elsel], x1[elsel], y1_[elsel]); + typ[elsel] = 0; + return 0; +} + + +Static long einboxll(xa,ya,msel,phase) + long *msel,phase; + double xa, ya; +/* Ergaenzung zum Parallelogramm */ +{ + static long elsel1, elsel2; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + strcpy(pr4, pr2menue[*msel]); + return 1; + L1: + sucheelement((long)nurgerade, &elsel1, xa, ya); + if (elsel1==0) return 1; + strcpy(pr4, pr3menue[*msel]); + return 2; + L2: + sucheelement((long)nurgerade, &elsel2, xa, ya); + if (elsel2==0) return 2; + ergbox(elsel1, elsel2); + return 0; +} + +Static long eindreieck(x,y,taste,msel,phase) + long *msel,taste,phase; + double x,y; +{ + static long elsel; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + } + L0: + return 1; + L1: + freieselement(&elsel); + x1[elsel]=x; + y1_[elsel]=y; + strcpy(pr4, pr3menue[*msel]); + return 2; + L2: + x2[elsel]=x; + y2[elsel]=y; + if (ppabstand(x2[elsel], y2[elsel],x1[elsel],y1_[elsel]) < 3.0) + return 2; + strcpy(pr4,prpoint3); + return 3; + L3: + xb1[elsel]=x; + yb1[elsel]=y; + if (ppabstand(xb1[elsel], yb1[elsel],x1[elsel],y1_[elsel]) < 3.0) + return 3; + if (ppabstand(xb1[elsel], yb1[elsel],x2[elsel],y2[elsel]) < 3.0) + return 3; + if (selmenue[mgefuellt]==true) { /*gefuelltes Dreieck*/ + typ[elsel] = tdreieckgef; + setlineattribute(0L, elsel); + berechneminmax(elsel); + ausel(elsel, paint); + return 0; + } + createline(0L, x1[elsel], y1_[elsel], xb1[elsel], yb1[elsel]); + createline(0L, xb1[elsel], yb1[elsel], x2[elsel], y2[elsel]); + createline(0L, x2[elsel], y2[elsel], x1[elsel], y1_[elsel]); + typ[elsel] = 0; + return 0; +} + +Static long einviereck(x,y,taste,msel,phase) + long *msel,taste,phase; + double x,y; +{ + static long elsel; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + case 4: goto L4; + } + L0: + return 1; + L1: + freieselement(&elsel); + x1[elsel]=x; + y1_[elsel]=y; + strcpy(pr4, pr3menue[*msel]); + return 2; + L2: + xb1[elsel]=x; + yb1[elsel]=y; + if (ppabstand(xb1[elsel], yb1[elsel],x1[elsel],y1_[elsel]) < 3.0) + return 2; + strcpy(pr4,prpoint3); + return 3; + L3: + x2[elsel]=x; + y2[elsel]=y; + if (ppabstand(x2[elsel], y2[elsel],xb1[elsel],yb1[elsel]) < 3.0) + return 3; + if (ppabstand(x2[elsel], y2[elsel],x1[elsel],y1_[elsel]) < 3.0) + return 3; + strcpy(pr4,prpoint4); + return 4; + L4: + xb2[elsel]=x; + yb2[elsel]=y; + if (ppabstand(xb2[elsel], yb2[elsel],x1[elsel],y1_[elsel]) < 3.0) + return 4; + if (ppabstand(xb2[elsel], yb2[elsel],xb1[elsel],yb1[elsel]) < 3.0) + return 4; + if (ppabstand(xb2[elsel], yb2[elsel],x2[elsel],y2[elsel]) < 3.0) + return 4; + if (selmenue[mgefuellt]==true) { /*gefuelltes Viereck*/ + typ[elsel] = tviereckgef; + setlineattribute(0L, elsel); + berechneminmax(elsel); + ausel(elsel, paint); + return 0; + } + createline(0L, x1[elsel], y1_[elsel], xb1[elsel], yb1[elsel]); + createline(0L, xb1[elsel], yb1[elsel], x2[elsel], y2[elsel]); + createline(0L, x2[elsel], y2[elsel], xb2[elsel], yb2[elsel]); + createline(0L, xb2[elsel], yb2[elsel], x1[elsel], y1_[elsel]); + typ[elsel] = 0; + return 0; +} + +Static Void setlagetext(elsel) + long elsel; +{ /* Lage Text relativ zum Anklickpunkt bestimmen und alle davon */ + /* abhaengigen Parameter im Zeichnungselement setzen */ + long lrtb; + + lrtb = 1; + if (selmenue[mbtext]==true) + lrtb = 3; + if (selmenue[mttext]==true) + lrtb = 6; + if (selmenue[mltext]==true) { + lrtb = 7; + if (selmenue[mbtext]==true) + lrtb = 0; + if (selmenue[mttext]==true) + lrtb = 4; + } + if (selmenue[mrtext]==true) { + lrtb = 8; + if (selmenue[mbtext]==true) + lrtb = 2; + if (selmenue[mttext]==true) + lrtb = 5; + } + laenge2[elsel] = lrtb; + textparam(elsel); + berechneminmax(elsel); +} + + +Static long eintext(x,y,xa,ya,taste,msel,phase) + long *msel,taste,phase; + double x,y,xa,ya; +{ + static long elsel, tsel; + long elselg; + double dx,dy; + + switch (phase) + { + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + case 4: goto L4; + case 5: goto L5; + default: goto L6; /*fuer Textzeichen */ + } + + L0: + texterase=0L; + return 1; + L1: + for (elsel = 1; elsel <= zelmax; elsel++) { + if (typ[elsel] != ttext) continue; + if (si_fabs(y1_[elsel] - y) > 0.5) continue; + if (si_fabs(x1[elsel] - x) > 0.5) continue; + tsel = textno[elsel]; + ausel(elsel, erase); + texterase=elsel; + zeichnen = true; + setzeakttextfont(elsel); + goto L5; /*Text zu modifizieren*/ + } + texterase=0L; + freieselement(&elsel); + freiestextel(&tsel); + x1[elsel] = x; + y1_[elsel] = y; + if (selmenue[mparallel]==false) goto L4; + strcpy(pr4, pr2menue[mparallel]); + return 2; + L2: + x2[elsel] = xa; + y2[elsel] = ya; + strcpy(pr4, pr3menue[mparallel]); + return 3; + L3: + sucheelement((long)nurgerade, &elselg, xa, ya); + if (elselg==0) return 3; + strcpy(pr4,pr2menue[*msel]); + dx = si_fabs(x2[elselg] - x1[elselg]); + if ((x2[elsel] - x1[elsel]) < 0.0) dx = -dx; + dy = si_fabs(y2[elselg] - y1_[elselg]); + if ((y2[elsel] - y1_[elsel]) < 0.0) dy = - dy; + x2[elsel] = x1[elsel] + dx; + y2[elsel] = y1_[elsel] + dy; + setzewinkel(elsel, x1[elsel], y1_[elsel], x2[elsel], y2[elsel]); + L4: + setlineattribute(0L,elsel); + linetype[elsel] = stdfontnummer; + textno[elsel] = tsel; + strcpy(texte[tsel],nullstr); + L5: + inittastaturtext(texte[tsel], "text: ",0L); + return 6; + L6: + strcpy(texte[tsel], EinText); + if (istnullstr(texte[tsel]) == true) { + typ[elsel] = 0; + texterase=0L; + return 0; + } + typ[elsel] = ttext; + if (fontnummer != stdfontnummer) + linetype[elsel] = fontnummer; + setlagetext(elsel); + texterase=0L; + ausel(elsel, paint); + return 0; +} + +Static Void initelemente() +{ + long i; + + for (i = 0; i <= zel; i++) { + typ[i] = 0; /*Element frei*/ + textno[i] = 0; + } + for (i = 1; i <= zstr; i++) + strcpy(texte[i],nullstr); + zelmax = 0; +} + + +Static Void drehpunkt(x1r, y1r, dx, dy, cd, sd, v, xp, yp) +double x1r, y1r, dx, dy, cd, sd, v, *xp, *yp; +{ + double xx, yy; + + /*Drehpunkt x1r,y1r*/ + /*positiver Drehwinkel def. durch cd,sd*/ + /*Vergroesserung v*/ + /*Translation um dx,dy*/ + translation(x1r, y1r, *xp, *yp, &xx, &yy); + xx *= v; + yy *= v; + rotation(cd, -sd, &xx, &yy); + translation(-dx, -dy, xx, yy, xp, yp); +} + + +Static Void drehpunkt1(i, x1r, y1r, dx, dy, cd, sd, v) +long i; +double x1r, y1r, dx, dy, cd, sd, v; +{ + drehpunkt(x1r, y1r, dx, dy, cd, sd, v, &x1[i], &y1_[i]); +} + + +Static Void drehpunkt2(i, x1r, y1r, dx, dy, cd, sd, v) +long i; +double x1r, y1r, dx, dy, cd, sd, v; +{ + drehpunkt(x1r, y1r, dx, dy, cd, sd, v, &x2[i], &y2[i]); +} + + +Static Void drehpunktb(i, x1r, y1r, dx, dy, cd, sd, v) +long i; +double x1r, y1r, dx, dy, cd, sd, v; +{ + drehpunkt(x1r, y1r, dx, dy, cd, sd, v, &xb1[i], &yb1[i]); + drehpunkt(x1r, y1r, dx, dy, cd, sd, v, &xb2[i], &yb2[i]); +} + + +Static Void drehell0(i, xr1, yr1, dx, dy, cd, sd, v) +long i; +double xr1, yr1, dx, dy, cd, sd, v; +{ + double xl, yl, lx, ly; + + lx = laenge1[i]; + ly = laenge2[i]; + ell_xy(x1[i], y1_[i], lx, ly, crw[i], srw[i], lx, 0.0, &xl, &yl); + drehpunkt(xr1, yr1, dx, dy, cd, sd, v, &xl, &yl); + drehpunkt1(i, xr1, yr1, dx, dy, cd, sd, v); + laenge1[i] = lx * v; + laenge2[i] = ly * v; + setzewinkel(i, x1[i], y1_[i], xl, yl); +} + + +Static Void drehell(i, xr1, yr1, dx, dy, cd, sd, v) +long i; +double xr1, yr1, dx, dy, cd, sd, v; +{ + drehell0(i, xr1, yr1, dx, dy, cd, sd, v); +} + + +Static Void drehellbogen(i, xr1, yr1, dx, dy, cd, sd, v) +long i; +double xr1, yr1, dx, dy, cd, sd, v; +{ + double xm, ym, lx, ly, cr, sr; + + drehpunktb(i, xr1, yr1, dx, dy, cd, sd, v); + drehell0(i, xr1, yr1, dx, dy, cd, sd, v); + ellpar(i, &xm, &ym, &lx, &ly, &cr, &sr); + wanf[i] = winkelell(xm, ym, lx, ly, cr, sr, xb1[i], yb1[i]); + wend[i] = winkelell(xm, ym, lx, ly, cr, sr, xb2[i], yb2[i]); + ellanfendpunkt(i); +} + + +Static Void drehkbogen(i, xr1, yr1, dx, dy, cd, sd, v) +long i; +double xr1, yr1, dx, dy, cd, sd, v; +{ + drehpunkt1(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunktb(i, xr1, yr1, dx, dy, cd, sd, v); + laenge1[i] *= v; + laenge2[i] *= v; + wanf[i] = winkelk(x1[i], y1_[i], xb1[i], yb1[i]); + wend[i] = winkelk(x1[i], y1_[i], xb2[i], yb2[i]); +} + + +Static boolean testnotin(x, y, xa, ya, xe, ye) +double x, y, xa, ya, xe, ye; +{ + boolean Result; + + Result = true; + if (xa > xe) ftausch(&xa,&xe); + if (x < xa) goto _L1; + if (x > xe) goto _L1; + if (ya > ye) ftausch(&ya,&ye); + if (y < ya) goto _L1; + if (y > ye) goto _L1; + Result = false; +_L1: + return Result; +} + +Static boolean schnittellgeradeda(elsel,xa,ya,xe,ye) +long elsel; +double xa,ya,xe,ye; +{ + long i, anz; + double w; + terg wgerade, well; + Static Void gell00schnittp(); + + gell00schnittp(xa,ya,xe,ye,elsel,&anz,wgerade,well,false); + if (anz==0) return false; + for (i = 1; i <= anz; i++) { + if ((wgerade[i]>=0.0)&&(wgerade[i] <= 1.0)) return true; + } + return false; +} + +Static boolean elementinre(xa, ya, xe, ye, i) +double xa, ya, xe, ye; +long i; +{ + boolean Result; + + if (typ[i] <= 0) + return false; + if (xa > xe) ftausch(&xa,&xe); + if (ya > ye) ftausch(&ya,&ye); + if ((elxmin[i] >= xa)&&(elxmax[i] <= xe)&& + (elymin[i] >= ya)&&(elymax[i] <= ye)) + return true; + return false; +} + + +Static boolean blinkgruppeninre(xa,ya,xe,ye,elselmin) +double xa,ya,xe,ye; +long elselmin; +{ /* Gruppen im Rechteck, aber erst ab elselmin beachtet */ + /* Nur neu selektierte Elemente: blink == true */ + /* Nur neu selektierte Gruppen : gruppentag == true */ + long i,j,g, etwasgetan, anz; + + /* blinkenan(); schon gegeben in blinkelemente !! */ + /* blinkend = false; schon gegeben in blinkelemente !! */ + initgruppentag(unbekannt); + anz = 0; + for (i=elselmin;i<=zelmax;i++) { + if (typ[i]>0) { + g = group[i]; + if (g==0) { + if (elementinre(xa, ya, xe, ye, i)==true) { + anz++; + blink[i] = true; + } + continue; + } + if (gruppentag[g] == false) + continue; + /* gruppentag unbekannt oder true */ + if (elementinre(xa, ya, xe, ye, i)==true) { + gruppentag[g] = true; + } + else + markteilbaum(g,false); + } + } + /* jetzt Gruppenbaum untersuchen */ + etwasgetan = true; + while (etwasgetan == true) { + etwasgetan = false; + for (i=1;i<=grumax;i++) { + if ( (gruppentag[i] == unbekannt)|| + (gruppentag[i] == true) ) { + j = 1; + while ( (g=sohn(j,i)) != 0) {/* j. Sohn von i untersuchen */ + j++; + if (gruppentag[g] == true) + continue; + if (gruppentag[g] == unbekannt) + break; + if (gruppentag[g] == false) { + markteilbaum(i, false); + etwasgetan = true; + break; + } + } + if (g==0) { /* Schleife normal zu Ende, alle Soehne true */ + if (gruppentag[i] != true) { + gruppentag[i] = true; + etwasgetan = true; + } + } + }/* end if unbekannt */ + }/*end Durchlauf durch Gruppen */ + }/*solange etwas getan */ + /* Alle Gruppen muessten jetzt bekannt sein, kein Test dafuer! */ + /* Elemente nur in Rechteck, wenn Gruppe in Rechteck */ + for (i=elselmin;i<=zelmax;i++) { + if (typ[i]>0) { + g = group[i]; + if ((g != 0) && (gruppentag[g] == true)) { + anz++; + blink[i] = true; + } + } + } + if (anz > 0) return true; + blinkenaus(); + return false; +} + +Static boolean zukleineselement(i) +long i; +{/*Pruefung, ob Element i zu klein beim kopieren */ + + double minabm; + minabm = 0.1; + + if (typ[i] <= 0) + return true; + switch (typ[i]) { + case ttext: /*Text*/ + return false; + + case tgerade: /*Gerade*/ + if (ppabstand(x1[i], y1_[i], x2[i], y2[i]) < minabm) + goto zuklein; + break; + + case trechteckgef: + case tviereckgef: + if (ppabstand(x1[i], y1_[i], x2[i], y2[i]) < minabm) + goto zuklein; + break; + + case tdreieckgef: + if (ppabstand(x1[i], y1_[i], x2[i], y2[i]) < minabm) + goto zuklein; + break; + + case tkreis: + case tkreisgef: /*Kreis*/ + if (laenge1[i] < minabm) + goto zuklein; + break; + + case tkreisbogen: /*Kreisbogen*/ + case tkreissektorgef: + if (laenge1[i] < minabm) + goto zuklein; + break; + + case tell: + case tellgef: /*Ellipse*/ + if ((laenge1[i] < minabm) ||(laenge2[i] < minabm)) + goto zuklein; + break; + + case tellbogen: /*Ellipsenbogen*/ + case tellsektorgef: + if ((laenge1[i] < minabm)|| (laenge2[i] < minabm)) + goto zuklein; + break; + + case tbezier: /*Bezier*/ + case tbeziergef: + if (ppabstand(x1[i], y1_[i], xb1[i], yb1[i]) < minabm) + goto zuklein; + if (ppabstand(x2[i], y2[i], xb2[i], yb2[i]) < minabm) + goto zuklein; + break; + }/*case*/ + return false; + /* zu klein */ + zuklein: + typ[i] = 0; + return true; +} + + +Static long duplikat0(i,vollst) +long i; +boolean vollst; +{/* Nummer j eines Zeichnungselements ist Ergebnis */ + /* falls j != 0 ist j ein vorhandenes Duplikat zu i */ + /* falls vollst == false werden */ + /* lineende[i], linedicke[i], linetype[i] nicht beruecksichtigt */ + + long j; + + for (j = 1; j <= zelmax; j++) { + if (typ[j] <= 0) + continue; + if ((typ[i] != typ[j]) || (i == j)) + continue; + if (group[i] != group[j]) + continue; + if (nglx(x1[i], x1[j])== false) + continue; + if (nglx(y1_[i], y1_[j])== false) + continue; + if (nglw(rotwi[i], rotwi[j])==false) + continue; + if (vollst == true) { + if (lineende[i] != lineende[j]) + continue; + if (linedicke[i] != linedicke[j]) + continue; + if (linetype[i] != linetype[j]) + continue; + } + switch (typ[i]) { + + case ttext: /*Text*/ + if (strvergl(texte[textno[i]], texte[textno[j]])==true) + goto gleich; + break; + + case tgerade: /*Gerade*/ + if (nglx(x2[i], x2[j])==false) + continue; + if (nglx(y2[i], y2[j])==false) + continue; + goto gleich; + + case trechteckgef: + case tviereckgef: + if (nglx(x2[i], x2[j])==false) + continue; + if (nglx(y2[i], y2[j])==false) + continue; + if (nglx(xb1[i], xb1[j])==false) + continue; + if (nglx(yb1[i], yb1[j])==false) + continue; + if (nglx(xb2[i], xb2[j])==false) + continue; + if (nglx(yb2[i], yb2[j])==false) + continue; + goto gleich; + + case tdreieckgef: + if (nglx(x2[i], x2[j])==false) + continue; + if (nglx(y2[i], y2[j])==false) + continue; + if (nglx(xb1[i], xb1[j])==false) + continue; + if (nglx(yb1[i], yb1[j])==false) + continue; + goto gleich; + + case tkreis: + case tkreisgef: /*Kreis*/ + if (nglx(laenge1[i], laenge1[j])==false) + continue; + goto gleich; + + case tkreisbogen: /*Kreisbogen*/ + case tkreissektorgef: + if (nglx(laenge1[i], laenge1[j])==false) + continue; + if (nglw(wanf[i], wanf[j])==false) + continue; + if (nglw(wend[i], wend[j])==false) + continue; + goto gleich; + + case tell: + case tellgef: /*Ellipse*/ + if (nglx(laenge1[i], laenge1[j])==false) + continue; + if (nglx(laenge2[i], laenge2[j])==false) + continue; + goto gleich; + + case tellbogen: /*Ellipsenbogen*/ + case tellsektorgef: + if (nglx(laenge1[i], laenge1[j])==false) + continue; + if (nglx(laenge2[i], laenge2[j])==false) + continue; + if (nglw(wanf[i], wanf[j])==false) + continue; + if (nglw(wend[i], wend[j])==false) + continue; + goto gleich; + + case tbezier: /*Bezier*/ + case tbeziergef: + if (nglx(x2[i], x2[j])==false) + continue; + if (nglx(y2[i], y2[j])==false) + continue; + if (nglx(xb1[i], xb1[j])==false) + continue; + if (nglx(yb1[i], yb1[j])==false) + continue; + if (nglx(xb2[i], xb2[j])==false) + continue; + if (nglx(yb2[i], yb2[j])==false) + continue; + goto gleich; + }/*case*/ + } /*for j*/ + /*keine Duplikate*/ + return 0; +gleich: /* Duplikat */ + return j; +} + +Static boolean duplikat(i) +long i; +{/* zu kleine Abmessungen oder volles Duplikat */ + long j; + + if (zukleineselement(i)==true) + return true; + if ( (j=duplikat0(i,true))==0) + return false; + loescheelement(i); + return true; +} + +Static Void kopeinel(elsel, xr1, yr1, dx, dy, v, cd, sd, kop, loeschen) +long elsel; +double xr1, yr1, dx, dy, v, cd, sd; +boolean kop; long loeschen; +{ + long i; + + if (kop==true) { /*kopieren*/ + freieselement(&i); + kopunv(elsel, i); + } else { /*verschieben*/ + i = elsel; + if (loeschen==1) ausel(i, erase); + zeichnen = true; + } + switch (typ[i]) { + + case ttext: /*Text*/ + drehpunkt1(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunkt2(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunktb(i, xr1, yr1, dx, dy, cd, sd, v); + setzewinkel(i, xb1[i], yb1[i], xb2[i], yb2[i]); + textparam(i); + break; + + case tgerade: + drehpunkt1(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunkt2(i, xr1, yr1, dx, dy, cd, sd, v); + break; + + case trechteckgef: + drehpunkt1(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunkt2(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunktb(i, xr1, yr1, dx, dy, cd, sd, v); + /*setzewinkel(i, x1[i], y1_[i], xb1[i], yb1[i]);*/ + break; + + case tdreieckgef: + case tviereckgef: + drehpunkt1(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunkt2(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunktb(i, xr1, yr1, dx, dy, cd, sd, v); + break; + + case tkreis: + case tkreisgef: + drehpunkt1(i, xr1, yr1, dx, dy, cd, sd, v); + laenge1[i] *= v; + laenge2[i] *= v; + break; + + case tkreisbogen: + case tkreissektorgef: + drehkbogen(i, xr1, yr1, dx, dy, cd, sd, v); + break; + + case tell: + case tellgef: + drehell(i, xr1, yr1, dx, dy, cd, sd, v); + break; + + case tellbogen: + case tellsektorgef: + drehellbogen(i, xr1, yr1, dx, dy, cd, sd, v); + break; + + case tbezier: + case tbeziergef: + drehpunkt1(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunkt2(i, xr1, yr1, dx, dy, cd, sd, v); + drehpunktb(i, xr1, yr1, dx, dy, cd, sd, v); + break; + }/*case*/ + if (kop==true) { /*kopieren*/ + bestimmeneuegruppe(i); + if (duplikat(i)==false) { + berechneminmax(i); + ausel(i, paint); + } + } + else /*verschieben*/ + berechneminmax(i); + ausel(i, paint); +} + + +Static boolean testkop(elsel, relsel, zelsel, kop) +long elsel, relsel, zelsel; +boolean kop; +{ + if (kop==true) /*Referenzstrecke und Zielstrecke mitkopieren*/ + return (elsel != 0); + else /*Referenzstrecke und Zielstrecke nicht verschieben*/ + if (elsel != 0 && elsel != zelsel && elsel != relsel) return true; + else return false; +} + + +Static Void kopel(xanf, yanf, xend, yend, xr1, yr1, dx, dy, v, cd, sd, msel, + kop, relsel, zelsel) +double xanf, yanf, xend, yend, xr1, yr1, dx, dy, v, cd, sd; +long *msel; +boolean kop; +long relsel, zelsel; +{ + long elsel,elselmin,zelmaxalt; + + elselmin = 1; + while (blinkelemente(xanf, yanf, xend, yend,elselmin) == true) { + if (kop == true) + gruppenumbenennen(); + zelmaxalt = zelmax; + for (elsel=elselmin;elsel <= zelmaxalt; elsel++) { + if (blink[elsel] == true) { + if (testkop(elsel, relsel, zelsel, kop)==true) { + kopeinel(elsel, xr1, yr1, dx, dy, v, cd, sd, kop, 1L); + } + } + } + unbenutztegruppenfreigeben(); + if (xanf == xend) { /*Ein Element angeklickt*/ + blinkenaus(); + return; + } + /* Auswahlrechteck, evtl. neue Elemente darin */ + elselmin = zelmaxalt+1; + if (tastegedrueckt()!=0) return; + } /*while */ +} + + +Static long abbundkopieren(x,y,xanf,yanf,xend,yend,taste,msel,phase,kop) +long *msel,phase,taste; +double x,y,xanf,yanf,xend,yend; +boolean kop; +{ + static long relsel, zelsel; + double x1r, y1r, x1z, y1z, dx, dy, dr, dz, v, cr, sr, cz, sz, cd, sd; + + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + } + L0: + /* kompakt(); */ + strcpy(pr4, pr2menue[*msel]); + return 1; + L1: + sucheelement((long)nurgerade, &relsel, xanf, yanf); + if (relsel==0) return 1; + dr = ppabstand(x1[relsel], y1_[relsel], x2[relsel], y2[relsel]); + if (dr == 0.0) return 1; + strcpy(pr4, pr3menue[*msel]); + return 2; + L2: + sucheelement((long)nurgerade, &zelsel, xanf, yanf); + if (zelsel==0) return 2; + dz = ppabstand(x1[zelsel], y1_[zelsel], x2[zelsel], y2[zelsel]); + if (dz == 0.0) return 2; + strcpy(pr4," object(s)?"); + return 3; + L3: + x1r = x1[relsel]; + y1r = y1_[relsel]; + x1z = x1[zelsel]; + y1z = y1_[zelsel]; + dx = x2[zelsel] - x1[zelsel]; + dy = y2[zelsel] - y1_[zelsel]; + dz = ppabstand(x1[zelsel], y1_[zelsel], x2[zelsel], y2[zelsel]); + dr = ppabstand(x1[relsel], y1_[relsel], x2[relsel], y2[relsel]); + v = dz / dr; + cz = dx / dz; + sz = dy / dz; + dx = x2[relsel] - x1[relsel]; + dy = y2[relsel] - y1_[relsel]; + cr = dx / dr; + sr = dy / dr; + addtheorem(cz, sz, cr, -sr, &cd, &sd); /*wz-wr*/ + kopel(xanf, yanf, xend, yend, x1r, y1r, x1z, y1z, v, cd, sd, msel, kop, + relsel, zelsel); + return 3; +} + +Static long translundkopieren(x,y,xanf,yanf,xend,yend,taste,msel,phase,kop) +long *msel,phase,taste; +double x,y,xanf,yanf,xend,yend; +boolean kop; +{ + long i, elsel; + static long relsel; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + } + L0: + freieselement(&relsel); + strcpy(pr4," object(s)?"); + return 1; + L1: + if (blinkelemente(xanf,yanf,xend,yend,1L) == false) + return 1; + blinkend = true; + if (xanf == xend) {/* ein Element war selektiert */ + x1[relsel] = x; + y1_[relsel] = y; + strcpy(pr4, pr3menue[mkopbewmaus]); + return 3; + } + /* Auswahlrechteck war gegeben */ + strcpy(pr4, pr2menue[mkopbewmaus]); + return 2; + L2: + /*Referenzpunkt angeben*/ + x1[relsel] = x; + y1_[relsel] = y; + strcpy(pr4, pr3menue[mkopbewmaus]); + return 3; + L3: + if (kop==true) + gruppenumbenennen(); + /*Zielpunkt angeben*/ + for (elsel = 1; elsel <= zelmax; elsel++) { + if (blink[elsel] == true) + kopeinel(elsel, x1[relsel], y1_[relsel], x, y, 1.0, 1.0, 0.0, kop,1L); + } + if (kop==true) + return 3; + strcpy(pr4," object(s)?"); + blinkenaus(); + return 1; +} + + +Static long kopieren(x,y,xa,ya,xe,ye,taste,msel,phase) +long *msel,phase,taste; +double x,y,xa,xe,ya,ye; +{ + if (selmenue[mkopbewmaus]==true) + phase=translundkopieren(x,y,xa,ya,xe,ye,taste,msel,phase,true); + else + phase=abbundkopieren(x,y,xa,ya,xe,ye,taste,msel,phase,true); + return phase; +} + + +Static long bewegen(x,y,xa,ya,xe,ye,taste,msel,phase) +long *msel,phase,taste; +double x,y,xa,xe,ya,ye; +{ + if (selmenue[mkopbewmaus]==true) + phase=translundkopieren(x,y,xa,ya,xe,ye,taste,msel,phase,false); + else + phase=abbundkopieren(x,y,xa,ya,xe,ye,taste,msel,phase,false); + return phase; +} + +Static long rotieren(x,y,xanf,yanf,xend,yend,taste,msel,phase) +long *msel,phase,taste; +double x,y,xanf,yanf,xend,yend; +/* Rotation ein Objekt, eine Gruppe um den Anklickpunkt*/ +{ + double xr,yr,xz,yz,v,cd,sd,wi; + long elsel, elselmin; + boolean kop; + static boolean auswrechteck; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + auswrechteck = false; + return 1; + L1: + if (blinkelemente(xanf,yanf,xend,yend,1L) == false) + return 1; + blinkend = true; + if (xanf == xend) /* ein Element war selektiert */ + goto L2; + /* Auswahlrechteck war gegeben, Drehpunkt abfragen */ + auswrechteck = true; + strcpy(pr4, pr3menue[mrot]); + return 2; + L2: + /*Drehpunkt jetzt bekannt*/ + v = 1.0; + xr = x; + yr = y; + xz = xr; + yz = yr; + wi= winkelrotate; + wi = wi*pi/180.0; + cd = cos(wi); + sd = sin(wi); + kop = false; + for (elsel=1;elsel <= zelmax; elsel++) { + if (blink[elsel] == true) { + kopeinel(elsel, xr, yr, xz, yz, v, cd, sd, kop, 1L); + } + } + if (auswrechteck == false) { + /* kein Auswahlrechteck, neue Objekte selektieren */ + strcpy(pr4,pr2menue[mrot]); + blinkenaus(); + return 1; + } + /* Auswahlrechteck vorhanden, neue Drehung?? */ + return 2; +} + +Static long vorber_export(x,y,xa,ya,xe,ye,taste,msel,phase) +long *msel,phase,taste; +double x,y,xa,xe,ya,ye; +{ + long i, elsel; + static long kmark, relsel; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + XSetSelectionOwner(display,latexdraw_selection,win,requesttime); + if (XGetSelectionOwner(display,latexdraw_selection) != win) + { protokoll("XGetSelectionOwner"," failed"); return 0;} + freieselement(&relsel); + wartendexport = true; + kmark = 0; /*kmark, keine Objekte definiert */ + export_relsel = relsel; + export_kmark = kmark; + strcpy(pr4, pr2menue[mcut]); + return 1; + L1: + /*Referenzpunkt angeben*/ + x1[relsel] = x; + y1_[relsel] = y; + x2[relsel] = x; + y2[relsel] = y; + strcpy(pr4," object(s)?"); + return 2; + L2: + strcpy(pr4," object(s)?"); + if (blinkelemente(xa,ya,xe,ye,1L)== false){ + if (kmark==0) + return 2; + } + else { + /* Elemente in der bisherigen Sequenz muessen unveraendert bleiben */ + for (elsel = 1; elsel <= zelmax; elsel++) { + if (blink[elsel] == true) { + /* schon vorhanden ? */ + for (i=1;i <=kmark;i++) { + if (sequenz[i] == elsel) + goto LL; + } + kmark++; + sequenz[kmark] = elsel; + } + LL:; + } /*for*/ + } + blinkend = true; + /*alle Blinkelemente wieder setzen */ + for (i=1;i <= kmark;i++) + blink[sequenz[i]] = true; + export_kmark = kmark; + return 2; +} + +Static Void event_senden(r) +long r; +{ XEvent sendevent; + sendevent.xselection.type=selnotify[r].type; + sendevent.xselection.requestor=selnotify[r].requestor; + sendevent.xselection.selection=selnotify[r].selection; + sendevent.xselection.target=selnotify[r].target; + sendevent.xselection.property=selnotify[r].property; + sendevent.xselection.time=selnotify[r].time; + +XSendEvent(display,selnotify[r].requestor,True,NoEventMask, + &sendevent); +} + +Static Void exportieren() +{ long r, kakt,relsel,i,kmark,ls1,ls2; + char s1[255],s2[255]; + + if (selmenue[mcut]==false){ /* nichts geht mehr zurueck */ + for (r=0;r<zrequw;r++) { + if (requestaktiv[r]==true && requestbelegt[r]==true){ + selnotify[r].property=None; + event_senden(r); + } + requestbelegt[r]=false; + } + wartendexport=false; + return; + } + + relsel=export_relsel; /* von vorber_export */ + kmark=export_kmark; /* von vorber_export */ + /* wenn nichts da, dann bleibt Wunsch stehen. Durch zyklischen Aufruf + in der Eventschleife werden alle Objekt gesendet, die bereits + definiert sind oder noch definiert werden */ + for (r=0;r<zrequw;r++) { + if (requestaktiv[r]==true && requestbelegt[r]==true){ + kakt=requestkakt[r]; + if (kakt < kmark) { /* ewas zu senden da */ + requestaktiv[r]=false; + requestkakt[r] += 1; + kakt++; + i = sequenz[kakt]; + sprintf(s1, +"%.3lf %.3lf %.3lf %.3lf %ld %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %.3lf %ld %ld %ld %.3lf %.3lf %.3lf\n", + x1[relsel],y1_[relsel],x2[relsel],y2[relsel], + typ[i],x1[i],y1_[i],x2[i],y2[i],xb1[i],yb1[i],xb2[i], yb2[i], + wanf[i],wend[i],linedicke[i],lineende[i],linetype[i], + laenge1[i],laenge2[i],rotwi[i]); + ls1=strlen(s1); + XChangeProperty(display,selnotify[r].requestor,latexdraw_object, + latexdraw_object,8,PropModeReplace,s1,ls1); + if (typ[i] == ttext) { /*text*/ + sprintf(s2, "%s\n", texte[textno[i]]); + ls2=strlen(s2); + XChangeProperty(display,selnotify[r].requestor,latexdraw_text, + latexdraw_text,8,PropModeReplace,s2,ls2); + } + event_senden(r); + } /*if kakt < kmark */ + } /* if requestaktiv */ + }/* for r*/ +} + + +Static Void request_export(xsrrequestor,xsrproperty,xsrtarget,xsrtime) +Window xsrrequestor; +Atom xsrproperty,xsrtarget; +Time xsrtime; +{ /* Aufruf durch SelectionRequest */ + long r; + + /* gibt es noch alten request von dem requestor, dann nehmen */ + for (r=0;r<zrequw;r++) { + if (requestbelegt[r]==true) { + if (xsrrequestor == selnotify[r].requestor) { + if (xsrtime > selnotify[r].time) goto L0; + goto L1; + } + } + } + + /* Neueintrag in offene Requests */ + for (r=0;r<zrequw;r++) { + if (requestbelegt[r]==false) goto L0;} + protokoll("too many requests:", "request ignored"); + return; + + L0: + requestbelegt[r]=true; + requestkakt[r]=0; + L1: + requestaktiv[r]=true; + selnotify[r].type=SelectionNotify; + selnotify[r].requestor=xsrrequestor; + selnotify[r].selection=latexdraw_selection; + selnotify[r].target=xsrtarget; + selnotify[r].property=xsrproperty; + selnotify[r].time=xsrtime; + exportieren(); +} + + +Static long vorber_import(x,y,taste,msel,phase) +long *msel,phase,taste; +double x,y; +{ + long i, kmark, elsel; + static long zelsel; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + requesttime=lasteventtime; + freieselement(&zelsel); + import_zelsel=zelsel; + strcpy(pr4, pr2menue[mpaste]); + return 1; + L1: + /*Zielpunkt angeben*/ + x1[zelsel] = x; + y1_[zelsel] = y; + x2[zelsel] = x; + y2[zelsel] = y; + strcpy(pr4, " select objects in other window"); + /* SelectionRequest beim anderen Fenster */ + XConvertSelection(display,latexdraw_selection,latexdraw_object, + latexdraw_object, win, requesttime); + L2: + return 2; +} + +Static Void deleteprop() +{ XDeleteProperty(display,win, latexdraw_object); + XDeleteProperty(display,win, latexdraw_text); +} + +Static Void importieren(xsnproperty, xsntime, msel) +Atom xsnproperty; Time xsntime; long *msel; +{ /* Aufruf durch SelectionNotify */ + long zelsel, i, k, ls1, ls2, bytesafter,anz; + Atom actualtype; + double xr1,yr1,xr2,yr2; + unsigned char *data; + int actualformat; + + if (xsnproperty==None){ + if (requesttime != xsntime) return; + if (selmenue[mpaste]==false) return; + selmenloeschen(msel); + return; + } + if (selmenue[mpaste]==false) {deleteprop(); return;} + if (requesttime != xsntime) {deleteprop(); return;} + zelsel=import_zelsel; /* von Vorbereiten import */ + XGetWindowProperty(display, win, latexdraw_object,0,70,True, + latexdraw_object,&actualtype, &actualformat, + &ls1, &bytesafter,&data); + freieselement(&i); + anz=sscanf(data, + "%lg%lg%lg%lg%ld%lg%lg%lg%lg%lg%lg%lg%lg%lg%lg%ld%ld%ld%lg%lg%lg", + &xr1,&yr1,&xr2,&yr2, + &typ[i], &x1[i], &y1_[i], &x2[i], &y2[i], &xb1[i], &yb1[i], + &xb2[i], &yb2[i], &wanf[i], &wend[i], &linedicke[i], + &lineende[i], &linetype[i], &laenge1[i], &laenge2[i], &rotwi[i]); + XFree(data); + if ((typ[i] <= 0)|| (anz != 21)) {typ[i]=0; goto L0;} + if (rotwi[i] != 0.0) { + crw[i] = cos(rotwi[i] * fgradbo); + srw[i] = sin(rotwi[i] * fgradbo); + } + switch (typ[i]) { + + case tgerade: + laenge1[i] = ppabstand(x1[i], y1_[i], x2[i], y2[i]); + laenge2[i] = laenge1[i]; + break; + + case trechteckgef: + /*setzewinkel(i, x1[i], y1_[i], xb1[i], yb1[i]);*/ + break; + + case tellbogen: + case tellsektorgef: + ellanfendpunkt(i); + break; + + case tkreisbogen: + case tkreissektorgef: + kreisanfendpunkt(i); + break; + + case ttext: + freiestextel(&k); + textno[i] = k; + XGetWindowProperty(display, win, latexdraw_text,0,70,True, + latexdraw_text,&actualtype, &actualformat, + &ls2, &bytesafter,&data); + strcpy(texte[k],data); + XFree(data); + textparam(i); + break; + }/*case*/ + kopeinel(i, xr1,yr1,x1[zelsel], y1_[zelsel], 1.0, 1.0, 0.0,false,0L); + duplikat(i); + L0: + deleteprop(); + /* neuen Request vorsichtshalber absetzen */ + XConvertSelection(display,latexdraw_selection,latexdraw_object, + latexdraw_object, win, requesttime); +} + + +Static Void eldelete(elsel) +long elsel; +{ + ausel(elsel, erase); + typ[elsel] = -typ[elsel]; +} + + +Static Void UnDelete() +{ + long i, phase; + + for (i = 1; i <= zelmax; i++) { + if (typ[i] < -1) { + typ[i] = -typ[i]; + } /*if*/ + } + auselemente(); +} + + +Static long loeschen(xanf,yanf,xend,yend,taste,msel,phase) + long *msel,phase,taste; + double xanf,yanf,xend,yend; +{ + long elsel; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + strcpy(pr4, " UNDO = backspace oder delete oder undo"); + return 1; + L1: + if (blinkelemente(xanf,yanf,xend,yend,1L)== false) + return 1; + for (elsel = 1; elsel <= zelmax; elsel++) { + if (blink[elsel] == true) { + if (group[elsel] != 0) + aenderunggruppen = true; + eldelete(elsel); + } + } + auselemente (); + return 1; +} /*loeschen*/ + + +Static Void vorbsortieren() +/* Vorbereiten Sortieren der Zeichnungselemente */ +/* sequenz enthaelt Sortierreihenfolge */ +/* Vorbereiten = jetzige Reihenfolge */ +{long i; + for (i=1; i<= zelmax; i++) { + if (typ[i] !=0) sequenz[i]=i; + else sequenz[i]= 3*zelmax; + } +} + +Static Void sortieren() +/* Sortieren der Zeichnungselemente gemaess sequenzwert */ +{ long i,j,temp; + if (typ[zel]!=0) fehler(10L); /*letztes Element muesste frei sein ! */ + temp=zel; + /* nur im Bereich belegte Elemente sortieren */ + for (i=1;i<=zelmax;i++) { + for (j=zelmax;j>i;j--) { + if (sequenz[j] < sequenz[i]) { + kopunvotext(i,temp); + kopunvotext(j,i); + kopunvotext(temp,j); + } + } + } + typ[temp]=0; +} + +Static long up(xanf,yanf,xend,yend,taste,msel,phase) + long *msel,phase,taste; + double xanf,yanf,xend,yend; +{/* Elemente in Vordergrund bringen */ + long elsel, maxnr; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + return 1; + L1: + maxnr = zelmax; + if (blinkelemente(xanf,yanf,xend,yend,1L)== false) + return; + vorbsortieren(); + for (elsel=zelmax; elsel >= 1; elsel--) { + if (blink[elsel] == true ) + sequenz[elsel] = ++maxnr; + } + sortieren(); + auselemente(); + return 1; +} /*end up*/ + + +Static long down(xanf,yanf,xend,yend,taste,msel,phase) + long *msel,phase,taste; + double xanf,yanf,xend,yend; +{/* Elemente in Vordergrund bringen */ + long elsel, maxnr; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + return 1; + L1: + maxnr = -zelmax-1; + if (blinkelemente(xanf,yanf,xend,yend,1L)== false) + return; + vorbsortieren(); + for (elsel=1;elsel<=zelmax; elsel++) { + if (blink[elsel] ==true) + sequenz[elsel] = ++maxnr; + } + sortieren(); + auselemente(); + return 1; +} /*end up*/ + +Static Void elchangelineattr(elsel) +long elsel; +{ long ltyp1, ldicke1, lende1, lcolor1; + long ltyp2, ldicke2, lende2, lcolor2; + getlineattribute(elsel, typ[elsel], <yp1, &ldicke1, &lende1, &lcolor1); + ausel(elsel, erase); + getlineattribute(0L, typ[elsel], <yp2, &ldicke2, &lende2, &lcolor2); + if (changelende == true) + lineende[elsel] = lende2; + if ((changelstyle == true)&&(typ[elsel] != ttext)) + linetype[elsel] = ltyp2; + if (changelwidth == true) + ldicke1 = ldicke2; + if (changecolor == true) + lcolor1 = lcolor2; + linedicke[elsel] = 100*lcolor1+ldicke1; + if ((typ[elsel] == ttext)&&(changefont == true)) { + linetype[elsel] = fontnummer; + textparam(elsel); + berechneminmax(elsel); + } + if ((typ[elsel] == ttext)&&(changeposition == true)) + setlagetext(elsel); + zeichnen = true; +} + +Static long changelineattr(xanf,yanf,xend,yend,taste,msel,phase) + long *msel,phase,taste; + double xanf,yanf,xend,yend; +{/* Farbe Elemente veraendern*/ + long elsel; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + /* nur aendern, falls nach chatt entspr. Element angeklickt wurde*/ + changelende = false; + changelstyle = false; + changelwidth = false; + changecolor = false; + changefont = false; + changeposition = false; + return 1; + L1: + if (blinkelemente(xanf,yanf,xend,yend,1L)==false) + return 1; + for (elsel=1; elsel <= zelmax; elsel++) { + if (blink[elsel] == true) + elchangelineattr(elsel); + } /*for elsel*/ + auselemente(); + return 1; +} /*end changelineattr*/ + +Static long queryattr(xanf,yanf,taste,msel,phase) + long *msel,phase,taste; + double xanf,yanf; +{/* Farbe eines Elements erfragen und einstellen */ + long elsel, ltyp, lende; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + return 1; + L1: + if (blinkelemente(xanf,yanf,xend,yend,1L)== true) { + for (elsel=1;elsel<=zelmax; elsel++) { + if (blink[elsel] ==true){ + getlineattribute(elsel, typ[elsel], <yp, &aktldicke, &lende, + &aktcolor); + strichsymbol(); + ausmenueelement(mdick); + colorsymbol(); + ausmenueelement(mcolor); + if (typ[elsel]==ttext) + setzeakttextfont(elsel); + return 1; + } + } + } + return 1; +} /*end welchefarbe*/ + + + + +Static Void spgp(xg, yg, dx, dy, xp, yp) +double xg, yg, dx, dy, *xp, *yp; +{ + double xs, ys; + boolean g; + + /*Geradendefinition durch xg,yg,dx,dy*/ + g = lot(xg, yg, dx, dy, *xp, *yp, &xs, &ys); + *xp += 2.0 * (xs - *xp); + *yp += 2.0 * (ys - *yp); +} + + +Static Void spg1(i, xg, yg, dx, dy) +long i; +double xg, yg, dx, dy; +{ + spgp(xg, yg, dx, dy, &x1[i], &y1_[i]); +} + + +Static Void spg2(i, xg, yg, dx, dy) +long i; +double xg, yg, dx, dy; +{ + spgp(xg, yg, dx, dy, &x2[i], &y2[i]); +} + + +Static Void spgb(i, xg, yg, dx, dy) +long i; +double xg, yg, dx, dy; +{ + spgp(xg, yg, dx, dy, &xb1[i], &yb1[i]); + spgp(xg, yg, dx, dy, &xb2[i], &yb2[i]); +} + + +Static Void spgell0(i, xg, yg, dx, dy) +long i; +double xg, yg, dx, dy; +{ + double xl, yl, lx, ly; + + lx = laenge1[i]; + ly = laenge2[i]; + ell_xy(x1[i], y1_[i], lx, ly, crw[i], srw[i], lx, 0.0, &xl, &yl); + spgp(xg, yg, dx, dy, &xl, &yl); + /*gespiegelter Endpunkt x_Achse der Ellipse*/ + spg1(i, xg, yg, dx, dy); + setzewinkel(i, x1[i], y1_[i], xl, yl); +} + + +Static Void spgell(i, xg, yg, dx, dy) +long i; +double xg, yg, dx, dy; +{ + spgell0(i, xg, yg, dx, dy); +} + + +Static Void spgellbogen(i, xg, yg, dx, dy) +long i; +double xg, yg, dx, dy; +{ + double xm, ym, lx, ly, cr, sr; + + lx = laenge1[i]; + ly = laenge2[i]; + ftausch(&xb1[i], &xb2[i]); + ftausch(&yb1[i], &yb2[i]); + spgb(i, xg, yg, dx, dy); + spgell0(i, xg, yg, dx, dy); + xm = x1[i]; + ym = y1_[i]; + cr = crw[i]; + sr = srw[i]; + wanf[i] = winkelell(xm, ym, lx, ly, cr, sr, xb1[i], yb1[i]); + wend[i] = winkelell(xm, ym, lx, ly, cr, sr, xb2[i], yb2[i]); + ellanfendpunkt(i); +} + + +Static Void spgkbogen(i, xg, yg, dx, dy) +long i; +double xg, yg, dx, dy; +{ + ftausch(&xb1[i], &xb2[i]); + ftausch(&yb1[i], &yb2[i]); + spgb(i, xg, yg, dx, dy); + spg1(i, xg, yg, dx, dy); + wanf[i] = winkelk(x1[i], y1_[i], xb1[i], yb1[i]); + wend[i] = winkelk(x1[i], y1_[i], xb2[i], yb2[i]); +} + + +Static Void einelspiegeln(elsel, xg, yg, dx, dy) +long elsel; +double xg, yg, dx, dy; +{ + long i; + + freieselement(&i); + kopunv(elsel, i); + switch (typ[i]) { + + case ttext: + spg1(i, xg, yg, dx, dy); + spg2(i, xg, yg, dx, dy); + spgb(i, xg, yg, dx, dy); + setzewinkel(i, xb1[i], yb1[i], xb2[i], yb2[i]); + textparam(i); + break; + + case tgerade: + spg1(i, xg, yg, dx, dy); + spg2(i, xg, yg, dx, dy); + break; + + case trechteckgef: + spg1(i, xg, yg, dx, dy); + spg2(i, xg, yg, dx, dy); + spgb(i, xg, yg, dx, dy); + /*setzewinkel(i, x1[i], y1_[i], xb1[i], yb1[i]);*/ + break; + + case tdreieckgef: + case tviereckgef: + spg1(i, xg, yg, dx, dy); + spg2(i, xg, yg, dx, dy); + spgb(i, xg, yg, dx, dy); + break; + + case tkreis: + case tkreisgef: + spg1(i, xg, yg, dx, dy); + break; + + case tkreisbogen: + case tkreissektorgef: + spgkbogen(i, xg, yg, dx, dy); + break; + + case tell: + case tellgef: + spgell(i, xg, yg, dx, dy); + break; + + case tellbogen: + case tellsektorgef: + spgellbogen(i, xg, yg, dx, dy); + break; + + case tbezier: + case tbeziergef: + spg1(i, xg, yg, dx, dy); + spg2(i, xg, yg, dx, dy); + spgb(i, xg, yg, dx, dy); + break; + }/*case*/ + bestimmeneuegruppe(i); + if (duplikat(i)==false) { + berechneminmax(i); + ausel(i, paint); + } +} /*einelspiegeln*/ + + +Static Void elspiegeln(xanf, yanf, xend, yend, xg, yg, dx, dy) +double xanf, yanf, xend, yend, xg, yg, dx, dy; +{ + long elsel; + + if (blinkelemente(xanf, yanf, xend, yend, 1L) == false ) + return; + gruppenumbenennen(); + for (elsel=1;elsel <=zelmax;elsel++) { + if (blink[elsel] == true) { + einelspiegeln(elsel, xg, yg, dx, dy); + } + } + unbenutztegruppenfreigeben(); +} /*elspiegeln*/ + + +Static long spiegeln(x,y,xanf,yanf,xend,yend,taste,msel,phase) +long *msel,taste,phase; +double x,y,xanf,yanf,xend,yend; +{ + static long elselg; + double xg, yg, dx, dy; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + strcpy(pr4, pr2menue[*msel]); + return 1; + L1: + sucheelement((long)nurgerade, &elselg, xanf, yanf); + if (elselg==0) return 1; + strcpy(pr4,pr3menue[*msel]); + return 2; + L2: + dx = x2[elselg] - x1[elselg]; + dy = y2[elselg] - y1_[elselg]; + xg = x1[elselg]; + yg = y1_[elselg]; + elspiegeln(xanf, yanf, xend, yend, xg, yg, dx, dy); + return 2; +} + + +Static long einpolygon(x,y,taste,msel,phase) + long *msel,taste,phase; + double x,y; +{ + double r, dwi, cd, sd, cwi, swi, xx1, yy1, xx2, yy2; + static long elsel; + long n, k, anz; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + default: goto L3; + } + L0: + freieselement(&elsel); + return 1; + L1: + x1[elsel] = x; + y1_[elsel] = y; + strcpy(pr3,nullstr); + strcpy(pr4, pr3menue[*msel]); + return 2; + L2: + r = ppabstand(x, y, x1[elsel], y1_[elsel]); + if (r < 2.0) r = 2.0; + laenge1[elsel]=r; + L2B: + if (selmenue[mverbunden]==true) + strcpy(pr3, "(connected) "); + else + strcpy(pr3, nullstr); + strcpy(pr4,nullstr); + inittastaturtext(nullstr, " number of edges?",1L); + return 3; + L3: + if (istnullstr(EinText) == true) goto L4; + anz=sscanf(EinText,"%ld",&n); + if ((anz!=1)|| (n == 0) || (n < 3)) goto L2B; + r=laenge1[elsel]; + dwi = pi / n; + cd = cos(dwi); + sd = sin(dwi); + /*Anfang Winkel 0*/ + cwi = 1.0; + swi = 0.0; + addtheorem(cd, sd, cd, sd, &cd, &sd); /*Winkel verdoppeln*/ + xx1 = x1[elsel] + r * cwi; + yy1 = y1_[elsel] + r * swi; + for (k = 1; k <= n; k++) { + addtheorem(cd, sd, cwi, swi, &cwi, &swi); + xx2 = x1[elsel] + r * cwi; + yy2 = y1_[elsel] + r * swi; + if (selmenue[mverbunden]==true) + createline(0L, x1[elsel], y1_[elsel], xx2, yy2); + createline(0L, xx1, yy1, xx2, yy2); + xx1 = xx2; + yy1 = yy2; + } + L4: + strcpy(pr3,nullstr); + strcpy(pr4,pr2menue[*msel]); + return 1; +} /*Polygon*/ + +Static Void size_change(display,ix,iy) + Display *display; + long ix,iy; +{ double xmalt,ymalt,dxm,dym; + + ixzmax=ix; + xzmax=ix; + iyzmax=iy; + yzmax= iy; + xmalt = xmittelzei; + ymalt = ymittelzei; + xmittelzei = (xzmax - xgr) / 2.0 + xgr; + ymittelzei = (yzmax - yprompt - 12.0) / 2.0 + yprompt + 12.0; + setze_clip_bereiche(display); + /* fuer readstdin vermerken, welche Skalierungen durchgef"uhrt wurden */ + dxm = xmalt-xmittelzei; + dym = ymalt-ymittelzei; + readdxx = readdxx + dxm*(1.0-readf); + readdyy = readdyy + dym*(1.0-readf); + /* Ende dieser Vermerke */ +} + + +Static Void initmisc() +{ + long i; + xmittelzei = (xzmax - xgr) / 2.0 + xgr; + ymittelzei = (yzmax - yprompt - 12.0) / 2.0 + yprompt + 12.0; + fgradbo = pi / wh; + fbograd = wh / pi; + + *nullstr = '\0'; + + strcpy(textausrichtung[0], "[bl]"); + strcpy(textausrichtung[1],nullstr); + strcpy(textausrichtung[2], "[br]"); + strcpy(textausrichtung[3], "[b]"); + strcpy(textausrichtung[4], "[tl]"); + strcpy(textausrichtung[5], "[tr]"); + strcpy(textausrichtung[6], "[t]"); + strcpy(textausrichtung[7], "[l]"); + strcpy(textausrichtung[8], "[r]"); +} + +Static Void initcutpaste() +{ + long i; + wartendexport=false; + requesttime = 0; + lasteventtime = 0; + for (i=0;i<zrequw;i++) requestbelegt[i]=false; + latexdraw_object=XInternAtom(display,"latexdraw_object",False); + latexdraw_text =XInternAtom(display,"latexdraw_text",False); + latexdraw_selection =XInternAtom(display,"latexdraw_selection",False); +} + + +Static Void gell00schnittp(xx1,yy1,xx2,yy2,elsel,anz,wgerade,well,instrecke) +long elsel, *anz; +double xx1,yy1,xx2,yy2; +double *wgerade, *well; +boolean instrecke; +{ + double dx, dy, xm, ym, lx, ly, cr, sr, wwg, wwell, px, + py, a2, a1, a0; + long i, anzl; + terg wgl; + + ellpar(elsel, &xm, &ym, &lx, &ly, &cr, &sr); + xy_ell(xm, ym, cr, sr, xx1, yy1, &xx1, &yy1); + xy_ell(xm, ym, cr, sr, xx2, yy2, &xx2, &yy2); + dx = xx2 - xx1; + dy = yy2 - yy1; + a2 = dx * dx / (lx * lx) + dy * dy / (ly * ly); + a1 = 2.0 * (xx1 * dx / (lx * lx) + yy1 * dy / (ly * ly)); + a0 = xx1 * xx1 / (lx * lx) + yy1 * yy1 / (ly * ly) - 1.0; + glzweiterord(a2, a1, a0, &anzl, wgl); + *anz = 0; + for (i = 1; i <= anzl; i++) { + wwg = wgl[i]; + if (instrecke == true) { + /* Pruefung, ob Schnittpunkt in Strecke*/ + if ( (wwg < -0.1) || (wwg > 1.1) ) + goto weiter; /* kein Schnittpunkt */ + } + + px = xx1 + dx * wwg; + py = yy1 + dy * wwg; + wwell = winkel0(px, py, lx, ly); /* w fuer Ellipse */ + if (si_fabs(wwell - wanf[elsel]) < 0.1) + wwell = wanf[elsel]; + if (si_fabs(wwell - wend[elsel]) < 0.1) + wwell = wend[elsel]; + (*anz)++; + wgerade[*anz] = wwg; + well[*anz] = wwell; + if ((typ[elsel] == tkreisbogen || typ[elsel] == tellbogen || + typ[elsel] == tkreissektorgef || + typ[elsel] == tellsektorgef) && + (inwinkel(elsel, wwell)==false)) + /* Punkt ist doch kein Schnittpunkt */ + (*anz)--; + weiter:; + } /*for*/ +} + +Static Void gell0schnittp(elselg,elsel,anz,wgerade,well,instrecke) +long elselg, elsel, *anz; +double *wgerade, *well; +boolean instrecke; +{ + double xx1, yy1, xx2, yy2; + + xx1 = x1[elselg]; + yy1 = y1_[elselg]; + xx2 = x2[elselg]; + yy2 = y2[elselg]; + gell00schnittp(xx1,yy1,xx2,yy2,elsel,anz,wgerade,well,instrecke); +} + + +Static Void testwawe(wp, wa, we, w) +double wp, *wa, *we, w; +{ + if (si_fabs(w - wp) <= 0.001) + /* der Schnittpunkt ist so nahe am Anclickpunkt, dass eine */ + /* Entscheidung sinnlos ist, bzw. der Schnittpunkt igoriert werden */ + /* sollte, insbesondere im Zusammenhang von connect, wo */ + /* Grenzpunkte als Clickpunkte verwendet werden. */ + return; + if ((w < wp) && (w > *wa)) + *wa = w; + if ((w > wp) && (w < *we)) + *we = w; +} + + +Static Void testxyell(elsel, elsel1, xx1, yy1, wp, wa, we) +long elsel, elsel1; +double xx1, yy1, wp, *wa, *we; +{ + double w1, w, xxp, yyp, xx, yy, xm1, ym1, lx1, ly1, cr1, sr1, xm, ym, lx, + ly, cr, sr; + + ellpar(elsel, &xm, &ym, &lx, &ly, &cr, &sr); /*Bezugsellipse elselp*/ + ellpar(elsel1, &xm1, &ym1, &lx1, &ly1, &cr1, &sr1); + w1 = winkel0(xx1, yy1, lx1, ly1); + ell_xy(xm1, ym1, lx1, ly1, cr1, sr1, xx1, yy1, &xxp, &yyp); + /*testkreis(xxp,yyp,7.0);*/ + if (inwinkel(elsel1, w1)==false) + goto _L1; + w = winkelell(xm, ym, lx, ly, cr, sr, xxp, yyp); + /*testkreis(xxp,yyp,6.0);*/ + if (inwinkel(elsel, w)==false) + goto _L1; + ellw_xy(xm, ym, lx, ly, cr, sr, w, &xx, &yy); + /*testkreis(xx,yy,5.0);*/ + if (ppabstand(xxp, yyp, xx, yy) > 5.0) + goto _L1; + /*testkreis(xx,yy,3.0);*/ + testwawe(wp, wa, we, w); + testwawe(wp, wa, we, w + wg); + testwawe(wp, wa, we, w - wg); +_L1: ; +} + + +Static Void ellellschnittp(elselp, elsel1, wp, wa, we) +long elselp, elsel1; +double *wp, *wa, *we; +{ + long i, anz; + terg x1erg; + double xm1, ym1, lx1, ly1, cr1, sr1, xm, ym, lx, ly, cr, sr, qlv, axx, axy, + ax0, ayx, ayy, ay0, bxx, byy, bx, by, bxy, b, c4, c3, c2, c1, c0, + xx1, yy1; + + ellpar(elselp, &xm, &ym, &lx, &ly, &cr, &sr); + ellpar(elsel1, &xm1, &ym1, &lx1, &ly1, &cr1, &sr1); + qlv = ly1 / lx1; + qlv *= qlv; + axx = (cr * cr1 + sr * sr1) / lx; + axy = (sr * cr1 - cr * sr1) / lx; + ax0 = (cr * (xm1 - xm) + sr * (ym1 - ym)) / lx; + ayx = (cr * sr1 - sr * cr1) / ly; + ayy = (sr * sr1 + cr * cr1) / ly; + ay0 = (sr * (xm - xm1) + cr * (ym1 - ym)) / ly; + bxx = axx * axx + ayx * ayx; + byy = axy * axy + ayy * ayy; + bx = 2.0 * (axx * ax0 + ayx * ay0); + by = 2.0 * (axy * ax0 + ayy * ay0); + bxy = 2.0 * (axx * axy + ayx * ayy); + b = ax0 * ax0 + ay0 * ay0 - 1.0; + bxx -= qlv * byy; + b += byy * ly1 * ly1; + c4 = bxx * bxx + qlv * bxy * bxy; + c3 = 2.0 * (bxx * bx + qlv * by * bxy); + c2 = 2.0 * bxx * b + bx * bx + qlv * by * by - ly1 * ly1 * bxy * bxy; + c1 = 2.0 * (bx * b - ly1 * ly1 * by * bxy); + c0 = b * b - ly1 * ly1 * by * by; + glvierterord(c4, c3, c2, c1, c0, &anz, x1erg); + for (i = 1; i <= anz; i++) { + xx1 = x1erg[i]; + yy1 = xx1 / lx1; + yy1 = 1.0 - yy1 * yy1; + yy1 = sisqrt(1.0, yy1); + if (yy1 >= 0.0) { + yy1 = ly1 * yy1; + testxyell(elselp, elsel1, xx1, yy1, *wp, wa, we); + testxyell(elselp, elsel1, xx1, -yy1, *wp, wa, we); + } + } +} + + +Static boolean ellbozuklein(r, wa, we) +double r, wa, we; +{ + double dw; + + dw = we - wa; + if (dw < 0.0) + dw += wg; + dw = r * dw * fgradbo; + if (dw < 3.0) return true; + else return false; +} + + +Static Void ellauftrennen(elselp, wa, we) +long elselp; +double wa, we; +{ + long i; + double lmax; + + if (laenge1[elselp] > laenge2[elselp]) + lmax = laenge1[elselp]; + else + lmax = laenge2[elselp]; + while (wa < 0.0) + wa += wg; + while (wa >= wg) + wa -= wg; + while (we < 0.0) + we += wg; + while (we >= wg) + we -= wg; + if (si_fabs(wanf[elselp] - wa) < 0.5) + wa = wanf[elselp]; + if (si_fabs(wend[elselp] - we) < 0.5) + we = wend[elselp]; + if (wa == wanf[elselp] && we == wend[elselp]) + goto _L1; + switch (typ[elselp]) { + + + case tkreis: + case tkreisgef: + if (wa == we) + goto _L1; + ausel(elselp, erase); + wanf[elselp] = we; + wend[elselp] = wa; + if (typ[elselp] == tkreis) typ[elselp] = tkreisbogen; + else typ[elselp] = tkreissektorgef; + kreisanfendpunkt(elselp); + if (ellbozuklein(lmax, wanf[elselp], wend[elselp])==true) + typ[elselp] = 0; + else + berechneminmax(elselp); + ausel(elselp, paint); + break; + + case tell: + case tellgef: + if (wa == we) + goto _L1; + ausel(elselp, erase); + wanf[elselp] = we; + wend[elselp] = wa; + if (typ[elselp] == tell) typ[elselp] = tellbogen; + else typ[elselp] = tellsektorgef; + ellanfendpunkt(elselp); + if (ellbozuklein(lmax, wanf[elselp], wend[elselp])==true) + typ[elselp] = 0; + else + berechneminmax(elselp); + ausel(elselp, paint); + break; + + case tkreisbogen: + case tellbogen: + case tkreissektorgef: + case tellsektorgef: + ausel(elselp, erase); + if ((wa != wanf[elselp]) & + (ellbozuklein(lmax, wa, wanf[elselp])==false)) { + freieselement(&i); + kopunv(elselp, i); + wend[i] = wa; + ellanfendpunkt(i); + berechneminmax(i); + ausel(i, paint); + } + if ((we != wend[elselp]) & + (ellbozuklein(lmax, we, wend[elselp])==false)) { + freieselement(&i); + kopunv(elselp, i); + wanf[i] = we; + ellanfendpunkt(i); + berechneminmax(i); + ausel(i, paint); + } + typ[elselp] = 0; + break; + }/*case*/ +_L1: ; +} + + +Static Void ellgschnittp(elsel, elselg, wp, wa, we, instrecke) +long elsel, elselg; +double *wp, *wa, *we; +boolean instrecke; +{ + long i, anz; + double w; + terg wgerade, well; + + gell0schnittp(elselg, elsel, &anz, wgerade, well, instrecke); + for (i = 1; i <= anz; i++) { + w = well[i]; + while (w > wg) + w -= wg; + while (w < 0.0) + w += wg; + testwawe(*wp, wa, we, w); + testwawe(*wp, wa, we, w + wg); + testwawe(*wp, wa, we, w - wg); + } +} + +Static Void ellgischnittp(elsel, i, xx1,yy1,xx2,yy2, wp,wa,we, instrecke) +long elsel, i; +double xx1,yy1,xx2,yy2,*wp, *wa, *we; +boolean instrecke; +{ /* i ist freies Element, xx1, ... definieren Endpunkte einer Strecke */ + /* mit der die Ellipse elsel geschnitten wird */ + /* instrecke = true, dann muss der Schnittpunkt auch in der */ + /* Strecke i liegen */ + + + typ[i] = tgerade; + x1[i] = xx1; + y1_[i] = yy1; + x2[i] = xx2; + y2[i] = yy2; + ellgschnittp(elsel, i, wp, wa, we, instrecke); + typ[i] = -1; +} + + + +Static Void ellschnittp(elselp, elsel, wp, wa, we, instrecke) +long elselp, elsel; +double *wp, *wa, *we; +boolean instrecke; +/* instrecke = true, dann muss der Schnittpunkt auch in der */ +/* Strecke elsel liegen, falls elsel Strecke */ +{ + long i, e; + boolean sonderfall; /* fuer Schnittpunktberuecksichtigung in Strecken */ + + sonderfall = true; + e = elsel; + switch (typ[elsel]) { + case ttext: + break; + case tgerade: + ellgschnittp(elselp, elsel, wp, wa, we, instrecke); + break; + case tkreis: + case tkreisgef: + case tkreisbogen: + case tell: + case tellgef: + case tellbogen: + ellellschnittp(elselp, elsel, wp, wa, we); + break; + case tkreissektorgef: + case tellsektorgef: + freieselement(&i); + ellellschnittp(elselp, elsel, wp, wa, we); + ellgischnittp(elselp,i,x1[e],y1_[e],xb1[e],yb1[e],wp,wa,we,sonderfall); + ellgischnittp(elselp,i,x1[e],y1_[e],xb2[e],yb2[e],wp,wa,we,sonderfall); + break; + case tdreieckgef: + freieselement(&i); + ellgischnittp(elselp,i,x1[e],y1_[e],x2[e],y2[e],wp,wa,we,sonderfall); + ellgischnittp(elselp,i,x2[e],y2[e],xb1[e],yb1[e],wp,wa,we,sonderfall); + ellgischnittp(elselp,i,xb1[e],yb1[e],x1[e],y1_[e],wp,wa,we,sonderfall); + break; + case trechteckgef: + case tviereckgef: + freieselement(&i); + ellgischnittp(elselp,i,x1[e],y1_[e],xb1[e],yb1[e],wp,wa,we,sonderfall); + ellgischnittp(elselp,i,xb1[e],yb1[e],x2[e],y2[e],wp,wa,we,sonderfall); + ellgischnittp(elselp,i,x2[e],y2[e],xb2[e],yb2[e],wp,wa,we,sonderfall); + ellgischnittp(elselp,i,xb2[e],yb2[e],x1[e],y1_[e],wp,wa,we,sonderfall); + break; + case tbezier: + case tbeziergef: + break; + }/*case*/ +} + + +Static Void etrim(elselp, elsel1, elsel2, xp, yp, instrecke) +long elselp, elsel1, elsel2; +double xp, yp; +boolean instrecke; +{ + double xm, ym, lx, ly, cr, sr, wa, we, wp; + + ellpar(elselp, &xm, &ym, &lx, &ly, &cr, &sr); + wp = winkelell(xm, ym, lx, ly, cr, sr, xp, yp); + wa = wanf[elselp]; + we = wend[elselp]; + if (typ[elselp] == tkreis || typ[elselp] == tell || + typ[elselp] == tkreisgef || typ[elselp] == tellgef) { + wa -= wg; + we += wg; + } + if (wp < wa) + wp += wg; + if (we <= wa) + we += wg; + ellschnittp(elselp, elsel1, &wp, &wa, &we, instrecke); + if (elsel1 != elsel2) + ellschnittp(elselp, elsel2, &wp, &wa, &we, instrecke); + ellauftrennen(elselp, wa, we); +} + + +Static Void gellschnittp(elselp, elsel, wp, wa, we) +long elselp, elsel; +double *wp, *wa, *we; +{ + double w; + long anz, i; + terg wg_, well; + + gell0schnittp(elselp, elsel, &anz, wg_, well, false); + for (i = 1; i <= anz; i++) { + w = wg_[i]; + if (w > *wa && w < *we) { + if (w < *wp) + *wa = w; + else + *we = w; + } + } /*for i*/ +} + + +Static double winkelg(elsel, xp, yp) +long elsel; +double xp, yp; +{ + double dx, dy; + + dx = x2[elsel] - x1[elsel]; + dy = y2[elsel] - y1_[elsel]; + if (si_fabs(dx) > si_fabs(dy)) + return ((xp - x1[elsel]) / dx); + else + return ((yp - y1_[elsel]) / dy); +} + + +Static Void ggschnittp(elselp, elsel, wp, wa, we, instrecke) +long elselp, elsel; +double *wp, *wa, *we; +boolean instrecke; +{ /* Schnittpunkt zweier Geraden, Schnittpunkt liegt in der durch */ + /* elselp definierten Strecke. Falls instrecke true liegt der */ + /* Schnittpunkt auch in der durch elsel definierten Strecke */ + double dxp, dyp, dx, dy, xx1p, yy1p, xx1, yy1, n, z, vz, w; + + xx1p = x1[elselp]; + yy1p = y1_[elselp]; + dxp = x2[elselp] - xx1p; + dyp = y2[elselp] - yy1p; + xx1 = x1[elsel]; + yy1 = y1_[elsel]; + dx = x2[elsel] - xx1; + dy = y2[elsel] - yy1; + n = dxp * dy - dx * dyp; /*xs,ys sei Schnittpunkt, n = nenner bei */ + /* Ausdruck fuer xs, n==0: parallel */ + if (n == 0.0) + goto L1; + /* m = (xs-xx1p)/dxp = z/n */ + vz = fsign(n); + n = si_fabs(n); + z = vz * (dy * (xx1 - xx1p) + dx * (yy1p - yy1)); + if (z <= -0.01 || z >= 1.01*n) + /* Schnittpunkt ausserhalb Strecke elselp */ + goto L1; + w = z / n; + if (w <= *wa || w >= *we) + goto L1; + if (instrecke == true) { + /* Test, ob Schnittpunkt auch in zweiter Strecke */ + z = vz*(dyp*(xx1-xx1p)+dxp*(yy1p-yy1)); + if ((z < -0.01)||(z > 1.01*n)) + goto L1; + } + testwawe(*wp, wa, we, w); +L1: ; +} + + +Static Void ggischnittp(elselg, i, xx1,yy1,xx2,yy2, wp,wa,we, instrecke) +long elselg, i; +double xx1,yy1,xx2,yy2,*wp, *wa, *we; +boolean instrecke; +{ /* i ist freies Element, xx1, ... definieren Endpunkte einer Strecke */ + /* mit der die Strecke elselg geschnitten wird */ + /* instrecke = true, dann muss der Schnittpunkt auch in der */ + /* Strecke i liegen */ + + + typ[i] = tgerade; + x1[i] = xx1; + y1_[i] = yy1; + x2[i] = xx2; + y2[i] = yy2; + ggschnittp(elselg, i, wp, wa, we, instrecke); + typ[i] = -1; +} + + + +Static Void gschnittp(elselg, elsel, wp, wa, we, instrecke) +long elselg, elsel; +double *wp, *wa, *we; +boolean instrecke; +{ /* Bestimmung wa und we fuer Schnittpunkt auf Strecke elselg mit */ + /* anderem Zeichnungselement elsel. Falls elsel eine Strecke und */ + /* instrecke = true, dann muss der Schnittpunkt auch in der */ + /* Strecke elsel liegen */ + + long i, e; + boolean sonderfall; /* fuer Schnittpunkt in Strecke */ + + sonderfall = true; + e = elsel; + switch (typ[elsel]) { + case ttext: + break; + case tgerade: + ggschnittp(elselg, elsel, wp, wa, we, instrecke); + break; + case tkreis: + case tkreisgef: + case tkreisbogen: + case tell: + case tellgef: + case tellbogen: + gellschnittp(elselg, elsel, wp, wa, we); + break; + case tkreissektorgef: + case tellsektorgef: + freieselement(&i); + gellschnittp(elselg, elsel, wp, wa, we); + ggischnittp(elselg,i,x1[e],y1_[e],xb1[e],yb1[e],wp,wa,we,sonderfall); + ggischnittp(elselg,i,x1[e],y1_[e],xb2[e],yb2[e],wp,wa,we,sonderfall); + break; + case tdreieckgef: + freieselement(&i); + ggischnittp(elselg,i,x1[e],y1_[e],x2[e],y2[e],wp,wa,we,sonderfall); + ggischnittp(elselg,i,x2[e],y2[e],xb1[e],yb1[e],wp,wa,we,sonderfall); + ggischnittp(elselg,i,xb1[e],yb1[e],x1[e],y1_[e],wp,wa,we,sonderfall); + break; + case trechteckgef: + case tviereckgef: + freieselement(&i); + ggischnittp(elselg,i,x1[e],y1_[e],xb1[e],yb1[e],wp,wa,we,sonderfall); + ggischnittp(elselg,i,xb1[e],yb1[e],x2[e],y2[e],wp,wa,we,sonderfall); + ggischnittp(elselg,i,x2[e],y2[e],xb2[e],yb2[e],wp,wa,we,sonderfall); + ggischnittp(elselg,i,xb2[e],yb2[e],x1[e],y1_[e],wp,wa,we,sonderfall); + break; + case tbezier: + case tbeziergef: + break; + }/*case*/ +} + + +Static Void gauftrennen(elsel, wa, we) +long elsel; +double wa, we; +{ + double xa, ya, xe, ye, xx1, yy1, xx2, yy2; + + ausel(elsel, erase); + xx1 = x1[elsel]; + yy1 = y1_[elsel]; + xx2 = x2[elsel]; + yy2 = y2[elsel]; + xa = xx1 + (xx2 - xx1) * wa; + ya = yy1 + (yy2 - yy1) * wa; + xe = xx1 + (xx2 - xx1) * we; + ye = yy1 + (yy2 - yy1) * we; + if (wa == 0.0 && we == 1.0) /*beide Punkte bleiben*/ + goto L1; + if (wa == 0.0) { /*Punkt 2 bleibt*/ + x1[elsel] = xe; + y1_[elsel] = ye; + goto L1; + } + if (we == 1.0) { /*Punkt 1 bleibt*/ + x2[elsel] = xa; + y2[elsel] = ya; + goto L1; + } + /*Ausschnitt entfaellt*/ + if (ppabstand(xx1, yy1, xa, ya) > 3) + createline(elsel, xx1, yy1, xa, ya); + x1[elsel] = xe; + y1_[elsel] = ye; +L1: + /* connect davon abhaengig, dass altes Element verwendet wird */ + if (ppabstand(x1[elsel], y1_[elsel], x2[elsel], y2[elsel]) > 3){ + berechneminmax(elsel); + ausel(elsel, paint); + return; + } + typ[elsel] = 0; +} + + +Static Void gtrim(elselp, elsel1, elsel2, xp, yp, instrecke) +long elselp, elsel1, elsel2; +double xp, yp; +{ /* Trim mit der Geraden und nicht nur mit der Strecke, falls elsel1 */ + /* oder elsel2 Strecken sind, falls instrecke = true */ + double wa, we, wp; + + wa = 0.0; + we = 1.0; + wp = winkelg(elselp, xp, yp); + if (wp > wa && wp < we) { + gschnittp(elselp, elsel1, &wp, &wa, &we, instrecke); + if (elsel1 != elsel2) + gschnittp(elselp, elsel2, &wp, &wa, &we, instrecke); + } + gauftrennen(elselp, wa, we); +} + + +Static long trim(xa,ya,msel,phase) + long *msel,phase; + double xa,ya; +{ + static long elselp, elsel1, elsel2, relsel; + double xp,yp; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + case 3: goto L3; + } + L0: + return 1; + L1: + sucheelement((long)nurtrimel, &elselp, xa, ya); + if (elselp==0) return 1; + freieselement(&relsel); + x1[relsel] = xa; + y1_[relsel] = ya; + strcpy(pr4, " bounding object 1?"); + return 2; + L2: + sucheelement((long)nurboundel, &elsel1, xa, ya); + if ((elsel1==0)||(elsel1==elselp)) + return 2; + strcpy(pr4, " bounding object 2?"); + return 3; + L3: + sucheelement((long)nurboundel, &elsel2, xa, ya); + if ((elsel2==0)||(elsel2==elselp)) + return 3; + xp=x1[relsel]; + yp=y1_[relsel]; + switch (typ[elselp]) { + case tgerade: + gtrim(elselp, elsel1, elsel2, xp, yp, false); + break; + case tkreis: + case tkreisgef: + case tkreisbogen: + case tkreissektorgef: + etrim(elselp, elsel1, elsel2, xp, yp, false); + break; + case tell: + case tellgef: + case tellbogen: + case tellsektorgef: + etrim(elselp, elsel1, elsel2, xp, yp, false); + break; + }/*case*/ + auselemente(); + return 0; +} /*trim*/ + +Static Void schwerpunkt(elsel,xs,ys) + long elsel; + double *xs,*ys; +{/* Schwerpunkt Dreieck */ + double dx1,dy1,dx2,dy2; + + dx1 = (x2[elsel]+xb1[elsel])/2.0-x1[elsel]; + dy1 = (y2[elsel]+yb1[elsel])/2.0-y1_[elsel]; + dx2 = (x1[elsel]+xb1[elsel])/2.0-x2[elsel]; + dy2 = (y1_[elsel]+yb1[elsel])/2.0-y2[elsel]; + *xs = (x1[elsel]*dy1*dx2-x2[elsel]*dy2*dx1+(y2[elsel]-y1_[elsel])*dx1*dx2) + /(dy1*dx2-dy2*dx1); + *ys = (*xs-x1[elsel])*dy1/dx1+y1_[elsel]; +} + + +Static Void fontwahl(taste) +long taste; +{ + selmenue[mfont] = false; + if (taste==1) fontnummer = folgefont[fontnummer]; + if (taste==3) fontnummer = prevfont[fontnummer]; + strcpy(menue[mfont],textfontlabel[fontnummer]); + ausmenueelement(mfont); +} + +Static Void dickenwahl(taste) +long taste; +{ + selmenue[mdick]=false; + ausmenueelement(mdick); + if (taste==1) aktldicke = aktldicke +1; + if (taste==3) aktldicke = aktldicke -1; + if (aktldicke>maxldicke) aktldicke=1; + if (aktldicke<1) aktldicke=maxldicke; + strichsymbol(); + ausmenueelement(mdick); +} + +Static Void readzeitwahl(taste) +long taste; +{ + long f; + + f = 5; + if (aktreadzeit < 50) f = 2; + if (aktreadzeit < 20) f = 1; + selmenue[mreadzeit]=false; + if (taste==1) aktreadzeit += 1*f; + if (taste==3) aktreadzeit -= 1*f; + if (aktreadzeit>120) aktreadzeit = 120; + if (aktreadzeit<0) aktreadzeit = 0; + readzeitsymbol(); + ausmenueelement(mreadzeit); +} + + +Static Void colorwahl(taste) +long taste; +{ + long posnr; +/* Fortschaltung mit Farbnummern und nicht Positionsnummern */ + + posnr = aktcolor; +/* posnr = farbposfarbnr[aktcolor]; */ + selmenue[mcolor]=false; + if (taste==1) posnr += 1; + if (taste==3) posnr -= 1; + if (posnr>=aktzahlfarben) posnr=0; + if (posnr<0) posnr=aktzahlfarben-1; + aktcolor = posnr; +/* aktcolor = farbnrfarbpos[posnr]; */ + colorsymbol(); + ausmenueelement(mcolor); +} + +Static Void somencolorwahl(i) +long i; +{ + aktcolor = farbnrfarbpos[i]; + colorsymbol(); + ausmenueelement(mcolor); +} + +Static Void winkelsymbol() +{ + Char sss[10]; + + sprintf(sss,"%3ld",winkelrotate); + strcpy(menue[mwinkelrot],sss); +} + +Static Void setwinkelrot(x) + long x; +{ + winkelrotate = x; + winkelsymbol(); + ausmenueelement(mwinkelrot); +} + +Static Void winkelwahl(taste) + long taste; +{ + selmenue[mwinkelrot]=false; + if (taste==1) winkelrotate += 5; + if (taste==3) winkelrotate += 30; + if (winkelrotate > 360) + winkelrotate -= 360; + winkelsymbol(); + ausmenueelement(mwinkelrot); +} + +Static long savedateien(msel,dateiname,taste,phase) +Char *dateiname; +long *msel,taste,phase; +{ long iphase; + + iphase = phase; + switch (phase){ + case 0: goto L0; + case 100: goto L1; + default: goto L2; + } + L0: + inittastaturtext(dateiname,pr2menue[*msel],0L); + return 100; + L1: + strcpy(dateiname, EinText); + iphase = 0; + L2: + iphase = austexdatei(msel,dateiname,taste,iphase); + if (iphase != 0) return iphase; + iphase=schreibenausdatei(msel,dateiname,taste,iphase); + selmenloeschen(msel); + return 0; +} + +Static long fuellen(x, y, msel, phase) +long *msel,phase; +double x, y; +{ + static long i; + long k; + double xx1, yy1, xs, ys; + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + vorbsortieren(); + return 1; + L1: + sucheelement((long)nurfillel, &k, x, y); + if (k == 0) return 1; + freieselement(&i); + kopunvotext(k,i); + typ[i] = -1; + switch (typ[k]) { + case tgerade: + xb1[i] = x; + yb1[i] = y; + strcpy(pr4, pr3menue[*msel]); + return 2; + case tkreis: + typ[i] = tkreisgef; + break; + case tkreisbogen: + typ[i] = tkreissektorgef; + break; + case tell: + typ[i] = tellgef; + break; + case tellbogen: + typ[i] = tellsektorgef; + break; + case tbezier: + typ[i] = tbeziergef; + break; + } + goto L4; + + L2: /* wird Dreieck oder Viereck */ + sucheelement((long)nurgerade, &k, x, y); + if (k == 0) return 2; + xx1 = xb1[i]; + yy1 = yb1[i]; + typ[i]=tgerade; + /* wenn Schnittpunkt, dann Dreieck */ + if (gschnittpunkt(x1[i],y1_[i],x2[i]-x1[i],y2[i]-y1_[i], + x1[k],y1_[k],x2[k]-x1[k],y2[k]-y1_[k], + &xs, &ys) == true) { + if ((inxystrecke(x1[i], y1_[i], x2[i], y2[i], xs, ys)== true)&& + (inxystrecke(x1[k], y1_[k], x2[k], y2[k], xs, ys)== true)) { + /*triangle*/ + if (ppabstand(x1[i],y1_[i],xx1,yy1) > ppabstand(x1[i],y1_[i],xs,ys)) { + x1[i] = x2[i]; + y1_[i] = y2[i]; + } + x2[i] = xs; + y2[i] = ys; + xb1[i] = x1[k]; + yb1[i] = y1_[k]; + if (ppabstand(x1[k],y1_[k],x,y) > ppabstand(x1[k],y1_[k],xs,ys)) { + xb1[i] = x2[k]; + yb1[i] = y2[k]; + } + typ[i] = tdreieckgef; + goto L3; + } + } + /* Durch zwei Linien sind vier Punkte fuer ein Viereck (quadrangle) */ + /* definiert. Da die zu verbindenden Punkte so noch nicht eindeutig */ + /* definiert sind, wird vereinbart: Verbunden werden die beiden, dem */ + /* jeweiligen Klickpunkt am naechsten liegenden Punkte */ + if (ppabstand(x1[i],y1_[i],xx1,yy1) < ppabstand(x2[i],y2[i],xx1,yy1)) { + xb1[i] = x1[i]; + yb1[i] = y1_[i]; + x1[i] = x2[i]; + y1_[i] = y2[i]; + } + else { + xb1[i] = x2[i]; + yb1[i] = y2[i]; + } + if (ppabstand(x1[k],y1_[k],x,y) < ppabstand(x2[k],y2[k],x,y)) { + x2[i] = x1[k]; + y2[i] = y1_[k]; + xb2[i] = x2[k]; + yb2[i] = y2[k]; + } + else { + x2[i] = x2[k]; + y2[i] = y2[k]; + xb2[i] = x1[k]; + yb2[i] = y1_[k]; + } + typ[i] = tviereckgef; + L3: + berechneminmax(i); + L4: + setlineattribute(0L, i); + sequenz[i]= -10; /*wird erstes Element */ + sortieren(); + auselemente(); + return 0; +} /* end of fuellen */ + +Static long showgroup(xanf,yanf,taste,msel,phase) +double xanf,yanf; +long taste, *msel,phase; +{ + long elsel; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + return 1; + L1: + sucheelement((long)alleelem, &elsel, xanf, yanf); + if (elsel != 0) { + blinkenan(); + initgruppentag(false); + blinkgruppe(elsel); + } + return 1; +} + +Static long newgroup(xanf,yanf,xend,yend,taste,msel,phase) +double xanf,yanf,xend,yend; +long taste, *msel,phase; +{ + long i,elsel,gelsel,gi; + static long wurzel; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + } + L0: + wurzel = 0; + /* alte Markierungen loeschen, da spaeter sonst verwertet */ + for (i=1;i<=zelmax;i++) + blink[i] = false; + return 1; + L1: + if (blinkelemente(xanf, yanf, xend, yend, 1L)==false) + goto L0B; + if (wurzel == 0) { + /* alle bisher selektierten Elemente kennzeichen */ + for (i=1;i<=zelmax;i++) + blink[i] = blink[i] || blinkalt[i]; + /* Pruefen ob mindestens zwei verschiedene Gruppen */ + elsel = 0; + for (i=1;i<=zelmax;i++) { + if ( (typ[i]>0)&&(blink[i]==true) ) { + if (elsel == 0) { + elsel = i; + gelsel = group[elsel]; + } + else { + gi = group[i]; + if ( (gi == 0) || (gelsel == 0) || + (gruppenwurzel(i) != gruppenwurzel(elsel)) ) { + /* zwei Gruppen */ + wurzel = freiegruppe(); + break; + } + } + } + } + }/* end if wurzel == 0 */ + if (wurzel == 0) { + /* nichts zu gruppieren */ + goto L0B; + } + /* Neue Gruppe da und evtl. Elemente zu gruppieren */ + for (i=1;i<=zelmax;i++) { + if ( (typ[i]>0)&&(blink[i]==true)&& + (gruppenwurzel(i) != wurzel) ){/* zufuegen */ + gruppieren(i, wurzel); + } + } + L0B: + /* alle bisher selektierten Elemente kennzeichen */ + for (i=1;i<=zelmax;i++) { + blink[i] = blink[i] || blinkalt[i]; + if (blink[i] == true) + blinkend = true; + } + return 1; +} + +Static long ungroup(xanf,yanf,taste,msel,phase) +double xanf,yanf; +long taste, *msel,phase; +{ + static long elsel; + long g; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + elsel = 0; + return 1; + L1: + sucheelement((long)alleelem, &elsel, xanf, yanf); + if (elsel != 0) { + blinkenan(); + initgruppentag(false); + blinkgruppe(elsel); + } + return 1; + L2: /* bei OK gedrueckt */ + if (elsel==0) return 0; + loeschegruppe(elsel); + blinkenan(); + initgruppentag(false); + blinkgruppe(elsel); + return 1; +} + +Static long groupok(msel, phase) +long *msel, phase; +{ + selmenue[mgroupok]=false; + ausmenueelement(mgroupok); + if (*msel==mungroup) + return ungroup(0.0, 0.0, 1, msel,2); + return phase; +} + + +Static Void connectpunkt(elsel, xa, ya, xc, yc) +long elsel; +double xa, ya, *xc, *yc; +{ + long e; + + switch (typ[elsel]) { + case ttext: + case tkreis : + case tkreisgef: + case tkreisbogen: + case tell: + case tellgef: + case tellbogen: + case tkreissektorgef: + case tellsektorgef: + *xc = x1[elsel]; + *yc = y1_[elsel]; + return; + case tgerade: + case trechteckgef: + *xc = (x1[elsel]+x2[elsel])*0.5; + *yc = (y1_[elsel]+y2[elsel])*0.5; + return; + case tviereckgef: + e = elsel; + if (gschnittpunkt(x1[e],y1_[e],xb2[e]-x1[e],yb2[e]-y1_[e], + x2[e],y2[e], xb1[e]-x2[e],yb1[e]-y2[e], + xc, yc) == true) { + if ((inxystrecke(x1[e],y1_[e],xb2[e],yb2[e], *xc,*yc)== true)&& + (inxystrecke(x2[e],y2[e], xb1[e],yb1[e], *xc,*yc)== true)) { + return; + } + } + if (gschnittpunkt(x1[e],y1_[e],xb1[e]-x1[e],yb1[e]-y1_[e], + x2[e],y2[e], xb2[e]-x2[e],yb2[e]-y2[e], + xc, yc) == true) { + if ((inxystrecke(x1[e],y1_[e],xb1[e],yb1[e], *xc,*yc)== true)&& + (inxystrecke(x2[e],y2[e], xb2[e],yb2[e], *xc,*yc)== true)) { + return; + } + } + *xc = (x1[elsel]+x2[elsel])*0.5; + *yc = (y1_[elsel]+y2[elsel])*0.5; + return; + case tdreieckgef: + schwerpunkt(elsel,xc,yc); + return; + case tbezier: + case tbeziergef: + if (ppabstand(xa,ya,x1[elsel],y1_[elsel]) <= + ppabstand(xa,ya,x2[elsel],y2[elsel])) { + *xc = x1[elsel]; + *yc = y1_[elsel]; + } + else { + *xc = x2[elsel]; + *yc = y2[elsel]; + } + return; + } +} + +Static Void conngschnittp(elselg, elsel, wp, wa, we) +long elselg, elsel; +double *wp, *wa, *we; +{ /* Trimmen der durch elselg bezeichneten Strecke mit elsel fuer */ + /* connect. Der Schnittpunkt ist nur relevant, falls er bei Strecken */ + /* in beiden Strecken liegt. Deshalb true beim Aufruf von gschnittp. */ + + + *wa = 0.0; + *we = 1.0; + + if (elsel == 0) return; /*nichts zu trimmen!*/ + + switch (typ[elsel]) { + case ttext: + break; + case tgerade: + case tkreis : + case tkreisgef: + case tkreisbogen: + case tell: + case tellgef: + case tellbogen: + case tkreissektorgef: + case tellsektorgef: + case tdreieckgef: + case trechteckgef: + case tviereckgef: + gschnittp(elselg, elsel, wp, wa, we, true); + break; + case tbezier: + case tbeziergef: + break; + }/*of switch */ +} + +Static Void conntrim(art, elselg, elsel1, elsel2) +long art, elselg, elsel1, elsel2; +{ /* Trimmen fuer connect, erst mit elsel1, dann mit elsel2. Der */ + /* Schnittpunkt ist nur relevant, falls er bei Strecken in beiden */ + /* Strecken liegt. Deshalb true beim Aufruf. */ + + double wa, we, wp; + + switch (art) { + + case 1: + wp = 0.0; + conngschnittp(elselg, elsel1, &wp, &wa, &we, true); + break; + case 2: + wp = 1.0; + conngschnittp(elselg, elsel2, &wp, &wa, &we, true); + break; + case 3: + wp = 0.0; + conngschnittp(elselg, elsel1, &wp, &wa, &we, true); + gauftrennen(elselg, wa, we); + if (typ[elselg] == 0) return; + wp = 1.0; + conngschnittp(elselg, elsel2, &wp, &wa, &we, true); + break; + } + gauftrennen(elselg, wa, we); +} + +Static long connect(xs,ys,xa,ya,taste,msel,phase) +double xs,ys,xa,ya; +long taste,phase,*msel; +{/* Verbindung zweier Elemente */ + + static long elsel1,elsel2, relsel; + long i1,i2; + double xc1,yc1,xc2,yc2; + + switch (phase){ + case 0: goto L0; + case 1: goto L1; + case 2: goto L2; + } + L0: + return 1; + L1: + sucheelement((long)alleelem, &elsel1, xa, ya); + if (elsel1 == 0) return 1; + freieselement(&relsel); + connectpunkt(elsel1, xa, ya, &xc1, &yc1); + x1[relsel] = xc1; + y1_[relsel] = yc1; + strcpy(pr4, pr3menue[*msel]); + return 2; + L2: + if (selmenue[mconnpoint] == false) {/*zweites Objekt gegeben*/ + sucheelement((long)alleelem, &elsel2, xa, ya); + if ((elsel2 == 0)|| (elsel2 == elsel1)) return 2; + connectpunkt(elsel2, xa, ya, &xc2, &yc2); + } + else {/*Punkt anstelle eines zweiten Objekts */ + xc2 = xs; + yc2 = ys; + elsel2 = 0L; + } + xc1 = x1[relsel]; + yc1 = y1_[relsel]; + if (selmenue[mconnxy] == true) { + i1 = interncreateline(0L, xc1,yc1,xc2,yc1); + i2 = interncreateline(0L, xc2,yc1,xc2,yc2); + goto L3; + } + if (selmenue[mconnyx] == true) { + i1 = interncreateline(0L, xc1,yc1,xc1,yc2); + i2 = interncreateline(0L, xc1,yc2,xc2,yc2); + goto L3; + } + /* direkte Verbindung */ + i1 = interncreateline(0L, xc1,yc1,xc2,yc2); + if (i1 == 0) + return 0; + conntrim(3,i1, elsel1, elsel2); + return 0; + L3: + if ((i1 == 0) && (i2 == 0)) + return 0; + if (i1 == 0) { + conntrim(3,i2, elsel1, elsel2); + return 0; + } + if (i2 == 0) { + conntrim(3,i1, elsel1, elsel2); + return 0; + } + lineende[i1] = 0L; + lineende[i2] = 0L; + if (selmenue[mcapprojecting] == true) { + lineende[i1] = 4L; + lineende[i2] = 4L; + } + if (selmenue[mpfeilanf] == true) + lineende[i1] = 1L; + if (selmenue[mpfeilende] == true) + lineende[i2] = 2L; + conntrim(1,i1, elsel1, elsel2); + conntrim(2,i2, elsel1, elsel2); + return 0; +} + +Static long readstdin(msel,phase) +long phase,*msel; +{ long i,j,k,anz; + double xxmin,xxmax,yymin,yymax; + + switch (readphase) { + case 0: + /* erster Aufruf */ + readphase = 1; + case 1: + /* evtl. kommt jetzt Vorspann */ + if (geteingabezeile(stdin)==0) + return readphase; + /* Vorspann lesen, falls da */ + if (NULL != strstr(eingabezeile,"LaTeXdraw (Siegert, TUM, C")) { + /* es kommt epc-Vorspann */ + readphase = 2; + } + else { + /* es kommen nur Zeichnungselemente */ + readphase = 6; + } + return readphase; + case 2: + /* es beginnt neue Zeichnung, loesche alte Elemente !!*/ + for (i = 1; i <= zelmax; i++) + typ[i] = 0; + kompakt(); + /* EPC-Vorspann lesen, erste Zeile schon da */ + einvorspannepc(stdin); + readphase = 3; + return readphase; + case 3: + /* einzelne Zeichnungslemente lesen */ + anz = geteingabezeile(stdin); + if (anz == 0) + fehler(3L); + anz=einlesenelement(stdin,&i); + if (typ[i] == 0) { + /* das ist das Ende eines Bildes, es kommt noch Gruppeninformation */ + readphase = 4; + } + else + skalieren(i,readdxx,readdyy,readf); + return readphase; + case 4: + /* Gruppeninformation kommt */ + if (version >= 13.0) /* Gruppen sind da!*/ + eindateigruppen(stdin); + if (version < 11.0) { + minmax(&xxmin,&xxmax,&yymin,&yymax); + breite=(xxmax-xxmin)*texfaktor; + hoehe=(yymax-yymin)*texfaktor; + } + ausfastalles(); + readphase = 1; + if (aktreadzeit != 0) + ltd_usleep(aktreadzeit,0L); /* readzeit Sekunden warten */ + return readphase; + case 5: + /* Zeichnungselement, wenn nur Zeichnungslemente */ + anz = geteingabezeile(stdin); + if (anz == 0) + fehler(3L); + case 6: + readphase = 5; + anz=einlesenelement(stdin,&i); + if (typ[i] == 0) { + /* das ist das Ende eines Bildes, es kommt */ + /* ggf. neues Bild oder weitere Elemente */ + readphase = 1; + kompakt(); + ausfastalles(); + if (aktreadzeit != 0) + ltd_usleep(aktreadzeit,0L); /* readzeit Sekunden warten */ + return readphase; + } + /*Zeichnungselement gelesen */ + skalieren(i,readdxx,readdyy,readf); + + if (typ[i] < 0) { + /* entsprechendes Element loeschen, falls da */ + typ[i] = -typ[i]; + if ( (j=duplikat0(i,true))!=0 ) + loescheelement(j); + loescheelement(i); + } + else { + if ( (j = duplikat0(i,false))!=0 ) { + lineende[j] = lineende[i]; + linedicke[j] = linedicke[i]; + linetype[j] = linetype[i]; + loescheelement(i); + } + } + kompakt(); + return readphase; + }/* end of switch */ +} + +/* diese Prozedur wird als Thread ausgefuehrt !!!!! */ +/* kein Zugriff auf Display in dieser Prozedur */ +Static void* threadreadstdin(vpar) + void *vpar; +{ /* threadaktiv und threadausel sind globale Variable*/ + + /* threadausel == 1 signalisiert der Umgebung, dass */ + /* eingelesene Zeichnungselemente ausgegeben werden sollen */ + /* Abfrage in Schleife bevor auf Event geprueft wird */ + + long i,j,k,anz; + double xxmin,xxmax,yymin,yymax; + + while (1) { + if (aktreadzeit != 0) + ltd_usleep(aktreadzeit,0L); /* grundsaetzlich readzeit Sekunden warten */ + while (threadaktiv==0){ + ltd_usleep(5L,0L); + } + /* jetzt versuchen zu lesen */ + /* evtl. kommt jetzt Vorspann */ + while (geteingabezeile(stdin)==0) {}; + /* Vorspann lesen, falls da */ + if (NULL == strstr(eingabezeile,"LaTeXdraw (Siegert, TUM, C")) { + /* es kommen nur Zeichnungselemente */ + goto einzelelemente; + } + /* es kommt epc-Vorspann */ + /* es beginnt neue Zeichnung, loesche alte Elemente !!*/ + for (i = 1; i <= zelmax; i++) + typ[i] = 0; + kompakt(); + /* EPC-Vorspann lesen, erste Zeile schon da */ + einvorspannepc(stdin); + while (1) { + /* einzelne Zeichnungslemente lesen */ + anz = geteingabezeile(stdin); + if (anz == 0) + fehler(3L); + anz=einlesenelement(stdin,&i); + if (typ[i] == 0) { + /* das ist das Ende eines Bildes, es kommt noch Gruppeninformation */ + goto gruppeninformation; + } + skalieren(i,readdxx,readdyy,readf); + } + gruppeninformation: + /* Gruppeninformation kommt */ + if (version >= 13.0) /* Gruppen sind da!*/ + eindateigruppen(stdin); + if (version < 11.0) { + minmax(&xxmin,&xxmax,&yymin,&yymax); + breite=(xxmax-xxmin)*texfaktor; + hoehe=(yymax-yymin)*texfaktor; + } + threadausel=1; + continue; + einzelelemente: + anz=einlesenelement(stdin,&i); + if (typ[i] == 0) { + /* das ist das Ende eines Bildes, es kommt */ + /* ggf. neues Bild oder weitere Elemente */ + } + else { + /*Zeichnungselement gelesen */ + skalieren(i,readdxx,readdyy,readf); + if (typ[i] < 0) { + /* entsprechendes Element loeschen, falls da */ + typ[i] = -typ[i]; + if ( (j=duplikat0(i,true))!=0 ) + loescheelement(j); + loescheelement(i); + } + else { + if ( (j = duplikat0(i,false))!=0 ) { + lineende[j] = lineende[i]; + linedicke[j] = linedicke[i]; + linetype[j] = linetype[i]; + loescheelement(i); + } + } + } + threadausel=1; + }/* while (1) wird von thread nicht verlassen */ +} + + +Static long aktion(msel,xs,ys,xa,ya,xe,ye,taste,phase) +double xs,ys,xa,ya,xe,ye; +long taste,phase,*msel; +{ + long i, elsel; + LA: + XDefineCursor(display,win,busycursor); + LM: + if (taste==0) goto LZ; /*es erfolgte eine Tastatureingabe*/ + if ((xa < xgr) && (koordinateneingegeben==false)) { + /*x in Menuebereich */ + if (xa<=xgrf) { + i=somenbesti(xa,ya); + if (i < 0) return phase; + if (i<ztextfonts) { + changefont=true; somenfontwahl(i); return phase; + } + i = i-ztextfonts; + if (i<aktzahlfarben) { + changecolor=true; somencolorwahl(i); return phase; + } + return phase; + } + menueloc(xa, ya, &i); + if (i == 0) return phase; + /* Sonderbehandlungen */ + if (selmenue[mreadzeit]==true) + readzeitwahl(taste); + if (selmenue[mfont]==true) + fontwahl(taste); + if (selmenue[mdick]==true) + dickenwahl(taste); + if (selmenue[mcolor]==true) + colorwahl(taste); + if (selmenue[mwinkelrot] == true) + winkelwahl(taste); + if (selmenue[mlschieben]==true) + verschieben((long)mlschieben); + if (selmenue[mrschieben]==true) + verschieben((long)mrschieben); + if (selmenue[moschieben]==true) + verschieben((long)moschieben); + if (selmenue[muschieben]==true) + verschieben((long)muschieben); + if (selmenue[mgross]==true) + verschieben((long)mgross); + if (selmenue[mklein]==true) + verschieben((long)mklein); + if (selmenue[mcenter]==true) + verschieben((long)mcenter); + if (i==mxytastatur) { + if (selmenue[mxytastatur]==false) { + erwartet=click_erwartet; + strcpy(pr5,nullstr); + strcpy(pr6,nullstr); + } + if (selmenue[mxytastatur]==true) { + if ((erwartet==tastatur_erwartet)||(*msel==0)) { + selmenue[mxytastatur]=false; + ausmenueelement(mxytastatur); + } + if ((erwartet==click_erwartet)&&(*msel!=0)) { + phasexyein=0; + phasexyein=xyein(&xsnap, &ysnap,taste,phasexyein); + } + } + } + if ((i==mdegrees) && (winerwartet != 0)) { + if (selmenue[mdegrees]==true) { + if (selmenue[mxytastatur]==true) { + selmenue[mxytastatur]=false; + ausmenueelement(mxytastatur); + } + inittastaturtext(nullstr,pr2menue[mdegrees],1L); + } + if (selmenue[mdegrees]==false) { + erwartet=click_erwartet; + strcpy(pr5,nullstr); + strcpy(pr6,nullstr); + } + } + if (selmenue[mgroupok]==true) + phase=groupok(msel, phase); + if ( (i == mkopbewmaus) && + ((*msel == mkopieren)||(*msel == mbewegen)) ) + i =*msel; + if (radiogroup[i] != 1) return phase; + /*zurueck, falls kein neue Aktion erforderlich*/ + /* Auswahl eines neuen Zeichenvorgangs */ + /* falls Editieren Text abgebrochen wurde, Text wieder ausgeben */ + if ((*msel == mtext)&&(texterase != 0L)) { + elsel = texterase; + texterase = 0L; + ausel(elsel, paint); + } + kompakt(); /*vorlauefig belegte Elemente freigeben*/ + if (*msel == mloeschen) + unbenutztegruppenfreigeben(); + + *msel = i; + if (zeichnen==true) + { /*nach delete oder move wieder auszugeben*/ + auselemente(); + } + threadaktiv = 0; +#ifdef THREAD + if (*msel == mread) { + threadaktiv = 1; + if (threadrunning == 0) { + threadrunning = 1; + pthread_create(&threadID,pthread_attr_default, (void*)threadreadstdin, NULL); + } + } +#endif + phase=0; + erwartet = click_erwartet; + winerwartet = 0; + if (selmenue[mxytastatur]==true) { + selmenue[mxytastatur]=false; + ausmenueelement(mxytastatur); + } + /* Ende Aktion im Menuebereich */ + } + LZ: if (phase == 0) { + blinkenaus(); + strcpy(pr1, "select/ "); + strcpy(pr2, menue[*msel]); + strcpy(pr3, nullstr); + strcpy(pr4, pr2menue[*msel]); + strcpy(pr5, nullstr); + strcpy(pr6, nullstr); + } + koordinateneingegeben=false; + /* Aktion im Zeichenbereich */ + if (*msel==0) return 0; + else if (*msel==mladen) + phase=eindatei(msel,dateiname,taste,phase); + else if (*msel==mende) { + phase=ausdatei(msel,dateiname,taste,phase); + if (phase==0) schluss(0); /* exit */ + } + else if (*msel==msave) /*zwischenspeichern*/ + phase = savedateien(msel,dateiname,taste,phase); + else if (*msel == mtext) + phase=eintext(xs,ys,xa,ya,taste,msel,phase); + else if (*msel == mgerade) + phase=einline(xs,ys,xa,ya,taste,msel,phase); + else if (*msel == mkreis) + phase=eincircle(xs,ys,taste,msel,phase); + else if (*msel == mell) + phase=einellipse(xs,ys,xa,ya,taste,msel,phase); + else if (*msel == mrechteck) + phase=einbox(xs,ys,taste,msel,phase); + else if (*msel == mdreieck) + phase=eindreieck(xs,ys,taste,msel,phase); + else if (*msel == mviereck) + phase=einviereck(xs,ys,taste,msel,phase); + else if (*msel == mbezier) + phase=einbezier(xs,ys,taste,msel,phase); + else if (*msel == mpolygon) + phase=einpolygon(xs,ys,taste,msel,phase); + else if (*msel == mspiegeln) + phase=spiegeln(xs,ys,xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mkopieren) + phase=kopieren(xs,ys,xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mbewegen) + phase=bewegen(xs,ys,xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mergaenzen) + phase=einboxll(xa,ya,msel,phase); + else if (*msel == mausdehnen) + phase=extend(xa, ya, msel,phase); + else if (*msel == mbrechen) + phase=trim(xa,ya,msel,phase); + else if (*msel == mloeschen) + phase=loeschen(xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mup) + phase=up(xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mdown) + phase=down(xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mchangelineattr) + phase=changelineattr(xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mgitter) + phase=eingitter(xs,ys,msel,phase); + else if (*msel == mcut) + phase=vorber_export(xs,ys,xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mpaste) + phase=vorber_import(xs,ys,taste,msel,phase); + else if (*msel == mfill) + phase=fuellen(xa,ya,msel,phase); + else if (*msel == mshowgroup) + phase=showgroup(xa,ya,taste,msel,phase); + else if (*msel== mnewgroup) + phase=newgroup(xa,ya,xe,ye,taste,msel,phase); + else if (*msel== mungroup) + phase=ungroup(xa,ya,taste,msel,phase); + else if (*msel == mconnect) + phase = connect(xs,ys,xa,ya,taste,msel,phase); + else if (*msel == mrot) + phase=rotieren(xs,ys,xa,ya,xe,ye,taste,msel,phase); + else if (*msel == mqueryattr) + phase=queryattr(xa,ya,taste,msel,phase); +#ifndef THREAD + /* nur bei keinem Thread */ + else if (*msel == mread) + phase=readstdin(msel,phase); +#endif + else return phase; + /* Ende im Zeichenbereich */ + LE: + if (phase==0) goto LZ; + return phase; + +} /* Ende Aktion */ + +Static Void init_neuezeichnung() +{ long i; + + texfaktor = texfaktorv; + breite=xzmax0*texfaktor; + hoehe=yzmax0*texfaktor; + mitvorspann=false; + querformat=true; + texdashl = 2.0; + texdotg = 1.8; + texinterd = 0.8; + version = 15.0; + initelemente(); + initgrid(); + fontnummer = stdfontnummer; + strcpy(menue[mfont],textfontlabel[fontnummer]); + aktldicke = 1; + strichsymbol(); + readdxx = 0.0; + readdyy = 0.0; + readf = 1.0; + aktreadzeit = 2; + readzeitsymbol(); + aktcolor = schwarz; + colorsymbol(); + for (i = 1; i <= 4; i++) + bmarker[i] = false; + for (i=0;i<=maxgruppen;i++) { + vater[i] = -1; + umbenennung[i] = 0; + gruppentag[i] = false; + } + vater[0] = 0; + grumax = 0; +} + +main(argc, argv) +int argc; +Char *argv[]; +{ + long i, k, taste, iv, msel, elsel; + + xzmax0 = xzmax00; /* Voreinstellung Gr"o\ss{}e Zeichenfenster */ + yzmax0 = yzmax00; + quer0format=false; + tablett = false; + nur_texausgabe=false; /*Normalmodus interaktiv von latexdraw */ + strcpy(docstyle, docstylestd); /* erste LaTeX-Zeile Standard */ + strcpy(menuefont,xfont); /* Standard-Menuefont */ + for (iv=1;iv<argc;iv++) { +#ifdef TABLETT + if (strvergl(argv[iv],"-t")==true) tablett = true; +#endif + if (strvergl(argv[iv],"-q")==true) + quer0format= true; + if (strvergl(argv[iv],"-l")==true) + quer0format= true; + if (strvergl(argv[iv],"-2e")==true) + strcpy(docstyle, docstyle2e); /* erste LaTeX-Zeile f"ur LaTeX2e */ + if ((strvergl(argv[iv],"-d")==true)&&((iv+1) < argc)) + strcpy(docstyle,argv[iv+1]); /* erste LaTeX-Zeile vom Benutzer */ + if ((strvergl(argv[iv],"-f")==true)&&((iv+1) < argc)) + strcpy(menuefont,argv[iv+1]); /* Menuefont des Benutzers */ + if ((strvergl(argv[iv],"-s")==true)&&((iv+1) < argc)) { + /* Gr"o\ss{}e Zeichenfenster vom Benutzer, Form z.B. 480x375 */ + i = sscanf(argv[iv+1],"%lgx%lg",&xzmax,&yzmax); + if ((i==2)&&(xzmax>0)&&(xzmax<2000)&&(yzmax>0)&&(yzmax<2000)) { + xzmax0 = xzmax; + yzmax0 = yzmax; + } + } + if ((strvergl(argv[iv],"-io")==true)&&((iv+2) < argc)) { + nur_texausgabe=true; /* nur LaTex-Ausgabedatei erzeugen!! */ + strcpy(dateiname,argv[iv+1]); /* Name LaTexDraw-Eingabedatei */ + strcpy(texdateiname,argv[iv+2]); /* Name LaTex-Ausgabedatei */ + } + } + + init_tmenue(); + if (( display = XOpenDisplay(display_name))== NULL) fehler(6); + screen = DefaultScreen(display); + nocolors = false; /* Farben verfuegbar */ + if (DisplayPlanes(display,screen)<=2) + /*monochrom oder wenige Graustufen*/ nocolors = true; + initfarbnamen(); + init_window_font(display); + win = XCreateSimpleWindow( + display,RootWindow(display,screen),0,0,ixzmax,iyzmax,4, + BlackPixel(display,screen), WhitePixel(display,screen)); + initfarben(screen, display, win); + reihenfolgefarben(); + initGC(screen, display, win); + setze_clip_bereiche(display); + size_hints.flags = PPosition | PSize ; + size_hints.x = 0; + size_hints.y = 0; + size_hints.width = ixzmax; + size_hints.height = iyzmax; + XSetStandardProperties(display,win,window_name,icon_name,None, + argv,argc,&size_hints); + XSelectInput(display,win,ExposureMask | KeyPressMask | KeyReleaseMask | + ButtonPressMask | ButtonReleaseMask | + StructureNotifyMask | Button1MotionMask); + clickcursor=XCreateFontCursor(display,XC_left_ptr); + busycursor=XCreateFontCursor(display,XC_heart); + textcursor=XCreateFontCursor(display,XC_dotbox); + if (nur_texausgabe == false) + XMapWindow(display,win); + XSetInputFocus(display,PointerRoot,RevertToPointerRoot,CurrentTime); + XSetErrorHandler(myerrorhandler); + geoeffnet=0; + init_kmenue(); + initmisc(); + initcutpaste(); +#ifdef TABLETT + /* Falls ein Digitizer angeschlossen ist, initialisieren */ + if (tablett) { + if (init_digitizer(display) == -1) + fehler(18); + } +#endif + msel = 0; + datdeskr = NULL; + erwartet=click_erwartet; + winerwartet = 0; + phase=0; + if (nur_texausgabe == false) + strcpy(dateiname,nullstr); + curs_x = -100.0; + curs_y = -100.0; + LNEU: + init_neuezeichnung(); + xlast=0.0; + ylast=0.0; + for (i = 1; i <= zmenue; i++) + selmenue[i] = false; + selmenue[msel] = true; + selmenue[meinrasten] = true; + selmenue[mltext] = true; + selmenue[mbtext] = true; + selmenue[mgroupmode] = true; + strcpy(pr1, "select/ "); + strcpy(pr2, menue[msel]); + strcpy(pr3, nullstr); + strcpy(pr4, nullstr); + strcpy(pr5, nullstr); + strcpy(pr6, nullstr); + taste=0; + button1gedrueckt =0; + button2gedrueckt =0; + button3gedrueckt =0; + controlan = 0; + blinkend = false; + koordinateneingegeben=false; + dragbox=0; + setwinkelrot(90); + + if (nur_texausgabe == true) { + /* nur Erzeugung der LaTeX-Ausgabedatei */ + /* Option -io bei Aufruf von latexdraw */ + taste = 0; + msel = mladen; + phase = 2; + eindatei(&msel,dateiname,taste,phase); + msel = msave; + phase = 7; + austexdatei(&msel,dateiname,taste,phase); + schluss(0); + } + +/* Event-Schleife */ +while (1) { + if (geoeffnet==1) { + if (phase==0) { + strcpy(pr1,"select/"); + strcpy(pr2,nullstr); + strcpy(pr3,nullstr); + strcpy(pr4,nullstr); + strcpy(pr5,nullstr); + strcpy(pr6,nullstr); + if (msel != 0) { + strcpy(pr1, "select/ "); + strcpy(pr2, menue[msel]); + strcpy(pr4, pr2menue[msel]); + } + } + prompt(); + if (erwartet==click_erwartet) + XDefineCursor(display,win,clickcursor); + else { + XDefineCursor(display,win,textcursor); + cursan(curs_x,curs_y); + } + } + if ((blinkend==true)&&(geoeffnet==1)) { + while ( (int)XEventsQueued(display, QueuedAfterFlush) == 0) { +#ifdef TABLETT + if (tablett) + process_digitizer(display, win); +#endif + ausblinkelemente(); + } + /* folgende zwei Befehle, damit nach Klick die Elemente */ + /* ggf. sofort wieder geloescht dargestellt werden */ + blinkfarbe = erase; + blinkintervallzaehler = 0; + } + + /* Eingabe ueber digitizer oder STDIN, solange kein X-Event */ + while ( (int)XEventsQueued(display, QueuedAfterFlush) == 0) { + +#ifdef TABLETT + if (tablett) { + process_digitizer(display, win); + } +#endif + +#ifdef THREAD + if (threadausel==1) { + threadausel=0; + kompakt(); + ausfastalles(); + /* nachfolgendes sleep kleiner als sleep in thread (derzeit Sekunden) */ + /* sonst geht Abfrage von threadausel nicht */ + } +#endif + +#ifndef THREAD + if (msel == mread) { + phase = readstdin(&msel,phase); + } +#endif + + + ltd_usleep(0L,30000); /* 30 ms Wartezeit */ + } + + + + XNextEvent(display, &report); + if (dragbox==1) xorrechteck(xanf,yanf,xend,yend); + dragbox=0; + switch (report.type) + { + case Expose: + geoeffnet = 1; + /* weitere vorhandene Expose-Events ignorieren */ + while (XCheckTypedEvent(display,Expose,&report)) ; + ausalles(); + break; + case ConfigureNotify: +#ifdef TABLETT + if (tablett) + save_win_pos(report.xconfigure.x, report.xconfigure.y, + report.xconfigure.width,report.xconfigure.height); +#endif + size_change(display, + report.xconfigure.width,report.xconfigure.height); + break; + case ButtonPress: + if (report.xbutton.button==button1) button1gedrueckt=1; + if (report.xbutton.button==button2) button2gedrueckt=1; + if (report.xbutton.button==button3) button3gedrueckt=1; + + taste=0; + if (button1gedrueckt==1) taste = 1; + if (button2gedrueckt==1) taste = 10*taste+2; + if (button3gedrueckt==1) taste = 10*taste+3; + + getweltkoord(&xanf,&yanf); + xend=xanf; + yend=yanf; + break; + + case MotionNotify: + while (XCheckMaskEvent(display,Button1MotionMask,&report)); + if (erwartet != click_erwartet) break; + if (button1gedrueckt==0) break; + if (!XQueryPointer(display, win, &rootwin, &childwin, + &irootx, &irooty,&iwinx, &iwiny, + &keysbuttons)) break; + getmotionweltkoord(iwinx, iwiny, &xsnap, &ysnap); + if ((dragbox == 1)&&(si_iabs(xsnap-xend) < 2)&& + (si_iabs(ysnap-yend) < 2)) + break; + xend = xsnap; + yend = ysnap; + xorrechteck(xanf,yanf,xend,yend); + dragbox=1; + break; + + case ButtonRelease: + if (report.xbutton.button==button1) button1gedrueckt=0; + if (report.xbutton.button==button2) button2gedrueckt=0; + if (report.xbutton.button==button3) button3gedrueckt=0; + lasteventtime=report.xbutton.time; + getweltkoord(&xend,¥d); + if (xanf<xgr) {/* in Menue */ + phase = aktion(&msel,xanf,yanf,xanf,yanf,xanf,yanf,taste,phase); + break; + } + if (erwartet != click_erwartet) break; + if (report.xbutton.button!=button1) break; + xsnap=xanf; + ysnap=yanf; + if (selmenue[meinrasten]==true) elsnap(&xsnap, &ysnap); + if (selmenue[mmittelpunkt]==true){ + sucheelement((long)nurmpel, &elsel, xanf, yanf); + if (elsel!=0) + { + xsnap = x1[elsel]; + ysnap = y1_[elsel]; + if (typ[elsel] == tgerade || typ[elsel] == trechteckgef) + { + xsnap = (x1[elsel] + x2[elsel]) / 2; + ysnap = (y1_[elsel] + y2[elsel]) / 2; + } + if (typ[elsel] == tdreieckgef) + schwerpunkt(elsel,&xsnap,&ysnap); + } + } + if ((si_fabs(xanf-xend)>15.0)||(si_fabs(yanf-yend)>15.0)) { + if (si_fabs(xanf-xend) > si_fabs(yanf-yend)) { + /*horizontaler Strich, also horizontale Ausrichtung*/ + if (si_fabs(xanf-xend)>15.0) + ysnap=ylast; /*Ausrichtung Punkt */ + } + else { + /*vertikaler Strich, also vertikale Ausrichtung*/ + if (si_fabs(yanf-yend)>15.0) + xsnap=xlast; /*Ausrichtung Punkt */ + } + } + xlast=xsnap; + ylast=ysnap; + neueclickmarke(xsnap,ysnap); + if ((si_fabs(xanf-xend)<5.0)||(si_fabs(yanf-yend)<5.0)){ + xend=xanf; + yend=yanf; + } + phase = aktion(&msel,xsnap,ysnap,xanf,yanf,xend,yend,taste,phase); + break; + + case KeyPress: + taste=XLookupString(&report.xkey,symstr,maxstrl,&keysym,&compose); + if (keysym==NoSymbol) break; + taste= keysym; + control(taste, 1L); + if (erwartet != tastatur_erwartet) {/* Sondertasten */ + if ( (msel==mloeschen)&& + ((taste==tastebackspace)|| + (taste==tasteundo)||(taste == tastedelete)) ) { + /*loeschen ist aktiv, backspace bedeutet undo*/ + UnDelete(); + phase = 1; + } + sondertaste (taste); + break; + } + if (tastaturtext(taste)!=0) break; + taste = 0; + if (selmenue[mxytastatur]==true) { + phasexyein = xyein(&xsnap, &ysnap,taste,phasexyein); + xanf=xsnap; + yanf=ysnap; + xend=xsnap; + yend=ysnap; + neueclickmarke(xsnap,ysnap); + taste = 1; + koordinateneingegeben=true; + /* initialisierung in aktion ! */ + } + phase = + aktion(&msel,xsnap,ysnap,xanf,yanf,xend,yend,taste,phase); + break; + case KeyRelease: + taste=XLookupString(&report.xkey,symstr,maxstrl,&keysym,&compose); + if (keysym==NoSymbol) break; + taste= keysym; + control(taste, 0L); + break; + case SelectionClear: + if (selmenue[mcut] == true) + {selmenloeschen(&msel); exportieren();} + break; + case SelectionNotify: + importieren(report.xselection.property,report.xselection.time,&msel); + break; + case SelectionRequest: + request_export(report.xselectionrequest.requestor, + report.xselectionrequest.property, + report.xselectionrequest.target, + report.xselectionrequest.time); + break; + } /* of case */ + if (wartendexport==true) exportieren(); + } /*end of while Event*/ +} /* End. */ + + + + + + + + + + + + + + diff --git a/support/latexdraw/man/man1/latexdraw.1 b/support/latexdraw/man/man1/latexdraw.1 new file mode 100644 index 0000000000..ea4d746650 --- /dev/null +++ b/support/latexdraw/man/man1/latexdraw.1 @@ -0,0 +1,70 @@ +.TH latexdraw 1 +.SH Name +latexdraw - a X-Window based drawing program +.SH Syntax +.B latexdraw +[ +.I options +] +.SH Description + +.I latexdraw +is a X-Window based and CAD orientated drawing program which generates +LaTeX output using +the macropackage latexdraw.sty. The macropackage latexdraw.sty is +based on pstricks. The picture may be generated as complete LaTeX-source +or as a picture-environment to be included in other documents. You must +translate the dvi-file generated by LaTeX to a postscript-file using dvips +before you can view or print the document. + +.SH Options +.IP "-2e" 10 +a headerline with documentclass (for a latex2e-document) +instead of the standard headerline with documentstyle is used +.IP "-d hdl" 10 +uses +.I hdl +as headerline for the LaTeX-document +.IP "-f fnt" 10 +use font with name +.I fnt +for the menue +.IP "-io file1 file2" 10 +.I latexdraw +reads +.I file1 +which must be a LaTeXdraw-outputfile and generates the +LaTeX-outputfile +.I file2 +(In this mode there is no window nor any interaction with the user) +.IP \-l 10 +the +.I latexdraw +window has landscape format instead of portrait format +(no influence on the generated picture) +.IP \-q 10 +the +.I latexdraw +window has landscape format instead of portrait format +(no influence on the generated picture) +.IP "-s wxh" 10 +the +.I latexdraw +window is +.I w +pixels wide and +.I h +pixels high +.IP \-t 10 +.I latexdraw +uses a digitizer tablet (only possible when generated +with the digitizer-option) + +.SH Documentation +The documentation is avaible in postscript and HTML format, try + /usr/local/teTeX/texmf/tex/lib/inputs/latexdraw/doc + +.SH Author +Prof. Dr. H.-J. Siegert, TU-Muenchen, +.br +email: siegert@informatik.tu-muenchen.de diff --git a/support/latexdraw/test/abbtest/allecolors.tex b/support/latexdraw/test/abbtest/allecolors.tex new file mode 100644 index 0000000000..f599d4d775 --- /dev/null +++ b/support/latexdraw/test/abbtest/allecolors.tex @@ -0,0 +1,1185 @@ +\documentstyle[pstricks]{sarticle} + + +\begin{document} +\raggedbottom +\raggedright +\setlength{\parskip}{10mm} +\setlength{\parindent}{0mm} +\setlength{\textwidth}{16cm} +\newcommand{\sample}[4]{\newrgbcolor{farbeb}{#1 #2 #3} +\setlength{\unitlength}{0.3mm} +\mbox{\hbox to 5cm{\begin{picture}(100,50) +\put(60,25){#4}\farbeb +\put(0,0){\rule{50\unitlength}{50\unitlength}} +\end{picture}\hfill}}} + +Farben bei latexdraw: + +\sample{1.00}{0.00}{0.00}{red1} +\sample{1.00}{0.65}{0.00}{orange1} +\sample{1.00}{0.51}{0.28}{sienna1} +\sample{1.00}{0.84}{0.00}{gold1} +\sample{1.00}{1.00}{0.00}{yellow} +\sample{0.50}{1.00}{0.00}{chartreuse1} +\sample{0.00}{1.00}{0.00}{green} +\sample{0.00}{1.00}{0.50}{SpringGreen1} +\sample{0.00}{1.00}{1.00}{cyan} +\sample{0.00}{0.00}{1.00}{blue} +\sample{0.75}{0.24}{1.00}{DarkOrchid1} +\sample{1.00}{0.51}{0.98}{orchid1} +\sample{1.00}{0.00}{1.00}{magenta} +\sample{0.80}{0.00}{0.00}{red3} +\sample{0.80}{0.52}{0.00}{orange3} +\sample{0.93}{0.23}{0.23}{brown2} +\sample{0.93}{0.60}{0.00}{orange2} +\sample{0.80}{0.80}{0.00}{yellow3} +\sample{0.40}{0.80}{0.00}{chartreuse3} +\sample{0.00}{0.80}{0.00}{green3} +\sample{0.00}{0.80}{0.40}{SpringGreen3} +\sample{0.00}{0.80}{0.80}{cyan3} +\sample{0.00}{0.00}{0.80}{blue3} +\sample{0.60}{0.20}{0.80}{DarkOrchid3} +\sample{0.80}{0.41}{0.79}{orchid3} +\sample{0.80}{0.00}{0.80}{magenta3} +\sample{1.00}{0.89}{0.88}{MistyRose1} +\sample{1.00}{0.85}{0.73}{PeachPuff1} +\sample{1.00}{0.76}{0.76}{RosyBrown1} +\sample{1.00}{0.96}{0.56}{khaki1} +\sample{1.00}{1.00}{0.88}{LightYellow1} +\sample{1.00}{0.91}{0.73}{wheat1} +\sample{0.96}{1.00}{0.98}{MintCream} +\sample{0.60}{1.00}{0.60}{PaleGreen1} +\sample{0.88}{1.00}{1.00}{LightCyan1} +\sample{0.75}{0.94}{1.00}{LightBlue1} +\sample{1.00}{0.88}{1.00}{thistle1} +\sample{1.00}{0.73}{1.00}{plum1} +\sample{1.00}{0.94}{0.96}{LavenderBlush1} +\sample{0.73}{1.00}{1.00}{PaleTurquoise1} +\sample{0.76}{1.00}{0.76}{DarkSeaGreen1} +\sample{0.50}{1.00}{0.83}{aquamarine1} +\sample{0.00}{0.75}{1.00}{DeepSkyBlue1} +\sample{0.51}{0.44}{1.00}{SlateBlue1} +\sample{0.88}{0.40}{1.00}{MediumOrchid1} +\sample{1.00}{0.42}{0.42}{IndianRed1} +\sample{1.00}{0.08}{0.58}{DeepPink1} +\sample{1.00}{0.25}{0.25}{brown1} + + +\newpage +Farben SUN: + +\sample{1.00}{0.98}{0.98}{snow} +\sample{0.97}{0.97}{1.00}{ghost} +\sample{0.97}{0.97}{1.00}{GhostWhite} +\sample{0.96}{0.96}{0.96}{white} +\sample{0.96}{0.96}{0.96}{WhiteSmoke} +\sample{0.86}{0.86}{0.86}{gainsboro} +\sample{1.00}{0.98}{0.94}{floral} +\sample{1.00}{0.98}{0.94}{FloralWhite} +\sample{0.99}{0.96}{0.90}{old} +\sample{0.99}{0.96}{0.90}{OldLace} +\sample{0.98}{0.94}{0.90}{linen} +\sample{0.98}{0.92}{0.84}{antique} +\sample{0.98}{0.92}{0.84}{AntiqueWhite} +\sample{1.00}{0.94}{0.84}{papaya} +\sample{1.00}{0.94}{0.84}{PapayaWhip} +\sample{1.00}{0.92}{0.80}{blanched} +\sample{1.00}{0.92}{0.80}{BlanchedAlmond} +\sample{1.00}{0.89}{0.77}{bisque} +\sample{1.00}{0.85}{0.73}{peach} +\sample{1.00}{0.85}{0.73}{PeachPuff} +\sample{1.00}{0.87}{0.68}{navajo} +\sample{1.00}{0.87}{0.68}{NavajoWhite} +\sample{1.00}{0.89}{0.71}{moccasin} +\sample{1.00}{0.97}{0.86}{cornsilk} +\sample{1.00}{1.00}{0.94}{ivory} +\sample{1.00}{0.98}{0.80}{lemon} +\sample{1.00}{0.98}{0.80}{LemonChiffon} +\sample{1.00}{0.96}{0.93}{seashell} +\sample{0.94}{1.00}{0.94}{honeydew} +\sample{0.96}{1.00}{0.98}{mint} +\sample{0.96}{1.00}{0.98}{MintCream} +\sample{0.94}{1.00}{1.00}{azure} +\sample{0.94}{0.97}{1.00}{alice} +\sample{0.94}{0.97}{1.00}{AliceBlue} +\sample{0.90}{0.90}{0.98}{lavender} +\sample{1.00}{0.94}{0.96}{lavender} +\sample{1.00}{0.94}{0.96}{LavenderBlush} +\sample{1.00}{0.89}{0.88}{misty} +\sample{1.00}{0.89}{0.88}{MistyRose} +\sample{1.00}{1.00}{1.00}{white} +\sample{0.00}{0.00}{0.00}{black} +\sample{0.18}{0.31}{0.31}{dark} +\sample{0.18}{0.31}{0.31}{DarkSlateGray} +\sample{0.18}{0.31}{0.31}{dark} +\sample{0.18}{0.31}{0.31}{DarkSlateGrey} +\sample{0.41}{0.41}{0.41}{dim} +\sample{0.41}{0.41}{0.41}{DimGray} +\sample{0.41}{0.41}{0.41}{dim} +\sample{0.41}{0.41}{0.41}{DimGrey} +\sample{0.44}{0.50}{0.56}{slate} +\sample{0.44}{0.50}{0.56}{SlateGray} +\sample{0.44}{0.50}{0.56}{slate} +\sample{0.44}{0.50}{0.56}{SlateGrey} +\sample{0.47}{0.53}{0.60}{light} +\sample{0.47}{0.53}{0.60}{LightSlateGray} +\sample{0.47}{0.53}{0.60}{light} +\sample{0.47}{0.53}{0.60}{LightSlateGrey} +\sample{0.75}{0.75}{0.75}{gray} +\sample{0.75}{0.75}{0.75}{grey} +\sample{0.83}{0.83}{0.83}{light} +\sample{0.83}{0.83}{0.83}{LightGrey} +\sample{0.83}{0.83}{0.83}{light} +\sample{0.83}{0.83}{0.83}{LightGray} +\sample{0.10}{0.10}{0.44}{midnight} +\sample{0.10}{0.10}{0.44}{MidnightBlue} +\sample{0.00}{0.00}{0.50}{navy} +\sample{0.00}{0.00}{0.50}{navy} +\sample{0.00}{0.00}{0.50}{NavyBlue} +\sample{0.39}{0.58}{0.93}{cornflower} +\sample{0.39}{0.58}{0.93}{CornflowerBlue} +\sample{0.28}{0.24}{0.55}{dark} +\sample{0.28}{0.24}{0.55}{DarkSlateBlue} +\sample{0.42}{0.35}{0.80}{slate} +\sample{0.42}{0.35}{0.80}{SlateBlue} +\sample{0.48}{0.41}{0.93}{medium} +\sample{0.48}{0.41}{0.93}{MediumSlateBlue} +\sample{0.52}{0.44}{1.00}{light} +\sample{0.52}{0.44}{1.00}{LightSlateBlue} +\sample{0.00}{0.00}{0.80}{medium} +\sample{0.00}{0.00}{0.80}{MediumBlue} +\sample{0.25}{0.41}{0.88}{royal} +\sample{0.25}{0.41}{0.88}{RoyalBlue} +\sample{0.00}{0.00}{1.00}{blue} +\sample{0.12}{0.56}{1.00}{dodger} +\sample{0.12}{0.56}{1.00}{DodgerBlue} +\sample{0.00}{0.75}{1.00}{deep} +\sample{0.00}{0.75}{1.00}{DeepSkyBlue} +\sample{0.53}{0.81}{0.92}{sky} +\sample{0.53}{0.81}{0.92}{SkyBlue} +\sample{0.53}{0.81}{0.98}{light} +\sample{0.53}{0.81}{0.98}{LightSkyBlue} +\sample{0.27}{0.51}{0.71}{steel} +\sample{0.27}{0.51}{0.71}{SteelBlue} +\sample{0.69}{0.77}{0.87}{light} +\sample{0.69}{0.77}{0.87}{LightSteelBlue} +\sample{0.68}{0.85}{0.90}{light} +\sample{0.68}{0.85}{0.90}{LightBlue} +\sample{0.69}{0.88}{0.90}{powder} +\sample{0.69}{0.88}{0.90}{PowderBlue} +\sample{0.69}{0.93}{0.93}{pale} +\sample{0.69}{0.93}{0.93}{PaleTurquoise} +\sample{0.00}{0.81}{0.82}{dark} +\sample{0.00}{0.81}{0.82}{DarkTurquoise} +\sample{0.28}{0.82}{0.80}{medium} +\sample{0.28}{0.82}{0.80}{MediumTurquoise} +\sample{0.25}{0.88}{0.82}{turquoise} +\sample{0.00}{1.00}{1.00}{cyan} +\sample{0.88}{1.00}{1.00}{light} +\sample{0.88}{1.00}{1.00}{LightCyan} +\sample{0.37}{0.62}{0.63}{cadet} +\sample{0.37}{0.62}{0.63}{CadetBlue} +\sample{0.40}{0.80}{0.67}{medium} +\sample{0.40}{0.80}{0.67}{MediumAquamarine} +\sample{0.50}{1.00}{0.83}{aquamarine} +\sample{0.00}{0.39}{0.00}{dark} +\sample{0.00}{0.39}{0.00}{DarkGreen} +\sample{0.33}{0.42}{0.18}{dark} +\sample{0.33}{0.42}{0.18}{DarkOliveGreen} +\sample{0.56}{0.74}{0.56}{dark} +\sample{0.56}{0.74}{0.56}{DarkSeaGreen} +\sample{0.18}{0.55}{0.34}{sea} +\sample{0.18}{0.55}{0.34}{SeaGreen} +\sample{0.24}{0.70}{0.44}{medium} +\sample{0.24}{0.70}{0.44}{MediumSeaGreen} +\sample{0.13}{0.70}{0.67}{light} +\sample{0.13}{0.70}{0.67}{LightSeaGreen} +\sample{0.60}{0.98}{0.60}{pale} +\sample{0.60}{0.98}{0.60}{PaleGreen} +\sample{0.00}{1.00}{0.50}{spring} +\sample{0.00}{1.00}{0.50}{SpringGreen} +\sample{0.49}{0.99}{0.00}{lawn} +\sample{0.49}{0.99}{0.00}{LawnGreen} +\sample{0.00}{1.00}{0.00}{green} +\sample{0.50}{1.00}{0.00}{chartreuse} +\sample{0.00}{0.98}{0.60}{medium} +\sample{0.00}{0.98}{0.60}{MediumSpringGreen} +\sample{0.68}{1.00}{0.18}{green} +\sample{0.68}{1.00}{0.18}{GreenYellow} +\sample{0.20}{0.80}{0.20}{lime} +\sample{0.20}{0.80}{0.20}{LimeGreen} +\sample{0.60}{0.80}{0.20}{yellow} +\sample{0.60}{0.80}{0.20}{YellowGreen} +\sample{0.13}{0.55}{0.13}{forest} +\sample{0.13}{0.55}{0.13}{ForestGreen} +\sample{0.42}{0.56}{0.14}{olive} +\sample{0.42}{0.56}{0.14}{OliveDrab} +\sample{0.74}{0.72}{0.42}{dark} +\sample{0.74}{0.72}{0.42}{DarkKhaki} +\sample{0.94}{0.90}{0.55}{khaki} +\sample{0.93}{0.91}{0.67}{pale} +\sample{0.93}{0.91}{0.67}{PaleGoldenrod} +\sample{0.98}{0.98}{0.82}{light} +\sample{0.98}{0.98}{0.82}{LightGoldenrodYellow} +\sample{1.00}{1.00}{0.88}{light} +\sample{1.00}{1.00}{0.88}{LightYellow} +\sample{1.00}{1.00}{0.00}{yellow} +\sample{1.00}{0.84}{0.00}{gold} +\sample{0.93}{0.87}{0.51}{light} +\sample{0.93}{0.87}{0.51}{LightGoldenrod} +\sample{0.85}{0.65}{0.13}{goldenrod} +\sample{0.72}{0.53}{0.04}{dark} +\sample{0.72}{0.53}{0.04}{DarkGoldenrod} +\sample{0.74}{0.56}{0.56}{rosy} +\sample{0.74}{0.56}{0.56}{RosyBrown} +\sample{0.80}{0.36}{0.36}{indian} +\sample{0.80}{0.36}{0.36}{IndianRed} +\sample{0.55}{0.27}{0.07}{saddle} +\sample{0.55}{0.27}{0.07}{SaddleBrown} +\sample{0.63}{0.32}{0.18}{sienna} +\sample{0.80}{0.52}{0.25}{peru} +\sample{0.87}{0.72}{0.53}{burlywood} +\sample{0.96}{0.96}{0.86}{beige} +\sample{0.96}{0.87}{0.70}{wheat} +\sample{0.96}{0.64}{0.38}{sandy} +\sample{0.96}{0.64}{0.38}{SandyBrown} +\sample{0.82}{0.71}{0.55}{tan} +\sample{0.82}{0.41}{0.12}{chocolate} +\sample{0.70}{0.13}{0.13}{firebrick} +\sample{0.65}{0.16}{0.16}{brown} +\sample{0.91}{0.59}{0.48}{dark} +\sample{0.91}{0.59}{0.48}{DarkSalmon} +\sample{0.98}{0.50}{0.45}{salmon} +\sample{1.00}{0.63}{0.48}{light} +\sample{1.00}{0.63}{0.48}{LightSalmon} +\sample{1.00}{0.65}{0.00}{orange} +\sample{1.00}{0.55}{0.00}{dark} +\sample{1.00}{0.55}{0.00}{DarkOrange} +\sample{1.00}{0.50}{0.31}{coral} +\sample{0.94}{0.50}{0.50}{light} +\sample{0.94}{0.50}{0.50}{LightCoral} +\sample{1.00}{0.39}{0.28}{tomato} +\sample{1.00}{0.27}{0.00}{orange} +\sample{1.00}{0.27}{0.00}{OrangeRed} +\sample{1.00}{0.00}{0.00}{red} +\sample{1.00}{0.41}{0.71}{hot} +\sample{1.00}{0.41}{0.71}{HotPink} +\sample{1.00}{0.08}{0.58}{deep} +\sample{1.00}{0.08}{0.58}{DeepPink} +\sample{1.00}{0.75}{0.80}{pink} +\sample{1.00}{0.71}{0.76}{light} +\sample{1.00}{0.71}{0.76}{LightPink} +\sample{0.86}{0.44}{0.58}{pale} +\sample{0.86}{0.44}{0.58}{PaleVioletRed} +\sample{0.69}{0.19}{0.38}{maroon} +\sample{0.78}{0.08}{0.52}{medium} +\sample{0.78}{0.08}{0.52}{MediumVioletRed} +\sample{0.82}{0.13}{0.56}{violet} +\sample{0.82}{0.13}{0.56}{VioletRed} +\sample{1.00}{0.00}{1.00}{magenta} +\sample{0.93}{0.51}{0.93}{violet} +\sample{0.87}{0.63}{0.87}{plum} +\sample{0.85}{0.44}{0.84}{orchid} +\sample{0.73}{0.33}{0.83}{medium} +\sample{0.73}{0.33}{0.83}{MediumOrchid} +\sample{0.60}{0.20}{0.80}{dark} +\sample{0.60}{0.20}{0.80}{DarkOrchid} +\sample{0.58}{0.00}{0.83}{dark} +\sample{0.58}{0.00}{0.83}{DarkViolet} +\sample{0.54}{0.17}{0.89}{blue} +\sample{0.54}{0.17}{0.89}{BlueViolet} +\sample{0.63}{0.13}{0.94}{purple} +\sample{0.58}{0.44}{0.86}{medium} +\sample{0.58}{0.44}{0.86}{MediumPurple} +\sample{0.85}{0.75}{0.85}{thistle} +\sample{1.00}{0.98}{0.98}{snow1} +\sample{0.93}{0.91}{0.91}{snow2} +\sample{0.80}{0.79}{0.79}{snow3} +\sample{0.55}{0.54}{0.54}{snow4} +\sample{1.00}{0.96}{0.93}{seashell1} +\sample{0.93}{0.90}{0.87}{seashell2} +\sample{0.80}{0.77}{0.75}{seashell3} +\sample{0.55}{0.53}{0.51}{seashell4} +\sample{1.00}{0.94}{0.86}{AntiqueWhite1} +\sample{0.93}{0.87}{0.80}{AntiqueWhite2} +\sample{0.80}{0.75}{0.69}{AntiqueWhite3} +\sample{0.55}{0.51}{0.47}{AntiqueWhite4} +\sample{1.00}{0.89}{0.77}{bisque1} +\sample{0.93}{0.84}{0.72}{bisque2} +\sample{0.80}{0.72}{0.62}{bisque3} +\sample{0.55}{0.49}{0.42}{bisque4} +\sample{1.00}{0.85}{0.73}{PeachPuff1} +\sample{0.93}{0.80}{0.68}{PeachPuff2} +\sample{0.80}{0.69}{0.58}{PeachPuff3} +\sample{0.55}{0.47}{0.40}{PeachPuff4} +\sample{1.00}{0.87}{0.68}{NavajoWhite1} +\sample{0.93}{0.81}{0.63}{NavajoWhite2} +\sample{0.80}{0.70}{0.55}{NavajoWhite3} +\sample{0.55}{0.47}{0.37}{NavajoWhite4} +\sample{1.00}{0.98}{0.80}{LemonChiffon1} +\sample{0.93}{0.91}{0.75}{LemonChiffon2} +\sample{0.80}{0.79}{0.65}{LemonChiffon3} +\sample{0.55}{0.54}{0.44}{LemonChiffon4} +\sample{1.00}{0.97}{0.86}{cornsilk1} +\sample{0.93}{0.91}{0.80}{cornsilk2} +\sample{0.80}{0.78}{0.69}{cornsilk3} +\sample{0.55}{0.53}{0.47}{cornsilk4} +\sample{1.00}{1.00}{0.94}{ivory1} +\sample{0.93}{0.93}{0.88}{ivory2} +\sample{0.80}{0.80}{0.76}{ivory3} +\sample{0.55}{0.55}{0.51}{ivory4} +\sample{0.94}{1.00}{0.94}{honeydew1} +\sample{0.88}{0.93}{0.88}{honeydew2} +\sample{0.76}{0.80}{0.76}{honeydew3} +\sample{0.51}{0.55}{0.51}{honeydew4} +\sample{1.00}{0.94}{0.96}{LavenderBlush1} +\sample{0.93}{0.88}{0.90}{LavenderBlush2} +\sample{0.80}{0.76}{0.77}{LavenderBlush3} +\sample{0.55}{0.51}{0.53}{LavenderBlush4} +\sample{1.00}{0.89}{0.88}{MistyRose1} +\sample{0.93}{0.84}{0.82}{MistyRose2} +\sample{0.80}{0.72}{0.71}{MistyRose3} +\sample{0.55}{0.49}{0.48}{MistyRose4} +\sample{0.94}{1.00}{1.00}{azure1} +\sample{0.88}{0.93}{0.93}{azure2} +\sample{0.76}{0.80}{0.80}{azure3} +\sample{0.51}{0.55}{0.55}{azure4} +\sample{0.51}{0.44}{1.00}{SlateBlue1} +\sample{0.48}{0.40}{0.93}{SlateBlue2} +\sample{0.41}{0.35}{0.80}{SlateBlue3} +\sample{0.28}{0.24}{0.55}{SlateBlue4} +\sample{0.28}{0.46}{1.00}{RoyalBlue1} +\sample{0.26}{0.43}{0.93}{RoyalBlue2} +\sample{0.23}{0.37}{0.80}{RoyalBlue3} +\sample{0.15}{0.25}{0.55}{RoyalBlue4} +\sample{0.00}{0.00}{1.00}{blue1} +\sample{0.00}{0.00}{0.93}{blue2} +\sample{0.00}{0.00}{0.80}{blue3} +\sample{0.00}{0.00}{0.55}{blue4} +\sample{0.12}{0.56}{1.00}{DodgerBlue1} +\sample{0.11}{0.53}{0.93}{DodgerBlue2} +\sample{0.09}{0.45}{0.80}{DodgerBlue3} +\sample{0.06}{0.31}{0.55}{DodgerBlue4} +\sample{0.39}{0.72}{1.00}{SteelBlue1} +\sample{0.36}{0.67}{0.93}{SteelBlue2} +\sample{0.31}{0.58}{0.80}{SteelBlue3} +\sample{0.21}{0.39}{0.55}{SteelBlue4} +\sample{0.00}{0.75}{1.00}{DeepSkyBlue1} +\sample{0.00}{0.70}{0.93}{DeepSkyBlue2} +\sample{0.00}{0.60}{0.80}{DeepSkyBlue3} +\sample{0.00}{0.41}{0.55}{DeepSkyBlue4} +\sample{0.53}{0.81}{1.00}{SkyBlue1} +\sample{0.49}{0.75}{0.93}{SkyBlue2} +\sample{0.42}{0.65}{0.80}{SkyBlue3} +\sample{0.29}{0.44}{0.55}{SkyBlue4} +\sample{0.69}{0.89}{1.00}{LightSkyBlue1} +\sample{0.64}{0.83}{0.93}{LightSkyBlue2} +\sample{0.55}{0.71}{0.80}{LightSkyBlue3} +\sample{0.38}{0.48}{0.55}{LightSkyBlue4} +\sample{0.78}{0.89}{1.00}{SlateGray1} +\sample{0.73}{0.83}{0.93}{SlateGray2} +\sample{0.62}{0.71}{0.80}{SlateGray3} +\sample{0.42}{0.48}{0.55}{SlateGray4} +\sample{0.79}{0.88}{1.00}{LightSteelBlue1} +\sample{0.74}{0.82}{0.93}{LightSteelBlue2} +\sample{0.64}{0.71}{0.80}{LightSteelBlue3} +\sample{0.43}{0.48}{0.55}{LightSteelBlue4} +\sample{0.75}{0.94}{1.00}{LightBlue1} +\sample{0.70}{0.87}{0.93}{LightBlue2} +\sample{0.60}{0.75}{0.80}{LightBlue3} +\sample{0.41}{0.51}{0.55}{LightBlue4} +\sample{0.88}{1.00}{1.00}{LightCyan1} +\sample{0.82}{0.93}{0.93}{LightCyan2} +\sample{0.71}{0.80}{0.80}{LightCyan3} +\sample{0.48}{0.55}{0.55}{LightCyan4} +\sample{0.73}{1.00}{1.00}{PaleTurquoise1} +\sample{0.68}{0.93}{0.93}{PaleTurquoise2} +\sample{0.59}{0.80}{0.80}{PaleTurquoise3} +\sample{0.40}{0.55}{0.55}{PaleTurquoise4} +\sample{0.60}{0.96}{1.00}{CadetBlue1} +\sample{0.56}{0.90}{0.93}{CadetBlue2} +\sample{0.48}{0.77}{0.80}{CadetBlue3} +\sample{0.33}{0.53}{0.55}{CadetBlue4} +\sample{0.00}{0.96}{1.00}{turquoise1} +\sample{0.00}{0.90}{0.93}{turquoise2} +\sample{0.00}{0.77}{0.80}{turquoise3} +\sample{0.00}{0.53}{0.55}{turquoise4} +\sample{0.00}{1.00}{1.00}{cyan1} +\sample{0.00}{0.93}{0.93}{cyan2} +\sample{0.00}{0.80}{0.80}{cyan3} +\sample{0.00}{0.55}{0.55}{cyan4} +\sample{0.59}{1.00}{1.00}{DarkSlateGray1} +\sample{0.55}{0.93}{0.93}{DarkSlateGray2} +\sample{0.47}{0.80}{0.80}{DarkSlateGray3} +\sample{0.32}{0.55}{0.55}{DarkSlateGray4} +\sample{0.50}{1.00}{0.83}{aquamarine1} +\sample{0.46}{0.93}{0.78}{aquamarine2} +\sample{0.40}{0.80}{0.67}{aquamarine3} +\sample{0.27}{0.55}{0.45}{aquamarine4} +\sample{0.76}{1.00}{0.76}{DarkSeaGreen1} +\sample{0.71}{0.93}{0.71}{DarkSeaGreen2} +\sample{0.61}{0.80}{0.61}{DarkSeaGreen3} +\sample{0.41}{0.55}{0.41}{DarkSeaGreen4} +\sample{0.33}{1.00}{0.62}{SeaGreen1} +\sample{0.31}{0.93}{0.58}{SeaGreen2} +\sample{0.26}{0.80}{0.50}{SeaGreen3} +\sample{0.18}{0.55}{0.34}{SeaGreen4} +\sample{0.60}{1.00}{0.60}{PaleGreen1} +\sample{0.56}{0.93}{0.56}{PaleGreen2} +\sample{0.49}{0.80}{0.49}{PaleGreen3} +\sample{0.33}{0.55}{0.33}{PaleGreen4} +\sample{0.00}{1.00}{0.50}{SpringGreen1} +\sample{0.00}{0.93}{0.46}{SpringGreen2} +\sample{0.00}{0.80}{0.40}{SpringGreen3} +\sample{0.00}{0.55}{0.27}{SpringGreen4} +\sample{0.00}{1.00}{0.00}{green1} +\sample{0.00}{0.93}{0.00}{green2} +\sample{0.00}{0.80}{0.00}{green3} +\sample{0.00}{0.55}{0.00}{green4} +\sample{0.50}{1.00}{0.00}{chartreuse1} +\sample{0.46}{0.93}{0.00}{chartreuse2} +\sample{0.40}{0.80}{0.00}{chartreuse3} +\sample{0.27}{0.55}{0.00}{chartreuse4} +\sample{0.75}{1.00}{0.24}{OliveDrab1} +\sample{0.70}{0.93}{0.23}{OliveDrab2} +\sample{0.60}{0.80}{0.20}{OliveDrab3} +\sample{0.41}{0.55}{0.13}{OliveDrab4} +\sample{0.79}{1.00}{0.44}{DarkOliveGreen1} +\sample{0.74}{0.93}{0.41}{DarkOliveGreen2} +\sample{0.64}{0.80}{0.35}{DarkOliveGreen3} +\sample{0.43}{0.55}{0.24}{DarkOliveGreen4} +\sample{1.00}{0.96}{0.56}{khaki1} +\sample{0.93}{0.90}{0.52}{khaki2} +\sample{0.80}{0.78}{0.45}{khaki3} +\sample{0.55}{0.53}{0.31}{khaki4} +\sample{1.00}{0.93}{0.55}{LightGoldenrod1} +\sample{0.93}{0.86}{0.51}{LightGoldenrod2} +\sample{0.80}{0.75}{0.44}{LightGoldenrod3} +\sample{0.55}{0.51}{0.30}{LightGoldenrod4} +\sample{1.00}{1.00}{0.88}{LightYellow1} +\sample{0.93}{0.93}{0.82}{LightYellow2} +\sample{0.80}{0.80}{0.71}{LightYellow3} +\sample{0.55}{0.55}{0.48}{LightYellow4} +\sample{1.00}{1.00}{0.00}{yellow1} +\sample{0.93}{0.93}{0.00}{yellow2} +\sample{0.80}{0.80}{0.00}{yellow3} +\sample{0.55}{0.55}{0.00}{yellow4} +\sample{1.00}{0.84}{0.00}{gold1} +\sample{0.93}{0.79}{0.00}{gold2} +\sample{0.80}{0.68}{0.00}{gold3} +\sample{0.55}{0.46}{0.00}{gold4} +\sample{1.00}{0.76}{0.15}{goldenrod1} +\sample{0.93}{0.71}{0.13}{goldenrod2} +\sample{0.80}{0.61}{0.11}{goldenrod3} +\sample{0.55}{0.41}{0.08}{goldenrod4} +\sample{1.00}{0.73}{0.06}{DarkGoldenrod1} +\sample{0.93}{0.68}{0.05}{DarkGoldenrod2} +\sample{0.80}{0.58}{0.05}{DarkGoldenrod3} +\sample{0.55}{0.40}{0.03}{DarkGoldenrod4} +\sample{1.00}{0.76}{0.76}{RosyBrown1} +\sample{0.93}{0.71}{0.71}{RosyBrown2} +\sample{0.80}{0.61}{0.61}{RosyBrown3} +\sample{0.55}{0.41}{0.41}{RosyBrown4} +\sample{1.00}{0.42}{0.42}{IndianRed1} +\sample{0.93}{0.39}{0.39}{IndianRed2} +\sample{0.80}{0.33}{0.33}{IndianRed3} +\sample{0.55}{0.23}{0.23}{IndianRed4} +\sample{1.00}{0.51}{0.28}{sienna1} +\sample{0.93}{0.47}{0.26}{sienna2} +\sample{0.80}{0.41}{0.22}{sienna3} +\sample{0.55}{0.28}{0.15}{sienna4} +\sample{1.00}{0.83}{0.61}{burlywood1} +\sample{0.93}{0.77}{0.57}{burlywood2} +\sample{0.80}{0.67}{0.49}{burlywood3} +\sample{0.55}{0.45}{0.33}{burlywood4} +\sample{1.00}{0.91}{0.73}{wheat1} +\sample{0.93}{0.85}{0.68}{wheat2} +\sample{0.80}{0.73}{0.59}{wheat3} +\sample{0.55}{0.49}{0.40}{wheat4} +\sample{1.00}{0.65}{0.31}{tan1} +\sample{0.93}{0.60}{0.29}{tan2} +\sample{0.80}{0.52}{0.25}{tan3} +\sample{0.55}{0.35}{0.17}{tan4} +\sample{1.00}{0.50}{0.14}{chocolate1} +\sample{0.93}{0.46}{0.13}{chocolate2} +\sample{0.80}{0.40}{0.11}{chocolate3} +\sample{0.55}{0.27}{0.07}{chocolate4} +\sample{1.00}{0.19}{0.19}{firebrick1} +\sample{0.93}{0.17}{0.17}{firebrick2} +\sample{0.80}{0.15}{0.15}{firebrick3} +\sample{0.55}{0.10}{0.10}{firebrick4} +\sample{1.00}{0.25}{0.25}{brown1} +\sample{0.93}{0.23}{0.23}{brown2} +\sample{0.80}{0.20}{0.20}{brown3} +\sample{0.55}{0.14}{0.14}{brown4} +\sample{1.00}{0.55}{0.41}{salmon1} +\sample{0.93}{0.51}{0.38}{salmon2} +\sample{0.80}{0.44}{0.33}{salmon3} +\sample{0.55}{0.30}{0.22}{salmon4} +\sample{1.00}{0.63}{0.48}{LightSalmon1} +\sample{0.93}{0.58}{0.45}{LightSalmon2} +\sample{0.80}{0.51}{0.38}{LightSalmon3} +\sample{0.55}{0.34}{0.26}{LightSalmon4} +\sample{1.00}{0.65}{0.00}{orange1} +\sample{0.93}{0.60}{0.00}{orange2} +\sample{0.80}{0.52}{0.00}{orange3} +\sample{0.55}{0.35}{0.00}{orange4} +\sample{1.00}{0.50}{0.00}{DarkOrange1} +\sample{0.93}{0.46}{0.00}{DarkOrange2} +\sample{0.80}{0.40}{0.00}{DarkOrange3} +\sample{0.55}{0.27}{0.00}{DarkOrange4} +\sample{1.00}{0.45}{0.34}{coral1} +\sample{0.93}{0.42}{0.31}{coral2} +\sample{0.80}{0.36}{0.27}{coral3} +\sample{0.55}{0.24}{0.18}{coral4} +\sample{1.00}{0.39}{0.28}{tomato1} +\sample{0.93}{0.36}{0.26}{tomato2} +\sample{0.80}{0.31}{0.22}{tomato3} +\sample{0.55}{0.21}{0.15}{tomato4} +\sample{1.00}{0.27}{0.00}{OrangeRed1} +\sample{0.93}{0.25}{0.00}{OrangeRed2} +\sample{0.80}{0.22}{0.00}{OrangeRed3} +\sample{0.55}{0.15}{0.00}{OrangeRed4} +\sample{1.00}{0.00}{0.00}{red1} +\sample{0.93}{0.00}{0.00}{red2} +\sample{0.80}{0.00}{0.00}{red3} +\sample{0.55}{0.00}{0.00}{red4} +\sample{1.00}{0.08}{0.58}{DeepPink1} +\sample{0.93}{0.07}{0.54}{DeepPink2} +\sample{0.80}{0.06}{0.46}{DeepPink3} +\sample{0.55}{0.04}{0.31}{DeepPink4} +\sample{1.00}{0.43}{0.71}{HotPink1} +\sample{0.93}{0.42}{0.65}{HotPink2} +\sample{0.80}{0.38}{0.56}{HotPink3} +\sample{0.55}{0.23}{0.38}{HotPink4} +\sample{1.00}{0.71}{0.77}{pink1} +\sample{0.93}{0.66}{0.72}{pink2} +\sample{0.80}{0.57}{0.62}{pink3} +\sample{0.55}{0.39}{0.42}{pink4} +\sample{1.00}{0.68}{0.73}{LightPink1} +\sample{0.93}{0.64}{0.68}{LightPink2} +\sample{0.80}{0.55}{0.58}{LightPink3} +\sample{0.55}{0.37}{0.40}{LightPink4} +\sample{1.00}{0.51}{0.67}{PaleVioletRed1} +\sample{0.93}{0.47}{0.62}{PaleVioletRed2} +\sample{0.80}{0.41}{0.54}{PaleVioletRed3} +\sample{0.55}{0.28}{0.36}{PaleVioletRed4} +\sample{1.00}{0.20}{0.70}{maroon1} +\sample{0.93}{0.19}{0.65}{maroon2} +\sample{0.80}{0.16}{0.56}{maroon3} +\sample{0.55}{0.11}{0.38}{maroon4} +\sample{1.00}{0.24}{0.59}{VioletRed1} +\sample{0.93}{0.23}{0.55}{VioletRed2} +\sample{0.80}{0.20}{0.47}{VioletRed3} +\sample{0.55}{0.13}{0.32}{VioletRed4} +\sample{1.00}{0.00}{1.00}{magenta1} +\sample{0.93}{0.00}{0.93}{magenta2} +\sample{0.80}{0.00}{0.80}{magenta3} +\sample{0.55}{0.00}{0.55}{magenta4} +\sample{1.00}{0.51}{0.98}{orchid1} +\sample{0.93}{0.48}{0.91}{orchid2} +\sample{0.80}{0.41}{0.79}{orchid3} +\sample{0.55}{0.28}{0.54}{orchid4} +\sample{1.00}{0.73}{1.00}{plum1} +\sample{0.93}{0.68}{0.93}{plum2} +\sample{0.80}{0.59}{0.80}{plum3} +\sample{0.55}{0.40}{0.55}{plum4} +\sample{0.88}{0.40}{1.00}{MediumOrchid1} +\sample{0.82}{0.37}{0.93}{MediumOrchid2} +\sample{0.71}{0.32}{0.80}{MediumOrchid3} +\sample{0.48}{0.22}{0.55}{MediumOrchid4} +\sample{0.75}{0.24}{1.00}{DarkOrchid1} +\sample{0.70}{0.23}{0.93}{DarkOrchid2} +\sample{0.60}{0.20}{0.80}{DarkOrchid3} +\sample{0.41}{0.13}{0.55}{DarkOrchid4} +\sample{0.61}{0.19}{1.00}{purple1} +\sample{0.57}{0.17}{0.93}{purple2} +\sample{0.49}{0.15}{0.80}{purple3} +\sample{0.33}{0.10}{0.55}{purple4} +\sample{0.67}{0.51}{1.00}{MediumPurple1} +\sample{0.62}{0.47}{0.93}{MediumPurple2} +\sample{0.54}{0.41}{0.80}{MediumPurple3} +\sample{0.36}{0.28}{0.55}{MediumPurple4} +\sample{1.00}{0.88}{1.00}{thistle1} +\sample{0.93}{0.82}{0.93}{thistle2} +\sample{0.80}{0.71}{0.80}{thistle3} +\sample{0.55}{0.48}{0.55}{thistle4} + + +\newpage +Farben HP + +\sample{0.94}{0.97}{1.00}{AliceBlue} +\sample{0.98}{0.91}{0.82}{AntiqueWhite} +\sample{1.00}{0.93}{0.84}{AntiqueWhite1} +\sample{0.92}{0.86}{0.77}{AntiqueWhite2} +\sample{0.78}{0.73}{0.65}{AntiqueWhite3} +\sample{0.51}{0.45}{0.41}{AntiqueWhite4} +\sample{0.26}{0.72}{0.73}{Aquamarine} +\sample{0.00}{0.00}{0.00}{Black} +\sample{1.00}{0.91}{0.78}{BlanchedAlmond} +\sample{0.00}{0.00}{1.00}{Blue} +\sample{0.47}{0.19}{0.87}{BlueViolet} +\sample{0.60}{0.02}{0.09}{Brown} +\sample{0.34}{0.53}{0.58}{CadetBlue} +\sample{0.60}{0.95}{1.00}{CadetBlue1} +\sample{0.56}{0.89}{0.93}{CadetBlue2} +\sample{0.47}{0.75}{0.78}{CadetBlue3} +\sample{0.30}{0.47}{0.49}{CadetBlue4} +\sample{0.97}{0.40}{0.25}{Coral} +\sample{0.08}{0.11}{0.55}{CornflowerBlue} +\sample{0.00}{1.00}{1.00}{Cyan} +\sample{0.69}{0.47}{0.09}{DarkGoldenrod} +\sample{0.98}{0.69}{0.09}{DarkGoldenrod1} +\sample{0.91}{0.64}{0.09}{DarkGoldenrod2} +\sample{0.77}{0.54}{0.09}{DarkGoldenrod3} +\sample{0.50}{0.32}{0.09}{DarkGoldenrod4} +\sample{0.15}{0.25}{0.09}{DarkGreen} +\sample{0.72}{0.68}{0.35}{DarkKhaki} +\sample{0.29}{0.25}{0.09}{DarkOliveGreen} +\sample{0.80}{0.98}{0.36}{DarkOliveGreen1} +\sample{0.74}{0.91}{0.33}{DarkOliveGreen2} +\sample{0.63}{0.77}{0.27}{DarkOliveGreen3} +\sample{0.40}{0.49}{0.15}{DarkOliveGreen4} +\sample{0.97}{0.50}{0.09}{DarkOrange} +\sample{0.97}{0.45}{0.09}{DarkOrange1} +\sample{0.90}{0.40}{0.09}{DarkOrange2} +\sample{0.76}{0.34}{0.09}{DarkOrange3} +\sample{0.49}{0.19}{0.09}{DarkOrange4} +\sample{0.49}{0.11}{0.49}{DarkOrchid} +\sample{0.69}{0.25}{1.00}{DarkOrchid1} +\sample{0.64}{0.23}{0.93}{DarkOrchid2} +\sample{0.55}{0.19}{0.78}{DarkOrchid3} +\sample{0.34}{0.11}{0.49}{DarkOrchid4} +\sample{0.88}{0.55}{0.42}{DarkSalmon} +\sample{0.55}{0.70}{0.51}{DarkSeaGreen} +\sample{0.76}{0.99}{0.72}{DarkSeaGreen1} +\sample{0.71}{0.92}{0.67}{DarkSeaGreen2} +\sample{0.60}{0.78}{0.56}{DarkSeaGreen3} +\sample{0.38}{0.49}{0.35}{DarkSeaGreen4} +\sample{0.17}{0.22}{0.34}{DarkSlateBlue} +\sample{0.15}{0.22}{0.24}{DarkSlateGray} +\sample{0.60}{1.00}{1.00}{DarkSlateGray1} +\sample{0.56}{0.92}{0.93}{DarkSlateGray2} +\sample{0.47}{0.78}{0.78}{DarkSlateGray3} +\sample{0.30}{0.49}{0.49}{DarkSlateGray4} +\sample{0.15}{0.22}{0.24}{DarkSlateGrey} +\sample{0.23}{0.61}{0.61}{DarkTurquoise} +\sample{0.52}{0.18}{0.81}{DarkViolet} +\sample{0.96}{0.16}{0.53}{DeepPink} +\sample{0.96}{0.16}{0.53}{DeepPink1} +\sample{0.89}{0.16}{0.49}{DeepPink2} +\sample{0.76}{0.13}{0.40}{DeepPink3} +\sample{0.49}{0.02}{0.25}{DeepPink4} +\sample{0.23}{0.73}{1.00}{DeepSkyBlue} +\sample{0.23}{0.73}{1.00}{DeepSkyBlue1} +\sample{0.22}{0.67}{0.93}{DeepSkyBlue2} +\sample{0.19}{0.56}{0.78}{DeepSkyBlue3} +\sample{0.15}{0.35}{0.49}{DeepSkyBlue4} +\sample{0.27}{0.24}{0.25}{DimGray} +\sample{0.27}{0.24}{0.25}{DimGrey} +\sample{0.08}{0.54}{1.00}{DodgerBlue} +\sample{0.08}{0.54}{1.00}{DodgerBlue1} +\sample{0.08}{0.49}{0.93}{DodgerBlue2} +\sample{0.08}{0.41}{0.78}{DodgerBlue3} +\sample{0.08}{0.24}{0.49}{DodgerBlue4} +\sample{0.50}{0.02}{0.09}{Firebrick} +\sample{1.00}{0.98}{0.93}{FloralWhite} +\sample{0.31}{0.57}{0.35}{ForestGreen} +\sample{0.97}{0.97}{1.00}{GhostWhite} +\sample{0.83}{0.63}{0.09}{Gold} +\sample{0.93}{0.85}{0.45}{Goldenrod} +\sample{0.00}{1.00}{0.00}{Green} +\sample{0.69}{0.98}{0.09}{GreenYellow} +\sample{0.96}{0.38}{0.67}{HotPink} +\sample{0.96}{0.40}{0.67}{HotPink1} +\sample{0.89}{0.37}{0.62}{HotPink2} +\sample{0.76}{0.32}{0.51}{HotPink3} +\sample{0.49}{0.13}{0.32}{HotPink4} +\sample{0.37}{0.13}{0.09}{IndianRed} +\sample{0.97}{0.36}{0.35}{IndianRed1} +\sample{0.90}{0.33}{0.32}{IndianRed2} +\sample{0.76}{0.27}{0.25}{IndianRed3} +\sample{0.49}{0.13}{0.09}{IndianRed4} +\sample{0.68}{0.66}{0.43}{Khaki} +\sample{0.99}{0.93}{0.96}{LavenderBlush} +\sample{0.99}{0.93}{0.96}{LavenderBlush1} +\sample{0.92}{0.87}{0.89}{LavenderBlush2} +\sample{0.78}{0.73}{0.75}{LavenderBlush3} +\sample{0.51}{0.46}{0.47}{LavenderBlush4} +\sample{0.53}{0.97}{0.09}{LawnGreen} +\sample{1.00}{0.97}{0.78}{LemonChiffon} +\sample{1.00}{0.97}{0.78}{LemonChiffon1} +\sample{0.93}{0.90}{0.71}{LemonChiffon2} +\sample{0.79}{0.76}{0.60}{LemonChiffon3} +\sample{0.51}{0.48}{0.38}{LemonChiffon4} +\sample{0.68}{0.87}{1.00}{LightBlue} +\sample{0.74}{0.93}{1.00}{LightBlue1} +\sample{0.69}{0.86}{0.93}{LightBlue2} +\sample{0.58}{0.73}{0.78}{LightBlue3} +\sample{0.37}{0.46}{0.49}{LightBlue4} +\sample{0.91}{0.45}{0.44}{LightCoral} +\sample{0.88}{1.00}{1.00}{LightCyan} +\sample{0.88}{1.00}{1.00}{LightCyan1} +\sample{0.81}{0.93}{0.93}{LightCyan2} +\sample{0.69}{0.78}{0.78}{LightCyan3} +\sample{0.44}{0.49}{0.49}{LightCyan4} +\sample{0.93}{0.85}{0.45}{LightGoldenrod} +\sample{1.00}{0.91}{0.49}{LightGoldenrod1} +\sample{0.93}{0.84}{0.45}{LightGoldenrod2} +\sample{0.78}{0.71}{0.38}{LightGoldenrod3} +\sample{0.51}{0.45}{0.22}{LightGoldenrod4} +\sample{0.98}{0.97}{0.80}{LightGoldenrodYellow} +\sample{0.63}{0.62}{0.62}{LightGray} +\sample{0.63}{0.62}{0.62}{LightGrey} +\sample{0.98}{0.69}{0.73}{LightPink} +\sample{0.98}{0.65}{0.69}{LightPink1} +\sample{0.91}{0.60}{0.64}{LightPink2} +\sample{0.77}{0.51}{0.54}{LightPink3} +\sample{0.50}{0.31}{0.32}{LightPink4} +\sample{0.98}{0.59}{0.42}{LightSalmon} +\sample{0.98}{0.59}{0.42}{LightSalmon1} +\sample{0.91}{0.54}{0.38}{LightSalmon2} +\sample{0.77}{0.45}{0.32}{LightSalmon3} +\sample{0.50}{0.27}{0.17}{LightSalmon4} +\sample{0.24}{0.66}{0.62}{LightSeaGreen} +\sample{0.51}{0.79}{0.98}{LightSkyBlue} +\sample{0.68}{0.87}{1.00}{LightSkyBlue1} +\sample{0.63}{0.81}{0.93}{LightSkyBlue2} +\sample{0.53}{0.69}{0.78}{LightSkyBlue3} +\sample{0.34}{0.43}{0.49}{LightSkyBlue4} +\sample{0.45}{0.42}{1.00}{LightSlateBlue} +\sample{0.43}{0.48}{0.55}{LightSlateGray} +\sample{0.43}{0.48}{0.55}{LightSlateGrey} +\sample{0.45}{0.56}{0.81}{LightSteelBlue} +\sample{0.78}{0.87}{1.00}{LightSteelBlue1} +\sample{0.72}{0.81}{0.93}{LightSteelBlue2} +\sample{0.60}{0.68}{0.78}{LightSteelBlue3} +\sample{0.39}{0.43}{0.49}{LightSteelBlue4} +\sample{1.00}{1.00}{0.86}{LightYellow} +\sample{1.00}{1.00}{0.86}{LightYellow1} +\sample{0.93}{0.92}{0.80}{LightYellow2} +\sample{0.79}{0.78}{0.67}{LightYellow3} +\sample{0.51}{0.49}{0.42}{LightYellow4} +\sample{0.25}{0.64}{0.09}{LimeGreen} +\sample{1.00}{0.00}{1.00}{Magenta} +\sample{0.51}{0.02}{0.25}{Maroon} +\sample{0.20}{0.53}{0.51}{MediumAquamarine} +\sample{0.08}{0.18}{0.78}{MediumBlue} +\sample{0.20}{0.45}{0.21}{MediumForestGreen} +\sample{0.80}{0.73}{0.33}{MediumGoldenrod} +\sample{0.69}{0.28}{0.71}{MediumOrchid} +\sample{0.83}{0.38}{1.00}{MediumOrchid1} +\sample{0.77}{0.35}{0.93}{MediumOrchid2} +\sample{0.65}{0.29}{0.78}{MediumOrchid3} +\sample{0.42}{0.16}{0.49}{MediumOrchid4} +\sample{0.52}{0.40}{0.84}{MediumPurple} +\sample{0.62}{0.48}{1.00}{MediumPurple1} +\sample{0.57}{0.45}{0.93}{MediumPurple2} +\sample{0.48}{0.36}{0.78}{MediumPurple3} +\sample{0.31}{0.22}{0.49}{MediumPurple4} +\sample{0.19}{0.40}{0.33}{MediumSeaGreen} +\sample{0.37}{0.35}{0.50}{MediumSlateBlue} +\sample{0.20}{0.50}{0.09}{MediumSpringGreen} +\sample{0.28}{0.80}{0.80}{MediumTurquoise} +\sample{0.79}{0.13}{0.42}{MediumVioletRed} +\sample{0.08}{0.11}{0.33}{MidnightBlue} +\sample{0.96}{1.00}{0.98}{MintCream} +\sample{0.99}{0.88}{0.87}{MistyRose} +\sample{0.99}{0.88}{0.87}{MistyRose1} +\sample{0.92}{0.82}{0.80}{MistyRose2} +\sample{0.78}{0.69}{0.67}{MistyRose3} +\sample{0.50}{0.44}{0.42}{MistyRose4} +\sample{0.99}{0.85}{0.64}{NavajoWhite} +\sample{0.99}{0.85}{0.64}{NavajoWhite1} +\sample{0.92}{0.79}{0.58}{NavajoWhite2} +\sample{0.78}{0.67}{0.49}{NavajoWhite3} +\sample{0.50}{0.42}{0.29}{NavajoWhite4} +\sample{0.08}{0.02}{0.40}{Navy} +\sample{0.08}{0.02}{0.40}{NavyBlue} +\sample{0.99}{0.95}{0.89}{OldLace} +\sample{0.40}{0.50}{0.09}{OliveDrab} +\sample{0.76}{0.98}{0.09}{OliveDrab1} +\sample{0.71}{0.91}{0.09}{OliveDrab2} +\sample{0.60}{0.77}{0.09}{OliveDrab3} +\sample{0.38}{0.49}{0.09}{OliveDrab4} +\sample{0.97}{0.48}{0.09}{Orange} +\sample{0.96}{0.22}{0.09}{OrangeRed} +\sample{0.96}{0.22}{0.09}{OrangeRed1} +\sample{0.89}{0.19}{0.09}{OrangeRed2} +\sample{0.76}{0.16}{0.09}{OrangeRed3} +\sample{0.49}{0.02}{0.09}{OrangeRed4} +\sample{0.90}{0.49}{0.93}{Orchid} +\sample{0.93}{0.89}{0.62}{PaleGoldenrod} +\sample{0.47}{0.85}{0.40}{PaleGreen} +\sample{0.63}{0.99}{0.55}{PaleGreen1} +\sample{0.58}{0.91}{0.51}{PaleGreen2} +\sample{0.49}{0.77}{0.42}{PaleGreen3} +\sample{0.31}{0.49}{0.25}{PaleGreen4} +\sample{0.68}{0.92}{0.93}{PaleTurquoise} +\sample{0.74}{1.00}{1.00}{PaleTurquoise1} +\sample{0.68}{0.92}{0.93}{PaleTurquoise2} +\sample{0.57}{0.78}{0.78}{PaleTurquoise3} +\sample{0.37}{0.49}{0.49}{PaleTurquoise4} +\sample{0.82}{0.40}{0.53}{PaleVioletRed} +\sample{0.97}{0.47}{0.63}{PaleVioletRed1} +\sample{0.90}{0.43}{0.58}{PaleVioletRed2} +\sample{0.76}{0.35}{0.49}{PaleVioletRed3} +\sample{0.49}{0.21}{0.30}{PaleVioletRed4} +\sample{1.00}{0.93}{0.81}{PapayaWhip} +\sample{0.99}{0.84}{0.69}{PeachPuff} +\sample{0.99}{0.84}{0.69}{PeachPuff1} +\sample{0.92}{0.77}{0.64}{PeachPuff2} +\sample{0.78}{0.65}{0.53}{PeachPuff3} +\sample{0.50}{0.40}{0.32}{PeachPuff4} +\sample{0.98}{0.69}{0.75}{Pink} +\sample{0.73}{0.23}{0.56}{Plum} +\sample{0.68}{0.86}{0.89}{PowderBlue} +\sample{1.00}{0.00}{0.00}{Red} +\sample{0.70}{0.52}{0.51}{RosyBrown} +\sample{0.98}{0.73}{0.73}{RosyBrown1} +\sample{0.91}{0.68}{0.67}{RosyBrown2} +\sample{0.77}{0.56}{0.56}{RosyBrown3} +\sample{0.50}{0.35}{0.35}{RosyBrown4} +\sample{0.17}{0.38}{0.87}{RoyalBlue} +\sample{0.19}{0.43}{1.00}{RoyalBlue1} +\sample{0.17}{0.40}{0.93}{RoyalBlue2} +\sample{0.15}{0.33}{0.78}{RoyalBlue3} +\sample{0.08}{0.19}{0.49}{RoyalBlue4} +\sample{0.49}{0.19}{0.09}{SaddleBrown} +\sample{0.88}{0.55}{0.42}{Salmon} +\sample{0.93}{0.60}{0.30}{SandyBrown} +\sample{0.31}{0.54}{0.46}{SeaGreen} +\sample{0.42}{0.98}{0.57}{SeaGreen1} +\sample{0.39}{0.91}{0.53}{SeaGreen2} +\sample{0.33}{0.77}{0.44}{SeaGreen3} +\sample{0.22}{0.49}{0.27}{SeaGreen4} +\sample{0.54}{0.25}{0.09}{Sienna} +\sample{0.40}{0.60}{1.00}{SkyBlue} +\sample{0.51}{0.79}{1.00}{SkyBlue1} +\sample{0.47}{0.73}{0.93}{SkyBlue2} +\sample{0.40}{0.62}{0.78}{SkyBlue3} +\sample{0.25}{0.38}{0.49}{SkyBlue4} +\sample{0.45}{0.49}{0.63}{SlateBlue} +\sample{0.45}{0.41}{1.00}{SlateBlue1} +\sample{0.41}{0.38}{0.93}{SlateBlue2} +\sample{0.34}{0.31}{0.78}{SlateBlue3} +\sample{0.20}{0.18}{0.49}{SlateBlue4} +\sample{0.40}{0.45}{0.51}{SlateGray} +\sample{0.76}{0.87}{1.00}{SlateGray1} +\sample{0.71}{0.81}{0.93}{SlateGray2} +\sample{0.60}{0.69}{0.78}{SlateGray3} +\sample{0.38}{0.43}{0.49}{SlateGray4} +\sample{0.40}{0.45}{0.51}{SlateGrey} +\sample{0.29}{0.63}{0.17}{SpringGreen} +\sample{0.37}{0.98}{0.43}{SpringGreen1} +\sample{0.34}{0.91}{0.39}{SpringGreen2} +\sample{0.30}{0.77}{0.32}{SpringGreen3} +\sample{0.20}{0.49}{0.17}{SpringGreen4} +\sample{0.28}{0.39}{0.63}{SteelBlue} +\sample{0.36}{0.70}{1.00}{SteelBlue1} +\sample{0.34}{0.65}{0.93}{SteelBlue2} +\sample{0.28}{0.54}{0.78}{SteelBlue3} +\sample{0.17}{0.33}{0.49}{SteelBlue4} +\sample{0.85}{0.69}{0.47}{Tan} +\sample{0.82}{0.73}{0.83}{Thistle} +\sample{0.08}{0.02}{0.09}{Transparent} +\sample{0.26}{0.78}{0.86}{Turquoise} +\sample{0.55}{0.22}{0.79}{Violet} +\sample{0.91}{0.21}{0.54}{VioletRed} +\sample{0.96}{0.21}{0.54}{VioletRed1} +\sample{0.89}{0.19}{0.50}{VioletRed2} +\sample{0.76}{0.16}{0.41}{VioletRed3} +\sample{0.49}{0.02}{0.25}{VioletRed4} +\sample{0.95}{0.85}{0.66}{Wheat} +\sample{1.00}{1.00}{1.00}{White} +\sample{0.96}{0.96}{0.95}{WhiteSmoke} +\sample{1.00}{1.00}{0.00}{Yellow} +\sample{0.32}{0.82}{0.09}{YellowGreen} +\sample{0.94}{0.97}{1.00}{alice} +\sample{0.98}{0.91}{0.82}{antique} +\sample{0.26}{0.72}{0.73}{aquamarine} +\sample{0.53}{0.99}{0.81}{aquamarine1} +\sample{0.49}{0.92}{0.75}{aquamarine2} +\sample{0.41}{0.78}{0.62}{aquamarine3} +\sample{0.25}{0.49}{0.39}{aquamarine4} +\sample{0.94}{1.00}{1.00}{azure} +\sample{0.94}{1.00}{1.00}{azure1} +\sample{0.87}{0.93}{0.93}{azure2} +\sample{0.74}{0.78}{0.78}{azure3} +\sample{0.48}{0.49}{0.49}{azure4} +\sample{0.96}{0.95}{0.84}{beige} +\sample{0.99}{0.88}{0.74}{bisque} +\sample{0.99}{0.88}{0.74}{bisque1} +\sample{0.92}{0.82}{0.68}{bisque2} +\sample{0.78}{0.69}{0.57}{bisque3} +\sample{0.51}{0.43}{0.35}{bisque4} +\sample{0.00}{0.00}{0.00}{black} +\sample{1.00}{0.91}{0.78}{blanched} +\sample{0.00}{0.00}{1.00}{blue} +\sample{0.08}{0.21}{1.00}{blue1} +\sample{0.08}{0.19}{0.93}{blue2} +\sample{0.08}{0.16}{0.78}{blue3} +\sample{0.08}{0.11}{0.49}{blue4} +\sample{0.47}{0.19}{0.87}{blue} +\sample{0.60}{0.02}{0.09}{brown} +\sample{0.96}{0.21}{0.15}{brown1} +\sample{0.89}{0.18}{0.09}{brown2} +\sample{0.76}{0.13}{0.09}{brown3} +\sample{0.49}{0.02}{0.09}{brown4} +\sample{0.85}{0.69}{0.47}{burlywood} +\sample{0.99}{0.81}{0.56}{burlywood1} +\sample{0.92}{0.75}{0.51}{burlywood2} +\sample{0.78}{0.63}{0.43}{burlywood3} +\sample{0.50}{0.39}{0.25}{burlywood4} +\sample{0.34}{0.53}{0.58}{cadet} +\sample{0.54}{0.98}{0.09}{chartreuse} +\sample{0.54}{0.98}{0.09}{chartreuse1} +\sample{0.50}{0.91}{0.09}{chartreuse2} +\sample{0.42}{0.77}{0.09}{chartreuse3} +\sample{0.26}{0.49}{0.09}{chartreuse4} +\sample{0.78}{0.35}{0.09}{chocolate} +\sample{0.97}{0.45}{0.09}{chocolate1} +\sample{0.90}{0.40}{0.09}{chocolate2} +\sample{0.76}{0.34}{0.09}{chocolate3} +\sample{0.49}{0.19}{0.09}{chocolate4} +\sample{0.97}{0.40}{0.25}{coral} +\sample{0.97}{0.40}{0.25}{coral1} +\sample{0.90}{0.36}{0.24}{coral2} +\sample{0.76}{0.29}{0.17}{coral3} +\sample{0.49}{0.16}{0.09}{coral4} +\sample{0.08}{0.11}{0.55}{cornflower} +\sample{1.00}{0.97}{0.84}{cornsilk} +\sample{1.00}{0.97}{0.84}{cornsilk1} +\sample{0.93}{0.90}{0.78}{cornsilk2} +\sample{0.78}{0.76}{0.65}{cornsilk3} +\sample{0.51}{0.48}{0.41}{cornsilk4} +\sample{0.00}{1.00}{1.00}{cyan} +\sample{0.34}{1.00}{1.00}{cyan1} +\sample{0.31}{0.92}{0.93}{cyan2} +\sample{0.27}{0.78}{0.78}{cyan3} +\sample{0.19}{0.49}{0.49}{cyan4} +\sample{0.69}{0.47}{0.09}{dark} +\sample{0.15}{0.25}{0.09}{dark} +\sample{0.72}{0.68}{0.35}{dark} +\sample{0.29}{0.25}{0.09}{dark} +\sample{0.97}{0.50}{0.09}{dark} +\sample{0.49}{0.11}{0.49}{dark} +\sample{0.88}{0.55}{0.42}{dark} +\sample{0.55}{0.70}{0.51}{dark} +\sample{0.17}{0.22}{0.34}{dark} +\sample{0.15}{0.22}{0.24}{dark} +\sample{0.15}{0.22}{0.24}{dark} +\sample{0.23}{0.61}{0.61}{dark} +\sample{0.52}{0.18}{0.81}{dark} +\sample{0.96}{0.16}{0.53}{deep} +\sample{0.23}{0.73}{1.00}{deep} +\sample{0.27}{0.24}{0.25}{dim} +\sample{0.27}{0.24}{0.25}{dim} +\sample{0.08}{0.54}{1.00}{dodger} +\sample{0.50}{0.02}{0.09}{firebrick} +\sample{0.96}{0.16}{0.09}{firebrick1} +\sample{0.89}{0.13}{0.09}{firebrick2} +\sample{0.76}{0.11}{0.09}{firebrick3} +\sample{0.49}{0.02}{0.09}{firebrick4} +\sample{1.00}{0.98}{0.93}{floral} +\sample{0.31}{0.57}{0.35}{forest} +\sample{0.85}{0.85}{0.84}{gainsboro} +\sample{0.97}{0.97}{1.00}{ghost} +\sample{0.83}{0.63}{0.09}{gold} +\sample{0.99}{0.82}{0.09}{gold1} +\sample{0.92}{0.76}{0.09}{gold2} +\sample{0.78}{0.64}{0.09}{gold3} +\sample{0.50}{0.40}{0.09}{gold4} +\sample{0.93}{0.85}{0.45}{goldenrod} +\sample{0.98}{0.73}{0.09}{goldenrod1} +\sample{0.91}{0.67}{0.09}{goldenrod2} +\sample{0.78}{0.56}{0.09}{goldenrod3} +\sample{0.50}{0.35}{0.09}{goldenrod4} +\sample{0.00}{1.00}{0.00}{green} +\sample{0.37}{0.98}{0.09}{green1} +\sample{0.35}{0.91}{0.09}{green2} +\sample{0.30}{0.77}{0.09}{green3} +\sample{0.20}{0.49}{0.09}{green4} +\sample{0.69}{0.98}{0.09}{green} +\sample{0.94}{1.00}{0.93}{honeydew} +\sample{0.94}{1.00}{0.93}{honeydew1} +\sample{0.87}{0.92}{0.86}{honeydew2} +\sample{0.74}{0.78}{0.73}{honeydew3} +\sample{0.48}{0.49}{0.45}{honeydew4} +\sample{0.96}{0.38}{0.67}{hot} +\sample{0.37}{0.13}{0.09}{indian} +\sample{1.00}{1.00}{0.93}{ivory} +\sample{1.00}{1.00}{0.93}{ivory1} +\sample{0.93}{0.93}{0.86}{ivory2} +\sample{0.79}{0.78}{0.73}{ivory3} +\sample{0.51}{0.49}{0.45}{ivory4} +\sample{0.68}{0.66}{0.43}{khaki} +\sample{1.00}{0.95}{0.50}{khaki1} +\sample{0.93}{0.89}{0.46}{khaki2} +\sample{0.79}{0.75}{0.38}{khaki3} +\sample{0.51}{0.47}{0.22}{khaki4} +\sample{0.89}{0.89}{0.98}{lavender} +\sample{0.99}{0.93}{0.96}{lavender} +\sample{0.53}{0.97}{0.09}{lawn} +\sample{1.00}{0.97}{0.78}{lemon} +\sample{0.68}{0.87}{1.00}{light} +\sample{0.91}{0.45}{0.44}{light} +\sample{0.88}{1.00}{1.00}{light} +\sample{0.93}{0.85}{0.45}{light} +\sample{0.98}{0.97}{0.80}{light} +\sample{0.63}{0.62}{0.62}{light} +\sample{0.63}{0.62}{0.62}{light} +\sample{0.98}{0.69}{0.73}{light} +\sample{0.98}{0.59}{0.42}{light} +\sample{0.24}{0.66}{0.62}{light} +\sample{0.51}{0.79}{0.98}{light} +\sample{0.45}{0.42}{1.00}{light} +\sample{0.43}{0.48}{0.55}{light} +\sample{0.43}{0.48}{0.55}{light} +\sample{0.45}{0.56}{0.81}{light} +\sample{1.00}{1.00}{0.86}{light} +\sample{0.25}{0.64}{0.09}{lime} +\sample{0.98}{0.93}{0.89}{linen} +\sample{1.00}{0.00}{1.00}{magenta} +\sample{0.96}{0.24}{1.00}{magenta1} +\sample{0.89}{0.22}{0.93}{magenta2} +\sample{0.75}{0.19}{0.78}{magenta3} +\sample{0.49}{0.11}{0.49}{magenta4} +\sample{0.51}{0.02}{0.25}{maroon} +\sample{0.96}{0.21}{0.67}{maroon1} +\sample{0.89}{0.19}{0.62}{maroon2} +\sample{0.76}{0.13}{0.51}{maroon3} +\sample{0.49}{0.02}{0.32}{maroon4} +\sample{0.20}{0.53}{0.51}{medium} +\sample{0.08}{0.18}{0.78}{medium} +\sample{0.20}{0.45}{0.21}{medium} +\sample{0.80}{0.73}{0.33}{medium} +\sample{0.69}{0.28}{0.71}{medium} +\sample{0.52}{0.40}{0.84}{medium} +\sample{0.19}{0.40}{0.33}{medium} +\sample{0.37}{0.35}{0.50}{medium} +\sample{0.20}{0.50}{0.09}{medium} +\sample{0.28}{0.80}{0.80}{medium} +\sample{0.79}{0.13}{0.42}{medium} +\sample{0.08}{0.11}{0.33}{midnight} +\sample{0.96}{1.00}{0.98}{mint} +\sample{0.99}{0.88}{0.87}{misty} +\sample{0.99}{0.88}{0.67}{moccasin} +\sample{0.99}{0.85}{0.64}{navajo} +\sample{0.08}{0.02}{0.40}{navy} +\sample{0.08}{0.02}{0.40}{navy} +\sample{0.99}{0.95}{0.89}{old} +\sample{0.40}{0.50}{0.09}{olive} +\sample{0.97}{0.48}{0.09}{orange} +\sample{0.98}{0.61}{0.09}{orange1} +\sample{0.91}{0.56}{0.09}{orange2} +\sample{0.77}{0.47}{0.09}{orange3} +\sample{0.50}{0.28}{0.09}{orange4} +\sample{0.96}{0.22}{0.09}{orange} +\sample{0.90}{0.49}{0.93}{orchid} +\sample{0.96}{0.49}{0.98}{orchid1} +\sample{0.89}{0.45}{0.91}{orchid2} +\sample{0.76}{0.38}{0.76}{orchid3} +\sample{0.49}{0.22}{0.49}{orchid4} +\sample{0.93}{0.89}{0.62}{pale} +\sample{0.47}{0.85}{0.40}{pale} +\sample{0.68}{0.92}{0.93}{pale} +\sample{0.82}{0.40}{0.53}{pale} +\sample{1.00}{0.93}{0.81}{papaya} +\sample{0.99}{0.84}{0.69}{peach} +\sample{0.77}{0.47}{0.15}{peru} +\sample{0.98}{0.69}{0.75}{pink} +\sample{0.98}{0.69}{0.75}{pink1} +\sample{0.91}{0.63}{0.69}{pink2} +\sample{0.77}{0.53}{0.58}{pink3} +\sample{0.50}{0.32}{0.36}{pink4} +\sample{0.73}{0.23}{0.56}{plum} +\sample{0.98}{0.72}{1.00}{plum1} +\sample{0.90}{0.66}{0.93}{plum2} +\sample{0.76}{0.56}{0.78}{plum3} +\sample{0.49}{0.35}{0.49}{plum4} +\sample{0.68}{0.86}{0.89}{powder} +\sample{0.56}{0.21}{0.94}{purple} +\sample{0.54}{0.23}{1.00}{purple1} +\sample{0.50}{0.22}{0.93}{purple2} +\sample{0.42}{0.18}{0.78}{purple3} +\sample{0.27}{0.11}{0.49}{purple4} +\sample{1.00}{0.00}{0.00}{red} +\sample{0.96}{0.13}{0.09}{red1} +\sample{0.89}{0.11}{0.09}{red2} +\sample{0.76}{0.11}{0.09}{red3} +\sample{0.49}{0.02}{0.09}{red4} +\sample{0.70}{0.52}{0.51}{rosy} +\sample{0.17}{0.38}{0.87}{royal} +\sample{0.49}{0.19}{0.09}{saddle} +\sample{0.88}{0.55}{0.42}{salmon} +\sample{0.97}{0.51}{0.35}{salmon1} +\sample{0.90}{0.45}{0.32}{salmon2} +\sample{0.76}{0.38}{0.25}{salmon3} +\sample{0.49}{0.22}{0.09}{salmon4} +\sample{0.93}{0.60}{0.30}{sandy} +\sample{0.31}{0.54}{0.46}{sea} +\sample{1.00}{0.95}{0.92}{seashell} +\sample{1.00}{0.95}{0.92}{seashell1} +\sample{0.92}{0.89}{0.85}{seashell2} +\sample{0.78}{0.75}{0.71}{seashell3} +\sample{0.51}{0.47}{0.45}{seashell4} +\sample{0.54}{0.25}{0.09}{sienna} +\sample{0.97}{0.45}{0.19}{sienna1} +\sample{0.90}{0.42}{0.17}{sienna2} +\sample{0.76}{0.35}{0.09}{sienna3} +\sample{0.49}{0.21}{0.09}{sienna4} +\sample{0.40}{0.60}{1.00}{sky} +\sample{0.45}{0.49}{0.63}{slate} +\sample{0.40}{0.45}{0.51}{slate} +\sample{0.40}{0.45}{0.51}{slate} +\sample{1.00}{0.98}{0.98}{snow} +\sample{1.00}{0.98}{0.98}{snow1} +\sample{0.93}{0.91}{0.90}{snow2} +\sample{0.78}{0.77}{0.76}{snow3} +\sample{0.51}{0.49}{0.48}{snow4} +\sample{0.29}{0.63}{0.17}{spring} +\sample{0.28}{0.39}{0.63}{steel} +\sample{0.85}{0.69}{0.47}{tan} +\sample{0.98}{0.61}{0.24}{tan1} +\sample{0.91}{0.56}{0.21}{tan2} +\sample{0.77}{0.47}{0.15}{tan3} +\sample{0.50}{0.28}{0.09}{tan4} +\sample{0.82}{0.73}{0.83}{thistle} +\sample{0.99}{0.87}{1.00}{thistle1} +\sample{0.91}{0.81}{0.93}{thistle2} +\sample{0.78}{0.68}{0.78}{thistle3} +\sample{0.50}{0.43}{0.49}{thistle4} +\sample{0.97}{0.33}{0.19}{tomato} +\sample{0.97}{0.33}{0.19}{tomato1} +\sample{0.90}{0.30}{0.17}{tomato2} +\sample{0.76}{0.24}{0.09}{tomato3} +\sample{0.49}{0.13}{0.09}{tomato4} +\sample{0.08}{0.02}{0.09}{transparent} +\sample{0.26}{0.78}{0.86}{turquoise} +\sample{0.32}{0.95}{1.00}{turquoise1} +\sample{0.31}{0.89}{0.93}{turquoise2} +\sample{0.26}{0.75}{0.78}{turquoise3} +\sample{0.19}{0.47}{0.49}{turquoise4} +\sample{0.55}{0.22}{0.79}{violet} +\sample{0.91}{0.21}{0.54}{violet} +\sample{0.95}{0.85}{0.66}{wheat} +\sample{1.00}{0.89}{0.69}{wheat1} +\sample{0.92}{0.83}{0.64}{wheat2} +\sample{0.78}{0.69}{0.54}{wheat3} +\sample{0.51}{0.44}{0.33}{wheat4} +\sample{1.00}{1.00}{1.00}{white} +\sample{0.96}{0.96}{0.95}{white} +\sample{1.00}{1.00}{0.00}{yellow} +\sample{1.00}{0.99}{0.09}{yellow1} +\sample{0.93}{0.91}{0.09}{yellow2} +\sample{0.79}{0.77}{0.09}{yellow3} +\sample{0.51}{0.49}{0.09}{yellow4} +\sample{0.32}{0.82}{0.09}{yellow} + + + +\end{document} + diff --git a/support/latexdraw/test/abbtest/test01.epc b/support/latexdraw/test/abbtest/test01.epc new file mode 100644 index 0000000000..4e7f6a63b1 --- /dev/null +++ b/support/latexdraw/test/abbtest/test01.epc @@ -0,0 +1,363 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 4.59320E-01 (TEXFAKTOR) + 3.00000E+00 (TEXDASHLAENGE) + 2.00000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +6 455.667 251.333 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.000 2.000 0.000 +3 303.333 175.667 470.000 175.667 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 166.667 166.667 0.000 +3 303.333 175.667 436.667 242.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 149.071 149.071 0.000 +3 470.000 175.667 436.667 242.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 74.535 74.535 0.000 +3 436.667 242.333 455.667 251.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 21.024 21.024 0.000 +3 470.000 175.667 491.667 175.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 21.670 21.670 0.000 +6 491.667 175.333 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.472 4.472 0.000 +6 454.667 250.333 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.000 4.000 0.000 +6 457.667 210.333 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.083 6.083 0.000 +9 510.667 175.333 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 17.000 5.000 0.000 +6 394.933 297.133 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.789 1.789 0.000 +3 303.333 175.667 436.667 242.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 149.071 149.071 0.000 +3 303.333 175.667 383.333 282.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 133.333 133.333 0.000 +3 436.667 242.333 383.333 282.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 66.667 66.667 0.000 +3 383.333 282.333 394.933 297.133 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 18.804 18.804 0.000 +3 436.667 242.333 454.133 250.733 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 19.381 19.381 0.000 +6 454.133 250.733 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.000 4.000 0.000 +6 394.533 295.933 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.578 3.578 0.000 +6 412.933 265.133 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.441 5.441 0.000 +9 469.333 258.333 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 15.205 4.472 265.650 +6 328.027 309.480 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.600 1.600 0.000 +3 303.333 175.667 383.333 282.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 133.333 133.333 0.000 +3 303.333 175.667 324.667 293.000 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 119.257 119.257 0.000 +3 383.333 282.333 324.667 293.000 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 59.628 59.628 0.000 +3 324.667 293.000 328.027 309.480 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 16.819 16.819 0.000 +3 383.333 282.333 393.947 296.040 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 17.336 17.336 0.000 +6 393.947 296.040 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.578 3.578 0.000 +6 328.187 308.360 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.200 3.200 0.000 +6 355.227 291.080 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.866 4.866 0.000 +9 403.067 308.200 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 13.600 3.100 531.300 +6 269.563 292.595 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.431 1.431 0.000 +3 303.333 175.667 324.667 293.000 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 119.257 119.257 0.000 +3 303.333 175.667 273.467 278.067 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 106.666 106.666 0.000 +3 324.667 293.000 273.467 278.067 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 53.333 53.333 0.000 +3 273.467 278.067 269.563 292.595 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 15.043 15.043 0.000 +3 324.667 293.000 327.675 308.211 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 15.506 15.506 0.000 +6 327.675 308.211 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.200 3.200 0.000 +6 270.139 291.763 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.862 2.862 0.000 +6 298.683 288.755 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.352 4.352 0.000 +9 330.107 321.587 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 12.164 3.578 796.950 +6 229.546 255.701 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.280 1.280 0.000 +3 303.333 175.667 273.467 278.067 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 106.666 106.666 0.000 +3 303.333 175.667 238.480 245.640 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 95.405 95.405 0.000 +3 273.467 278.067 238.480 245.640 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 47.703 47.703 0.000 +3 238.480 245.640 229.546 255.701 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 13.455 13.455 0.000 +3 273.467 278.067 269.789 291.438 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 13.868 13.868 0.000 +6 269.789 291.438 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.862 2.862 0.000 +6 230.339 255.266 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.560 2.560 0.000 +6 254.378 264.277 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.893 3.893 0.000 +9 266.384 303.112 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.200 10.880 162.600 +6 212.289 210.179 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.145 1.145 0.000 +3 303.333 175.667 238.480 245.640 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 95.405 95.405 0.000 +3 303.333 175.667 223.461 205.704 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 85.333 85.333 0.000 +3 238.480 245.640 223.461 205.704 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 42.667 42.667 0.000 +3 223.461 205.704 212.289 210.179 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 12.035 12.035 0.000 +3 238.480 245.640 230.189 254.866 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 12.404 12.404 0.000 +6 230.189 254.866 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.560 2.560 0.000 +6 213.098 210.148 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.290 2.290 0.000 +6 228.725 226.972 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.482 3.482 0.000 +9 222.796 262.843 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.862 9.731 428.250 +6 216.693 166.859 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.024 1.024 0.000 +3 303.333 175.667 223.461 205.704 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 85.333 85.333 0.000 +3 303.333 175.667 227.421 167.748 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 76.324 76.324 0.000 +3 223.461 205.704 227.421 167.748 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 38.162 38.162 0.000 +3 227.421 167.748 216.693 166.859 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 10.765 10.765 0.000 +3 223.461 205.704 213.138 209.769 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 11.095 11.095 0.000 +6 213.138 209.769 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.290 2.290 0.000 +6 217.353 167.158 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.048 2.048 0.000 +6 223.124 186.868 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.114 3.114 0.000 +9 204.033 213.193 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.560 8.704 693.900 +6 237.544 133.964 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.916 0.916 0.000 +3 303.333 175.667 227.421 167.748 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 76.324 76.324 0.000 +3 303.333 175.667 245.771 138.967 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 68.266 68.266 0.000 +3 227.421 167.748 245.771 138.967 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 34.133 34.133 0.000 +3 245.771 138.967 237.544 133.964 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 9.629 9.629 0.000 +3 227.421 167.748 217.536 166.870 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 9.924 9.924 0.000 +6 217.536 166.870 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.048 2.048 0.000 +6 237.952 134.467 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.832 1.832 0.000 +6 234.685 152.544 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.786 2.786 0.000 +9 208.882 165.967 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 7.785 2.290 59.550 +6 267.383 115.989 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.819 0.819 0.000 +3 303.333 175.667 245.771 138.967 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 68.266 68.266 0.000 +3 303.333 175.667 271.963 123.282 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 61.060 61.060 0.000 +3 245.771 138.967 271.963 123.282 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 30.529 30.529 0.000 +3 271.963 123.282 267.383 115.989 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 8.612 8.612 0.000 +3 245.771 138.967 238.214 134.311 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 8.876 8.876 0.000 +6 238.214 134.311 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.832 1.832 0.000 +6 267.508 116.555 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.638 1.638 0.000 +6 257.664 129.709 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.491 2.491 0.000 +9 231.652 130.127 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.963 2.048 325.200 +6 298.444 113.545 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.733 0.733 0.000 +3 303.333 175.667 271.963 123.282 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 61.060 61.060 0.000 +3 303.333 175.667 299.191 121.211 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 54.613 54.613 0.000 +3 271.963 123.282 299.191 121.211 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 27.307 27.307 0.000 +3 299.191 121.211 298.444 113.545 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 7.702 7.702 0.000 +3 271.963 123.282 267.781 116.534 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 7.939 7.939 0.000 +6 267.781 116.534 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.638 1.638 0.000 +6 298.318 114.047 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.465 1.465 0.000 +6 285.181 120.633 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.228 2.228 0.000 +9 264.204 110.562 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.228 1.832 590.850 +6 324.271 124.013 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.655 0.655 0.000 +3 303.333 175.667 299.191 121.211 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 54.613 54.613 0.000 +3 303.333 175.667 321.802 130.445 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 48.848 48.848 0.000 +3 299.191 121.211 321.802 130.445 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 24.424 24.424 0.000 +3 321.802 130.445 324.271 124.013 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.890 6.890 0.000 +3 299.191 121.211 298.544 114.140 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 7.101 7.101 0.000 +6 298.544 114.140 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.465 1.465 0.000 +6 323.969 124.365 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.311 1.311 0.000 +6 310.825 124.379 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.993 1.993 0.000 +9 298.072 107.932 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.571 1.638 856.510 +6 340.745 142.719 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.586 0.586 0.000 +3 303.333 175.667 321.802 130.445 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 48.848 48.848 0.000 +3 303.333 175.667 336.197 146.877 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 43.691 43.691 0.000 +3 321.802 130.445 336.197 146.877 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 21.846 21.846 0.000 +3 336.197 146.877 340.745 142.719 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.162 6.162 0.000 +3 321.802 130.445 324.113 124.529 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.351 6.351 0.000 +6 324.113 124.529 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.311 1.311 0.000 +6 340.362 142.880 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.172 1.172 0.000 +6 329.842 137.633 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.783 1.783 0.000 +9 326.218 119.374 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.465 4.982 222.160 +6 346.441 164.273 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.524 0.524 0.000 +3 303.333 175.667 336.197 146.877 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 43.691 43.691 0.000 +3 303.333 175.667 341.140 165.780 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 39.078 39.078 0.000 +3 336.197 146.877 341.140 165.780 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 19.539 19.539 0.000 +3 341.140 165.780 346.441 164.273 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.511 5.511 0.000 +3 336.197 146.877 340.412 143.069 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.680 5.680 0.000 +6 340.412 143.069 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.172 1.172 0.000 +6 346.071 164.249 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.049 1.049 0.000 +6 339.753 155.843 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.595 1.595 0.000 +9 344.158 139.787 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.311 4.456 487.810 +6 342.377 183.795 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.469 0.469 0.000 +3 303.333 175.667 341.140 165.780 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 39.078 39.078 0.000 +3 303.333 175.667 337.533 182.880 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 34.952 34.952 0.000 +3 341.140 165.780 337.533 182.880 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 17.476 17.476 0.000 +3 337.533 182.880 342.377 183.795 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.930 4.930 0.000 +3 341.140 165.780 346.035 164.420 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.080 5.080 0.000 +6 346.035 164.420 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.049 1.049 0.000 +6 342.091 183.627 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.938 0.938 0.000 +6 340.399 174.376 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.426 1.426 0.000 +9 350.345 163.293 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.172 3.986 753.460 +6 331.317 197.787 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.419 0.419 0.000 +3 303.333 175.667 337.533 182.880 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 34.952 34.952 0.000 +3 303.333 175.667 327.808 195.118 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 31.263 31.263 0.000 +3 337.533 182.880 327.808 195.118 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 15.632 15.632 0.000 +3 327.808 195.118 331.317 197.787 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.409 4.409 0.000 +3 337.533 182.880 341.994 183.750 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.545 4.545 0.000 +6 341.994 183.750 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.938 0.938 0.000 +6 331.155 197.538 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.839 0.839 0.000 +6 333.502 189.460 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.276 1.276 0.000 +9 345.893 184.572 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.565 1.049 119.110 +6 316.872 204.556 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.375 0.375 0.000 +3 303.333 175.667 327.808 195.118 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 31.263 31.263 0.000 +3 303.333 175.667 315.133 201.017 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 27.962 27.962 0.000 +3 327.808 195.118 315.133 201.017 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 13.980 13.980 0.000 +3 315.133 201.017 316.872 204.556 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.943 3.943 0.000 +3 327.808 195.118 331.028 197.597 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.064 4.064 0.000 +6 331.028 197.597 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.839 0.839 0.000 +6 316.842 204.293 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.750 0.750 0.000 +6 321.951 198.769 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.141 1.141 0.000 +9 333.819 199.815 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.189 0.938 384.760 +6 302.609 204.194 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.336 0.336 0.000 +3 303.333 175.667 315.133 201.017 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 27.962 27.962 0.000 +3 303.333 175.667 302.632 200.667 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 25.010 25.010 0.000 +3 315.133 201.017 302.632 200.667 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 12.506 12.506 0.000 +3 302.632 200.667 302.609 204.194 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.527 3.527 0.000 +3 315.133 201.017 316.717 204.289 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.635 3.635 0.000 +6 316.717 204.289 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.750 0.750 0.000 +6 302.690 203.971 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.671 0.671 0.000 +6 308.986 201.596 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.021 1.021 0.000 +9 318.062 207.179 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.852 0.839 650.410 +6 291.343 198.199 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.300 0.300 0.000 +3 303.333 175.667 302.632 200.667 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 25.010 25.010 0.000 +3 303.333 175.667 292.773 195.386 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 22.369 22.369 0.000 +3 302.632 200.667 292.773 195.386 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 11.184 11.184 0.000 +3 292.773 195.386 291.343 198.199 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.156 3.156 0.000 +3 302.632 200.667 302.591 203.918 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.251 3.251 0.000 +6 302.591 203.918 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.671 0.671 0.000 +6 291.497 198.053 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.600 0.600 0.000 +6 297.484 198.671 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.913 0.913 0.000 +9 302.511 206.768 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.750 2.551 16.060 +6 284.728 188.896 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.268 0.268 0.000 +3 303.333 175.667 292.773 195.386 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 22.369 22.369 0.000 +3 303.333 175.667 286.997 187.218 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 20.007 20.007 0.000 +3 292.773 195.386 286.997 187.218 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 10.004 10.004 0.000 +3 286.997 187.218 284.728 188.896 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.822 2.822 0.000 +3 292.773 195.386 291.439 197.971 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.909 2.909 0.000 +6 291.439 197.971 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.600 0.600 0.000 +6 284.910 188.841 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.537 0.537 0.000 +6 289.452 191.731 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.816 0.816 0.000 +9 290.235 200.219 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.671 2.282 281.710 +6 283.157 178.808 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.240 0.240 0.000 +3 303.333 175.667 286.997 187.218 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 20.007 20.007 0.000 +3 303.333 175.667 285.643 178.373 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 17.896 17.896 0.000 +3 286.997 187.218 285.643 178.373 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 8.948 8.948 0.000 +3 285.643 178.373 283.157 178.808 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.524 2.524 0.000 +3 286.997 187.218 284.896 188.753 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.602 2.602 0.000 +6 284.896 188.753 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.537 0.537 0.000 +6 283.325 178.837 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.480 0.480 0.000 +6 285.803 182.965 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.730 0.730 0.000 +9 283.034 190.069 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.600 2.041 547.360 +6 285.936 170.109 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.215 0.215 0.000 +3 303.333 175.667 285.643 178.373 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 17.896 17.896 0.000 +3 303.333 175.667 288.099 170.756 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 16.006 16.006 0.000 +3 285.643 178.373 288.099 170.756 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 8.003 8.003 0.000 +3 288.099 170.756 285.936 170.109 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.258 2.258 0.000 +3 285.643 178.373 283.349 178.761 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.327 2.327 0.000 +6 283.349 178.761 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.480 0.480 0.000 +6 286.058 170.199 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.429 0.429 0.000 +6 286.390 174.493 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.653 0.653 0.000 +9 281.333 179.069 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.537 1.825 813.010 +6 291.638 164.262 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.192 0.192 0.000 +3 303.333 175.667 288.099 170.756 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 16.006 16.006 0.000 +3 303.333 175.667 293.110 165.644 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 14.317 14.317 0.000 +3 288.099 170.756 293.110 165.644 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 7.158 7.158 0.000 +3 293.110 165.644 291.638 164.262 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.019 2.019 0.000 +3 288.099 170.756 286.109 170.148 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.081 2.081 0.000 +6 286.109 170.148 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.429 0.429 0.000 +6 291.700 164.383 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.384 0.384 0.000 +6 290.248 167.951 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.584 0.584 0.000 +9 284.372 169.588 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.633 0.480 178.660 +6 298.539 161.865 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.172 0.172 0.000 +3 303.333 175.667 293.110 165.644 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 14.317 14.317 0.000 +3 303.333 175.667 299.164 163.559 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 12.806 12.806 0.000 +3 293.110 165.644 299.164 163.559 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.403 6.403 0.000 +3 299.164 163.559 298.539 161.865 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.806 1.806 0.000 +3 293.110 165.644 291.761 164.362 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.861 1.861 0.000 +6 291.761 164.362 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.384 0.384 0.000 +6 298.541 161.986 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.344 0.344 0.000 +6 295.951 164.260 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.523 0.523 0.000 +9 290.595 163.219 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.460 0.429 444.310 +6 305.019 162.708 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.154 0.154 0.000 +3 303.333 175.667 299.164 163.559 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 12.806 12.806 0.000 +3 303.333 175.667 304.840 164.313 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 11.454 11.454 0.000 +3 299.164 163.559 304.840 164.313 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.726 5.726 0.000 +3 304.840 164.313 305.019 162.708 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.615 1.615 0.000 +3 299.164 163.559 298.597 161.994 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.665 1.665 0.000 +6 298.597 161.994 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.344 0.344 0.000 +6 304.971 162.805 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.307 0.307 0.000 +6 301.990 163.588 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.467 0.467 0.000 +9 298.122 160.614 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.306 0.384 709.960 +6 309.865 165.974 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.137 0.137 0.000 +3 303.333 175.667 304.840 164.313 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 11.454 11.454 0.000 +3 303.333 175.667 309.080 167.187 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 10.244 10.244 0.000 +3 304.840 164.313 309.080 167.187 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.122 5.122 0.000 +3 309.080 167.187 309.865 165.974 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.445 1.445 0.000 +3 304.840 164.313 305.014 162.834 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.489 1.489 0.000 +6 305.014 162.834 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.307 0.307 0.000 +6 309.788 166.033 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.275 0.275 0.000 +6 307.090 165.467 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.418 0.418 0.000 +9 305.185 161.540 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.344 1.168 75.610 +6 312.436 170.525 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.123 0.123 0.000 +3 303.333 175.667 309.080 167.187 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 10.244 10.244 0.000 +3 303.333 175.667 311.323 171.181 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 9.163 9.163 0.000 +3 309.080 167.187 311.323 171.181 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.581 4.581 0.000 +3 311.323 171.181 312.436 170.525 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.292 1.292 0.000 +3 309.080 167.187 309.811 166.073 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.332 1.332 0.000 +6 309.811 166.073 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.275 0.275 0.000 +6 312.351 170.541 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.246 0.246 0.000 +6 310.419 169.010 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.374 0.374 0.000 +9 310.466 165.106 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.307 1.045 341.260 +6 312.672 175.195 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.110 0.110 0.000 +3 303.333 175.667 311.323 171.181 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 9.163 9.163 0.000 +3 303.333 175.667 311.519 175.274 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 8.195 8.195 0.000 +3 311.323 171.181 311.519 175.274 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.098 4.098 0.000 +3 311.519 175.274 312.672 175.195 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.156 1.156 0.000 +3 311.323 171.181 312.353 170.582 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.192 1.192 0.000 +6 312.353 170.582 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.246 0.246 0.000 +6 312.597 175.173 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.220 0.220 0.000 +6 311.665 173.175 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.334 0.334 0.000 +9 313.264 170.071 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.275 0.935 606.910 +6 310.993 179.025 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.098 0.098 0.000 +3 303.333 175.667 311.519 175.274 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 8.195 8.195 0.000 +3 303.333 175.667 310.039 178.627 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 7.330 7.330 0.000 +3 311.519 175.274 310.039 178.627 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.665 3.665 0.000 +3 310.039 178.627 310.993 179.025 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.034 1.034 0.000 +3 311.519 175.274 312.583 175.207 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.066 1.066 0.000 +6 312.583 175.207 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.220 0.220 0.000 +6 310.942 178.978 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.197 0.197 0.000 +6 310.995 177.006 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.299 0.299 0.000 +9 313.516 175.162 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.246 0.836 872.560 +6 308.118 181.417 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.088 0.088 0.000 +3 303.333 175.667 310.039 178.627 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 7.330 7.330 0.000 +3 303.333 175.667 307.514 180.717 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.556 6.556 0.000 +3 310.039 178.627 307.514 180.717 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.278 3.278 0.000 +3 307.514 180.717 308.118 181.417 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.925 0.925 0.000 +3 310.039 178.627 310.917 178.999 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.954 0.954 0.000 +6 310.917 178.999 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.197 0.197 0.000 +6 308.096 181.359 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.176 0.176 0.000 +6 308.927 179.803 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.268 0.268 0.000 +9 311.681 179.336 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.748 0.220 238.210 +6 304.861 182.181 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.079 0.079 0.000 +3 303.333 175.667 307.514 180.717 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 6.556 6.556 0.000 +3 303.333 175.667 304.657 181.379 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.863 5.863 0.000 +3 307.514 180.717 304.657 181.379 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.933 2.933 0.000 +3 304.657 181.379 304.861 182.181 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.828 0.828 0.000 +3 307.514 180.717 308.067 181.366 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.853 0.853 0.000 +6 308.067 181.366 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.176 0.176 0.000 +6 304.866 182.125 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.157 0.157 0.000 +6 306.154 181.213 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.239 0.239 0.000 +9 308.544 181.941 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.669 0.197 503.860 +6 301.950 181.489 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.070 0.070 0.000 +3 303.333 175.667 304.657 181.379 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.863 5.863 0.000 +3 303.333 175.667 302.107 180.766 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.244 5.244 0.000 +3 304.657 181.379 302.107 180.766 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.623 2.623 0.000 +3 302.107 180.766 301.950 181.489 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.740 0.740 0.000 +3 304.657 181.379 304.841 182.119 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.763 0.763 0.000 +6 304.841 182.119 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.157 0.157 0.000 +6 301.976 181.447 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.141 0.141 0.000 +6 303.371 181.232 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.214 0.214 0.000 +9 304.992 182.771 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.598 0.176 769.520 +6 299.898 179.771 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.063 0.063 0.000 +3 303.333 175.667 302.107 180.766 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 5.244 5.244 0.000 +3 303.333 175.667 300.313 179.256 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.691 4.691 0.000 +3 302.107 180.766 300.313 179.256 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.345 2.345 0.000 +3 300.313 179.256 299.898 179.771 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.661 0.661 0.000 +3 302.107 180.766 301.958 181.432 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.682 0.682 0.000 +6 301.958 181.432 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.141 0.141 0.000 +6 299.936 179.748 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.126 0.126 0.000 +6 301.137 180.134 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.191 0.191 0.000 +9 301.819 182.013 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.157 0.535 135.170 +6 298.943 177.576 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.056 0.056 0.000 +3 303.333 175.667 300.313 179.256 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.691 4.691 0.000 +3 303.333 175.667 299.481 177.330 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.196 4.196 0.000 +3 300.313 179.256 299.481 177.330 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.098 2.098 0.000 +3 299.481 177.330 298.943 177.576 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.592 0.592 0.000 +3 300.313 179.256 299.927 179.729 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.611 0.611 0.000 +6 299.927 179.729 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.126 0.126 0.000 +6 298.983 177.573 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.113 0.113 0.000 +6 299.790 178.362 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.171 0.171 0.000 +9 299.583 180.138 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.141 0.479 400.820 +6 299.057 175.438 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.050 0.050 0.000 +3 303.333 175.667 299.481 177.330 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 4.196 4.196 0.000 +3 303.333 175.667 299.586 175.456 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.753 3.753 0.000 +3 299.481 177.330 299.586 175.456 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.877 1.877 0.000 +3 299.586 175.456 299.057 175.438 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.529 0.529 0.000 +3 299.481 177.330 298.984 177.554 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.545 0.545 0.000 +6 298.984 177.554 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.113 0.113 0.000 +6 299.090 175.451 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.101 0.101 0.000 +6 299.420 176.406 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.153 0.153 0.000 +9 298.544 177.743 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.126 0.428 666.470 +6 300.004 173.773 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.045 0.045 0.000 +3 303.333 175.667 299.586 175.456 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.753 3.753 0.000 +3 303.333 175.667 300.420 173.100 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.883 3.883 0.000 +3 299.586 175.456 300.420 173.100 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 2.499 2.499 0.000 +3 300.420 173.100 300.004 173.773 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.791 0.791 0.000 +3 299.586 175.456 299.099 175.437 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.487 0.487 0.000 +6 299.099 175.437 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.101 0.101 0.000 +6 300.025 173.797 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.090 0.090 0.000 +6 299.907 174.693 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.137 0.137 0.000 +9 298.672 175.413 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.383 0.113 32.120 +6 301.427 172.820 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.040 0.040 0.000 +3 303.333 175.667 300.420 173.100 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.883 3.883 0.000 +3 303.333 175.667 301.669 173.168 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 3.002 3.002 0.000 +3 300.420 173.100 301.669 173.168 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 1.251 1.251 0.000 +3 301.669 173.168 301.427 172.820 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.424 0.424 0.000 +3 300.420 173.100 300.038 173.789 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.788 0.788 0.000 +6 300.038 173.789 66.667 33.333 66.667 33.333 66.667 33.333 0.000 3600.000 1 0 1 0.090 0.090 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test02.epc b/support/latexdraw/test/abbtest/test02.epc new file mode 100644 index 0000000000..03849450ca --- /dev/null +++ b/support/latexdraw/test/abbtest/test02.epc @@ -0,0 +1,81 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 4.68750E-01 (TEXFAKTOR) + 3.00000E+00 (TEXDASHLAENGE) + 2.00000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +9 441.995 268.799 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 93.890 13.413 0.000 +3 284.394 270.476 366.548 272.152 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 82.171 82.171 0.000 +3 284.394 272.152 329.662 233.590 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 59.466 59.466 0.000 +9 368.885 195.528 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 9.707 67.947 484.050 +3 284.394 272.152 329.662 233.590 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 59.466 59.466 0.000 +3 285.200 273.060 291.173 230.441 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 43.036 43.036 0.000 +9 294.114 190.997 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 7.025 49.173 68.100 +3 285.200 273.060 291.173 230.441 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 43.036 43.036 0.000 +3 286.071 273.164 268.829 247.228 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 31.144 31.144 0.000 +9 251.471 224.467 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 35.586 5.084 552.140 +3 286.071 273.164 268.829 247.228 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 31.144 31.144 0.000 +3 286.593 272.801 264.801 267.048 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 22.539 22.539 0.000 +9 244.472 263.069 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 25.753 3.679 136.190 +3 286.593 272.801 264.801 267.048 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 22.539 22.539 0.000 +3 286.702 272.354 272.143 279.710 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 16.312 16.312 0.000 +9 259.229 287.324 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 2.663 18.638 620.240 +3 286.702 272.354 272.143 279.710 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 16.312 16.312 0.000 +3 286.546 272.060 282.200 283.036 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 11.805 11.805 0.000 +9 278.869 293.361 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 1.927 13.488 204.290 +3 286.546 272.060 282.200 283.036 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 11.805 11.805 0.000 +3 286.320 271.976 289.241 280.004 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 8.543 8.543 0.000 +9 292.399 287.192 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 9.761 1.394 688.330 +3 286.320 271.976 289.241 280.004 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 8.543 8.543 0.000 +3 286.157 272.039 291.595 274.980 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 6.182 6.182 0.000 +9 296.758 277.354 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 7.064 1.009 272.380 +3 286.157 272.039 291.595 274.980 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 6.182 6.182 0.000 +3 286.100 272.151 290.456 271.131 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 4.474 4.474 0.000 +9 294.390 269.935 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.730 5.112 756.430 +3 286.100 272.151 290.456 271.131 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 4.474 4.474 0.000 +3 286.122 272.240 287.989 269.594 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 3.238 3.238 0.000 +9 289.544 267.057 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.529 3.700 340.480 +3 286.122 272.240 287.989 269.594 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 3.238 3.238 0.000 +3 286.177 272.277 285.917 269.948 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 2.343 2.343 0.000 +9 285.539 267.828 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 2.677 0.382 824.530 +3 286.177 272.277 285.917 269.948 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 2.343 2.343 0.000 +3 286.224 272.270 284.965 271.135 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 1.695 1.695 0.000 +9 283.742 270.169 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 1.938 0.277 408.570 +3 286.224 272.270 284.965 271.135 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 1.695 1.695 0.000 +3 286.247 272.244 285.020 272.235 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 1.227 1.227 0.000 +9 283.894 272.300 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.200 1.402 892.620 +3 286.247 272.244 285.020 272.235 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 1.227 1.227 0.000 +3 286.247 272.219 285.578 272.804 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.889 0.889 0.000 +9 285.000 273.380 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.145 1.015 476.670 +3 286.247 272.219 285.578 272.804 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.889 0.889 0.000 +3 286.234 272.206 286.153 272.843 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.642 0.642 0.000 +9 286.117 273.433 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.105 0.734 60.720 +3 286.234 272.206 286.153 272.843 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.642 0.642 0.000 +3 286.221 272.204 286.484 272.588 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.465 0.465 0.000 +9 286.747 272.925 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.531 0.076 544.770 +3 286.221 272.204 286.484 272.588 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.465 0.465 0.000 +3 286.214 272.210 286.540 272.292 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.336 0.336 0.000 +9 286.845 272.347 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.385 0.055 128.810 +3 286.214 272.210 286.540 272.292 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.336 0.336 0.000 +3 286.212 272.217 286.428 272.104 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.244 0.244 0.000 +9 286.620 271.988 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.040 0.278 612.860 +3 286.212 272.217 286.428 272.104 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.244 0.244 0.000 +3 286.215 272.221 286.277 272.056 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.176 0.176 0.000 +9 286.325 271.901 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.029 0.201 196.910 +3 286.215 272.221 286.277 272.056 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.176 0.176 0.000 +3 286.218 272.222 286.173 272.103 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.127 0.127 0.000 +9 286.124 271.996 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.146 0.021 680.960 +3 286.218 272.222 286.173 272.103 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.127 0.127 0.000 +3 286.220 272.221 286.139 272.178 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.092 0.092 0.000 +9 286.061 272.144 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.105 0.015 265.000 +3 286.220 272.221 286.139 272.178 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.092 0.092 0.000 +3 286.221 272.220 286.156 272.236 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.067 0.067 0.000 +9 286.098 272.254 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.011 0.076 749.050 +3 286.221 272.220 286.156 272.236 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.067 0.067 0.000 +3 286.221 272.218 286.193 272.258 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.049 0.049 0.000 +9 286.171 272.296 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.008 0.055 333.100 +3 286.221 272.218 286.193 272.258 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.049 0.049 0.000 +3 286.220 272.218 286.224 272.252 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.034 0.034 0.000 +9 286.230 272.284 -233.677 -29.637 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.040 0.006 817.150 +3 286.220 272.218 286.224 272.252 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.034 0.034 0.000 +3 286.219 272.218 286.238 272.235 -233.677 -29.637 -233.677 -29.637 0.000 3600.000 1 0 1 0.025 0.025 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test03.epc b/support/latexdraw/test/abbtest/test03.epc new file mode 100644 index 0000000000..94bdca6f00 --- /dev/null +++ b/support/latexdraw/test/abbtest/test03.epc @@ -0,0 +1,19 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 4.27207E-01 (TEXFAKTOR) + 3.00000E+00 (TEXDASHLAENGE) + 2.00000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +8 259.333 172.333 33.333 -66.667 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 52.000 10.000 0.000 +3 253.333 99.333 359.333 155.333 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 119.883 119.883 0.000 +8 317.017 63.147 33.333 -66.667 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 52.000 10.000 556.950 +10 382.333 38.333 33.333 -66.667 358.928 48.509 405.268 51.885 1672.191 171.346 1 0 1 24.000 46.000 0.000 +3 399.333 93.333 451.333 58.333 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 62.682 62.682 0.000 +10 275.648 240.273 33.333 -66.667 299.769 251.580 270.863 215.204 3428.654 1927.809 1 0 1 24.000 46.000 556.950 +3 330.662 223.318 331.057 285.999 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 62.682 62.682 0.000 +7 473.333 119.333 33.333 -66.667 509.389 119.333 472.549 83.286 0.000 2687.546 1 0 1 36.056 36.056 0.000 +5 520.333 31.333 33.333 -66.667 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 38.118 38.118 0.000 +6 446.333 7.333 33.333 -66.667 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 15.620 15.620 0.000 +7 393.845 269.793 33.333 -66.667 363.626 289.462 414.166 299.577 1469.405 556.952 1 0 1 36.056 36.056 0.000 +5 347.642 358.213 33.333 -66.667 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 38.118 38.118 0.000 +6 286.111 310.612 33.333 -66.667 33.333 -66.667 33.333 -66.667 0.000 3600.000 1 0 1 15.620 15.620 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test04.epc b/support/latexdraw/test/abbtest/test04.epc new file mode 100644 index 0000000000..6325d658f1 --- /dev/null +++ b/support/latexdraw/test/abbtest/test04.epc @@ -0,0 +1,30 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 2.96286E-01 (TEXFAKTOR) + 2.20000E+00 (TEXDASHLAENGE) + 2.00000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +5 335.666 305.333 66.666 33.333 66.666 33.333 66.666 33.333 0.000 3600.000 1 0 5 30.017 30.017 0.000 +7 458.666 297.333 66.666 33.333 486.531 243.069 397.687 298.938 2971.811 1784.926 1 0 7 61.000 61.000 0.000 +7 305.666 238.333 66.666 33.333 287.003 209.895 292.511 269.701 2367.251 1127.510 1 0 3 34.015 34.015 0.000 +10 413.666 185.333 66.666 33.333 423.044 167.516 426.735 202.977 2781.685 785.788 1 0 3 66.000 18.000 0.000 +8 331.666 148.333 66.666 33.333 66.666 33.333 66.666 33.333 0.000 3600.000 1 0 5 59.000 22.000 0.000 +8 515.666 172.333 66.666 33.333 66.666 33.333 66.666 33.333 0.000 3600.000 1 0 7 65.000 18.000 0.000 +10 388.666 229.333 66.666 33.333 384.490 250.212 382.447 208.602 961.466 2608.238 1 0 3 39.000 21.000 0.000 +12 206.666 264.333 266.666 242.333 238.666 296.333 215.666 298.333 0.000 3600.000 1 0 3 0.000 0.000 0.000 +10 478.666 119.333 66.666 33.333 504.707 135.825 499.431 102.276 663.828 2886.302 1 3 3 65.000 18.000 0.000 +7 221.333 335.333 33.333 33.333 237.386 366.435 236.479 303.780 627.004 2956.410 1 0 1 35.000 35.000 0.000 +7 455.333 291.333 33.333 33.333 456.303 259.332 461.820 322.685 2717.357 783.106 1 3 1 32.016 32.016 0.000 +10 501.333 216.333 33.333 33.333 529.090 230.815 488.707 199.822 584.176 2562.184 1 3 1 53.000 17.000 0.000 +7 221.333 187.333 33.333 33.333 176.592 201.766 243.937 228.553 1621.213 612.602 1 3 5 47.011 47.011 0.000 +7 558.333 314.333 33.333 33.333 563.792 348.905 565.667 280.110 810.274 2820.948 1 1 5 35.000 35.000 0.000 +3 277.333 366.333 361.333 372.333 33.333 33.333 33.333 33.333 0.000 3600.000 1 1 5 84.214 84.214 0.000 +7 580.333 244.333 33.333 33.333 592.809 271.781 590.805 216.060 655.560 2903.231 1 2 5 30.150 30.150 0.000 +10 257.333 336.333 33.333 33.333 260.073 325.371 266.069 346.941 2747.636 746.499 1 2 5 33.000 11.000 0.000 +10 216.333 105.333 33.333 33.333 222.166 95.417 226.095 115.095 2774.474 774.712 1 3 5 45.000 10.000 0.000 +10 325.333 83.333 33.333 33.333 346.290 72.855 335.686 94.980 2991.676 760.683 1 2 5 43.000 12.000 0.000 +3 376.333 361.333 449.333 368.333 33.333 33.333 33.333 33.333 0.000 3600.000 1 3 5 73.335 73.335 0.000 +10 164.333 137.000 33.333 0.000 197.701 131.321 145.141 148.373 3007.055 1049.639 1 0 5 60.118 16.584 152.550 +3 464.333 53.000 552.333 77.000 33.333 0.000 33.333 0.000 0.000 3600.000 1 0 1 91.214 91.214 0.000 +10 541.333 103.000 33.333 0.000 503.975 82.938 527.947 112.068 2299.855 994.290 1 0 5 64.264 12.438 152.550 +12 306.333 234.333 393.333 226.333 357.000 268.000 293.000 272.000 0.000 3600.000 1 3 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test05.epc b/support/latexdraw/test/abbtest/test05.epc new file mode 100644 index 0000000000..f774a732e0 --- /dev/null +++ b/support/latexdraw/test/abbtest/test05.epc @@ -0,0 +1,41 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 4.04676E-01 (TEXFAKTOR) + 2.20000E+00 (TEXDASHLAENGE) + 2.00000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +2 436.667 242.333 436.667 242.333 436.667 242.333 540.667 242.333 0.000 3600.000 1 0 1 13.000 0.000 0.000 +Anfangspfeile +3 170.000 242.333 170.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 66.667 66.667 0.000 +3 203.333 275.666 270.000 275.666 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 66.667 66.667 0.000 +3 270.000 342.333 203.333 342.333 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 66.667 66.667 0.000 +3 236.667 375.666 236.667 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 66.666 66.666 0.000 +3 270.000 209.000 436.667 209.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 166.667 166.667 0.000 +3 270.000 175.666 270.000 142.333 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 33.333 33.333 0.000 +3 270.000 209.000 303.333 242.333 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 47.140 47.140 0.000 +3 270.000 209.000 236.667 242.333 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 47.140 47.140 0.000 +3 270.000 209.000 203.333 209.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 66.667 66.667 0.000 +3 270.000 209.000 236.667 175.666 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 47.141 47.141 0.000 +3 270.000 209.000 303.333 175.666 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 47.141 47.141 0.000 +3 270.000 209.000 370.000 242.333 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 105.409 105.409 0.000 +3 270.000 209.000 270.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 100.000 100.000 0.000 +3 270.000 209.000 403.333 175.666 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 137.437 137.437 0.000 +3 270.000 209.000 303.333 109.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 105.409 105.409 0.000 +3 270.000 209.000 236.667 109.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 105.409 105.409 0.000 +3 270.000 209.000 170.000 175.666 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 105.409 105.409 0.000 +3 270.000 209.000 203.333 242.333 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 74.536 74.536 0.000 +3 270.000 209.000 303.333 275.666 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 2 1 74.535 74.535 0.000 +3 403.333 342.333 436.667 375.666 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 3 1 47.141 47.141 0.000 +3 436.667 275.666 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 47.141 47.141 0.000 +3 470.000 275.666 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 33.334 33.334 0.000 +3 503.333 275.666 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 47.141 47.141 0.000 +3 536.667 275.666 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 74.536 74.536 0.000 +3 536.667 309.000 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 66.667 66.667 0.000 +3 536.667 342.333 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 74.536 74.536 0.000 +3 503.333 342.333 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 47.140 47.140 0.000 +3 470.000 342.333 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 33.333 33.333 0.000 +3 436.667 342.333 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 47.140 47.140 0.000 +3 403.333 309.000 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 66.667 66.667 0.000 +3 403.333 275.666 470.000 309.000 -33.333 33.333 -33.333 33.333 0.000 3600.000 1 1 1 74.536 74.536 0.000 +2 203.333 75.666 203.333 75.666 203.333 75.666 275.333 75.666 0.000 3600.000 1 0 1 9.000 0.000 0.000 +Endpfeile +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test06.epc b/support/latexdraw/test/abbtest/test06.epc new file mode 100644 index 0000000000..fe0ececd0f --- /dev/null +++ b/support/latexdraw/test/abbtest/test06.epc @@ -0,0 +1,14 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 3.28409E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +2 203.910 292.045 203.910 292.045 203.910 292.045 267.910 292.045 0.000 3600.000 1 0 1 8.000 0.000 0.000 +lbuendig +2 508.408 264.363 404.408 264.363 404.408 264.363 508.408 264.363 0.000 3600.000 1 0 1 13.000 2.000 0.000 +rechtsbuendig +3 203.910 292.045 397.682 125.955 -161.488 -110.446 -161.488 -110.446 0.000 3600.000 1 0 1 255.213 255.213 0.000 +3 397.682 125.955 508.408 264.363 -161.488 -110.446 -161.488 -110.446 0.000 3600.000 1 0 1 177.248 177.248 0.000 +2 397.682 125.955 321.682 120.455 321.682 125.955 473.682 125.955 0.000 3600.000 1 0 1 19.000 1.000 0.000 +zentriertozentriert +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test07.epc b/support/latexdraw/test/abbtest/test07.epc new file mode 100644 index 0000000000..b51f0c0ef0 --- /dev/null +++ b/support/latexdraw/test/abbtest/test07.epc @@ -0,0 +1,15 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 4.68750E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +8 331.653 189.826 1.866 -50.611 1.866 -50.611 1.866 -50.611 0.000 3600.000 1 0 1 101.620 19.174 0.000 +3 216.611 113.132 504.215 113.132 1.866 -50.611 1.866 -50.611 0.000 3600.000 1 0 1 287.604 287.604 0.000 +3 216.611 113.132 216.611 285.695 1.866 -50.611 1.866 -50.611 0.000 3600.000 1 0 1 172.563 172.563 0.000 +10 465.868 209.000 1.866 -50.611 473.674 224.612 479.578 198.749 804.380 2790.998 1 0 1 68.382 13.439 140.360 +3 293.305 285.695 370.000 304.868 1.866 -50.611 1.866 -50.611 0.000 3600.000 1 0 1 79.055 79.055 0.000 +10 293.305 285.695 1.866 -50.611 329.093 307.982 284.573 268.231 594.987 2607.502 1 0 1 79.055 15.020 140.360 +2 319.382 255.400 319.382 255.400 319.382 255.400 415.382 255.400 0.000 3600.000 1 0 1 12.000 0.000 0.000 +Das ist Text +3 216.611 285.695 504.215 113.132 1.866 -50.611 1.866 -50.611 0.000 3600.000 1 3 1 335.401 335.401 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test08.epc b/support/latexdraw/test/abbtest/test08.epc new file mode 100644 index 0000000000..fe4935fcbd --- /dev/null +++ b/support/latexdraw/test/abbtest/test08.epc @@ -0,0 +1,93 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 4.50001E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +2 414.444 209.000 414.444 209.000 414.444 209.000 467.444 209.000 0.000 3600.000 1 0 1 7.000 0.000 0.000 +Robotik +3 403.333 209.000 396.967 228.593 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.601 20.601 0.000 +3 396.967 228.593 380.301 240.702 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.601 20.601 0.000 +3 380.301 240.702 359.699 240.702 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.602 20.602 0.000 +3 359.699 240.702 343.033 228.593 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.601 20.601 0.000 +3 343.033 228.593 336.667 209.000 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.601 20.601 0.000 +3 336.667 209.000 343.033 189.407 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.601 20.601 0.000 +3 343.033 189.407 359.699 177.298 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.601 20.601 0.000 +3 359.699 177.298 380.301 177.298 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.602 20.602 0.000 +3 380.301 177.298 396.967 189.407 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.601 20.601 0.000 +3 396.967 189.407 403.333 209.000 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 20.601 20.601 0.000 +3 370.000 209.000 403.333 209.000 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.333 33.333 0.000 +3 370.000 209.000 396.967 228.593 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.333 33.333 0.000 +2 470.000 209.000 464.000 202.500 464.000 209.000 476.000 209.000 0.000 3600.000 1 0 1 1.000 1.000 0.000 +O +2 514.444 209.000 475.444 209.000 475.444 209.000 514.444 209.000 0.000 3600.000 1 0 1 6.000 2.000 0.000 +rechts +5 370.000 209.000 167.778 103.000 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 44.444 44.444 0.000 +5 370.000 209.000 167.778 103.000 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 100.000 100.000 0.000 +5 370.000 209.000 167.778 103.000 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 144.444 144.444 0.000 +2 405.956 235.124 405.956 235.124 405.956 235.124 448.834 266.277 0.000 3600.000 1 0 1 7.000 0.000 360.000 +Robotik +3 370.000 209.000 380.301 240.702 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.334 33.334 0.000 +2 450.902 267.779 444.902 261.279 446.048 264.252 455.756 271.306 0.000 3600.000 1 0 1 1.000 1.000 360.000 +O +2 383.734 251.269 383.734 251.269 383.734 251.269 400.112 301.675 0.000 3600.000 1 0 1 7.000 0.000 720.000 +Robotik +3 370.000 209.000 359.699 240.702 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.334 33.334 0.000 +2 400.902 304.106 394.902 297.606 399.048 298.400 402.756 309.812 0.000 3600.000 1 0 1 1.000 1.000 720.000 +O +2 356.266 251.269 356.266 251.269 356.266 251.269 339.888 301.675 0.000 3600.000 1 0 1 7.000 0.000 1080.000 +Robotik +3 370.000 209.000 343.033 228.593 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.333 33.333 0.000 +2 339.098 304.106 333.098 297.606 340.952 298.400 337.244 309.812 0.000 3600.000 1 0 1 1.000 1.000 1080.000 +O +2 334.044 235.124 334.044 235.124 334.044 235.124 291.166 266.277 0.000 3600.000 1 0 1 7.000 0.000 1440.000 +Robotik +3 370.000 209.000 336.667 209.000 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.333 33.333 0.000 +2 289.098 267.779 283.098 261.279 293.952 264.252 284.244 271.306 0.000 3600.000 1 0 1 1.000 1.000 1440.000 +O +2 325.556 209.000 325.556 209.000 325.556 209.000 272.556 209.000 0.000 3600.000 1 0 1 7.000 0.000 1800.000 +Robotik +3 370.000 209.000 343.033 189.407 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.333 33.333 0.000 +2 270.000 209.000 264.000 202.500 276.000 209.000 264.000 209.000 0.000 3600.000 1 0 1 1.000 1.000 1800.000 +O +2 334.044 182.876 334.044 182.876 334.044 182.876 291.166 151.723 0.000 3600.000 1 0 1 7.000 0.000 2160.000 +Robotik +3 370.000 209.000 359.699 177.298 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.334 33.334 0.000 +2 356.266 166.731 356.266 166.731 356.266 166.731 339.888 116.325 0.000 3600.000 1 0 1 7.000 0.000 2520.000 +Robotik +3 370.000 209.000 380.301 177.298 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.334 33.334 0.000 +2 383.734 166.731 383.734 166.731 383.734 166.731 400.112 116.325 0.000 3600.000 1 0 1 7.000 0.000 2880.000 +Robotik +3 370.000 209.000 396.967 189.407 167.778 103.000 167.778 103.000 0.000 3600.000 1 0 1 33.333 33.333 0.000 +2 405.956 182.876 405.956 182.876 405.956 182.876 448.834 151.723 0.000 3600.000 1 0 1 7.000 0.000 3240.000 +Robotik +2 414.444 209.000 414.444 209.000 414.444 209.000 467.444 209.000 0.000 3600.000 1 0 1 7.000 0.000 3600.000 +Robotik +2 486.858 293.902 447.858 293.902 455.306 270.978 486.858 293.902 0.000 3600.000 1 0 1 6.000 2.000 360.000 +rechts +2 414.636 346.375 375.636 346.375 402.584 309.284 414.636 346.375 0.000 3600.000 1 0 1 6.000 2.000 720.000 +rechts +2 325.364 346.375 286.364 346.375 337.416 309.284 325.364 346.375 0.000 3600.000 1 0 1 6.000 2.000 1080.000 +rechts +2 253.142 293.902 214.142 293.902 284.694 270.978 253.142 293.902 0.000 3600.000 1 0 1 6.000 2.000 1440.000 +rechts +2 289.098 150.221 283.098 143.721 293.952 153.748 284.244 146.694 0.000 3600.000 1 0 1 1.000 1.000 2160.000 +O +2 225.556 209.000 186.556 209.000 264.556 209.000 225.556 209.000 0.000 3600.000 1 0 1 6.000 2.000 1800.000 +rechts +2 339.098 113.894 333.098 107.394 340.952 119.600 337.244 108.188 0.000 3600.000 1 0 1 1.000 1.000 2520.000 +O +2 253.142 124.098 214.142 124.098 284.694 147.022 253.142 124.098 0.000 3600.000 1 0 1 6.000 2.000 2160.000 +rechts +2 400.902 113.894 394.902 107.394 399.048 119.600 402.756 108.188 0.000 3600.000 1 0 1 1.000 1.000 2880.000 +O +2 325.364 71.625 286.364 71.625 337.416 108.716 325.364 71.625 0.000 3600.000 1 0 1 6.000 2.000 2520.000 +rechts +2 414.636 71.625 375.636 71.625 402.584 108.716 414.636 71.625 0.000 3600.000 1 0 1 6.000 2.000 2880.000 +rechts +2 450.902 150.221 444.902 143.721 446.048 153.748 455.756 146.694 0.000 3600.000 1 0 1 1.000 1.000 3240.000 +O +2 486.858 124.098 447.858 124.098 455.306 147.022 486.858 124.098 0.000 3600.000 1 0 1 6.000 2.000 3240.000 +rechts +2 514.444 209.000 475.444 209.000 475.444 209.000 514.444 209.000 0.000 3600.000 1 0 1 6.000 2.000 3600.000 +rechts +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test09.epc b/support/latexdraw/test/abbtest/test09.epc new file mode 100644 index 0000000000..9aa8f73df5 --- /dev/null +++ b/support/latexdraw/test/abbtest/test09.epc @@ -0,0 +1,44 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 4.78722E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +11 436.667 209.000 470.000 214.000 470.000 209.000 436.667 214.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 420.000 209.000 405.355 244.355 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 38.268 38.268 0.000 +3 405.355 244.355 370.000 259.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 38.268 38.268 0.000 +3 370.000 259.000 334.645 244.355 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 38.268 38.268 0.000 +3 334.645 244.355 320.000 209.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 38.268 38.268 0.000 +3 320.000 209.000 334.645 173.645 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 38.268 38.268 0.000 +3 334.645 173.645 370.000 159.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 38.268 38.268 0.000 +3 370.000 159.000 405.355 173.645 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 38.268 38.268 0.000 +3 405.355 173.645 420.000 209.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 38.268 38.268 0.000 +3 370.000 209.000 420.000 209.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 50.000 50.000 0.000 +3 370.000 209.000 405.355 244.355 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 50.000 50.000 0.000 +2 486.667 209.000 486.667 209.000 486.667 209.000 526.667 209.000 0.000 3600.000 1 0 1 5.000 0.000 0.000 +Hallo +11 417.140 256.140 437.175 283.246 440.711 279.711 413.605 259.676 0.000 3600.000 1 0 1 0.000 0.000 450.000 +3 370.000 209.000 370.000 259.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 50.000 50.000 0.000 +2 452.496 291.496 452.496 291.496 452.496 291.496 480.780 319.780 0.000 3600.000 1 0 1 5.000 0.000 450.000 +Hallo +11 370.000 275.667 365.000 309.000 370.000 309.000 365.000 275.667 0.000 3600.000 1 0 1 0.000 0.000 900.000 +3 370.000 209.000 334.645 244.355 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 50.000 50.000 0.000 +2 370.000 325.667 370.000 325.667 370.000 325.667 370.000 365.667 0.000 3600.000 1 0 1 5.000 0.000 900.000 +Hallo +11 322.860 256.140 295.754 276.175 299.289 279.711 319.324 252.605 0.000 3600.000 1 0 1 0.000 0.000 1350.000 +3 370.000 209.000 320.000 209.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 50.000 50.000 0.000 +2 287.504 291.496 287.504 291.496 287.504 291.496 259.220 319.780 0.000 3600.000 1 0 1 5.000 0.000 1350.000 +Hallo +11 303.333 209.000 270.000 204.000 270.000 209.000 303.333 204.000 0.000 3600.000 1 0 1 0.000 0.000 1800.000 +3 370.000 209.000 334.645 173.645 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 50.000 50.000 0.000 +2 253.333 209.000 253.333 209.000 253.333 209.000 213.333 209.000 0.000 3600.000 1 0 1 5.000 0.000 1800.000 +Hallo +11 322.860 161.860 302.825 134.754 299.289 138.289 326.395 158.324 0.000 3600.000 1 0 1 0.000 0.000 2250.000 +2 287.504 126.504 287.504 126.504 287.504 126.504 259.220 98.220 0.000 3600.000 1 0 1 5.000 0.000 2250.000 +Hallo +11 370.000 142.333 375.000 109.000 370.000 109.000 375.000 142.333 0.000 3600.000 1 0 1 0.000 0.000 2700.000 +2 370.000 92.333 370.000 92.333 370.000 92.333 370.000 52.333 0.000 3600.000 1 0 1 5.000 0.000 2700.000 +Hallo +11 417.140 161.860 444.246 141.825 440.711 138.289 420.676 165.395 0.000 3600.000 1 0 1 0.000 0.000 3150.000 +2 452.496 126.504 452.496 126.504 452.496 126.504 480.780 98.220 0.000 3600.000 1 0 1 5.000 0.000 3150.000 +Hallo +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test10.epc b/support/latexdraw/test/abbtest/test10.epc new file mode 100644 index 0000000000..3f1928eb1c --- /dev/null +++ b/support/latexdraw/test/abbtest/test10.epc @@ -0,0 +1,23 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 2.54030E-01 (TEXFAKTOR) + 2.20000E+00 (TEXDASHLAENGE) + 2.00000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +8 350.057 156.286 127.367 59.647 127.367 59.647 127.367 59.647 0.000 3600.000 1 0 5 49.571 18.491 0.000 +8 504.671 176.459 127.367 59.647 127.367 59.647 127.367 59.647 0.000 3600.000 1 0 7 54.617 15.127 0.000 +10 473.588 131.912 127.367 59.647 495.469 145.772 491.036 117.578 663.828 2886.302 1 3 3 54.617 15.127 0.000 +7 257.340 313.429 99.368 59.647 270.830 339.566 270.068 286.913 627.004 2956.410 1 0 1 29.413 29.413 0.000 +7 257.340 189.057 99.368 59.647 219.744 201.185 276.335 223.695 1621.213 612.602 1 3 5 39.504 39.504 0.000 +10 287.593 314.262 99.368 59.647 289.896 305.053 294.934 323.173 2747.636 746.499 1 2 5 27.732 9.241 0.000 +10 253.141 120.161 99.368 59.647 258.043 111.839 261.345 128.354 2774.474 774.712 1 3 5 37.820 8.393 0.000 +10 344.739 101.669 99.368 59.647 362.346 92.860 353.437 111.460 2991.676 760.683 1 2 5 36.126 10.088 0.000 +10 209.443 146.765 99.368 31.635 237.481 141.995 193.317 156.318 3007.055 1049.639 1 0 5 50.517 13.932 152.550 +3 461.533 76.175 535.485 96.340 99.368 31.635 99.368 31.635 0.000 3600.000 1 0 1 76.652 76.652 0.000 +10 526.237 118.186 99.368 31.635 494.846 101.328 514.989 125.806 2299.855 994.290 1 0 5 53.999 10.452 152.550 +5 400.000 366.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 3 47.381 47.381 0.000 +8 497.000 381.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 3 88.000 25.000 0.000 +8 507.000 302.333 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 3 0 3 72.000 16.667 0.000 +5 223.667 402.333 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 3 0 3 42.354 42.354 0.000 +5 173.667 252.333 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 7 33.333 33.333 0.000 +5 157.000 169.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 3 0 7 44.385 44.385 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test11.epc b/support/latexdraw/test/abbtest/test11.epc new file mode 100644 index 0000000000..5fb4b2b9ed --- /dev/null +++ b/support/latexdraw/test/abbtest/test11.epc @@ -0,0 +1,122 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 3.21429E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +2 162.000 587.583 162.000 587.583 162.000 587.583 210.000 587.583 0.000 3600.000 1 0 1 6.000 0.000 0.000 +normal +3 128.667 620.917 595.333 620.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 466.666 466.666 0.000 +2 162.000 554.250 162.000 554.250 162.000 554.250 180.000 554.250 0.000 3600.000 1 0 0 5.000 0.000 0.000 +sechs +2 162.000 520.917 162.000 520.917 162.000 520.917 179.000 520.917 0.000 3600.000 1 0 2 4.000 0.000 0.000 +acht +2 162.000 487.583 162.000 487.583 162.000 487.583 189.000 487.583 0.000 3600.000 1 0 3 4.000 0.000 0.000 +zehn +2 162.000 454.250 162.000 454.250 162.000 454.250 210.000 454.250 0.000 3600.000 1 0 4 6.000 0.000 0.000 +zwoelf +2 162.000 420.917 162.000 420.917 162.000 420.917 226.000 420.917 0.000 3600.000 1 0 5 8.000 0.000 0.000 +vierzehn +2 162.000 387.583 162.000 387.583 162.000 387.583 251.000 387.583 0.000 3600.000 1 0 6 8.000 0.000 0.000 +achtzehn +2 278.667 554.250 278.667 554.250 278.667 554.250 302.667 554.250 0.000 3600.000 1 0 7 7.000 0.000 0.000 +sechs b +2 278.667 520.917 278.667 520.917 278.667 520.917 304.667 520.917 0.000 3600.000 1 0 8 6.000 0.000 0.000 +acht b +2 278.667 487.583 278.667 487.583 278.667 487.583 320.667 487.583 0.000 3600.000 1 0 9 6.000 0.000 0.000 +zehn b +2 278.667 454.250 278.667 454.250 278.667 454.250 340.667 454.250 0.000 3600.000 1 0 10 8.000 0.000 0.000 +zwoelf b +2 278.667 420.917 278.667 420.917 278.667 420.917 358.667 420.917 0.000 3600.000 1 0 11 10.000 0.000 0.000 +vierzehn b +2 278.667 387.583 278.667 387.583 278.667 387.583 392.667 387.583 0.000 3600.000 1 0 12 10.000 0.000 0.000 +achtzehn b +2 428.667 554.250 428.667 554.250 428.667 554.250 450.667 554.250 0.000 3600.000 1 0 13 7.000 0.000 0.000 +sechs i +2 428.667 520.917 428.667 520.917 428.667 520.917 451.667 520.917 0.000 3600.000 1 0 14 6.000 0.000 0.000 +acht i +2 428.667 487.583 428.667 487.583 428.667 487.583 462.667 487.583 0.000 3600.000 1 0 15 6.000 0.000 0.000 +zehn i +2 428.667 454.250 428.667 454.250 428.667 454.250 484.667 454.250 0.000 3600.000 1 0 16 8.000 0.000 0.000 +zwoelf i +2 428.667 420.917 428.667 420.917 428.667 420.917 508.667 420.917 0.000 3600.000 1 0 17 10.000 0.000 0.000 +vierzehn i +2 428.667 387.583 428.667 387.583 428.667 387.583 531.667 387.583 0.000 3600.000 1 0 18 10.000 0.000 0.000 +achtzehn i +3 162.000 587.583 208.000 587.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 46.000 46.000 0.000 +3 208.000 587.583 208.000 595.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 7.417 7.417 0.000 +3 208.000 595.000 162.000 595.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 46.000 46.000 0.000 +3 162.000 595.000 162.000 587.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 7.417 7.417 0.000 +3 162.000 554.250 179.000 554.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 17.000 17.000 0.000 +3 179.000 554.250 179.000 558.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 3.750 3.750 0.000 +3 179.000 558.000 162.000 558.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 17.000 17.000 0.000 +3 162.000 558.000 162.000 554.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 3.750 3.750 0.000 +3 162.000 520.917 179.000 520.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 17.000 17.000 0.000 +3 179.000 520.917 179.000 526.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 5.083 5.083 0.000 +3 179.000 526.000 162.000 526.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 17.000 17.000 0.000 +3 162.000 526.000 162.000 520.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 5.083 5.083 0.000 +3 162.000 487.583 189.000 487.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 27.000 27.000 0.000 +3 189.000 487.583 189.000 496.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 8.417 8.417 0.000 +3 189.000 496.000 162.000 496.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 27.000 27.000 0.000 +3 162.000 496.000 162.000 487.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 8.417 8.417 0.000 +3 162.000 454.250 208.000 454.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 46.000 46.000 0.000 +3 208.000 454.250 208.000 462.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 7.750 7.750 0.000 +3 208.000 462.000 162.000 462.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 46.000 46.000 0.000 +3 162.000 462.000 162.000 454.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 7.750 7.750 0.000 +3 162.000 420.917 226.000 420.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 64.000 64.000 0.000 +3 226.000 420.917 226.000 431.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 10.083 10.083 0.000 +3 226.000 431.000 162.000 431.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 64.000 64.000 0.000 +3 162.000 431.000 162.000 420.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 10.083 10.083 0.000 +3 162.000 387.583 251.000 387.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 89.000 89.000 0.000 +3 251.000 387.583 251.000 400.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 12.417 12.417 0.000 +3 251.000 400.000 162.000 400.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 89.000 89.000 0.000 +3 162.000 400.000 162.000 387.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 12.417 12.417 0.000 +3 278.667 554.250 303.000 554.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 24.333 24.333 0.000 +3 303.000 554.250 303.000 559.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 4.750 4.750 0.000 +3 303.000 559.000 278.667 559.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 24.333 24.333 0.000 +3 278.667 559.000 278.667 554.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 4.750 4.750 0.000 +3 278.667 520.917 305.000 520.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 26.333 26.333 0.000 +3 305.000 520.917 305.000 527.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 6.083 6.083 0.000 +3 305.000 527.000 278.667 527.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 26.333 26.333 0.000 +3 278.667 527.000 278.667 520.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 6.083 6.083 0.000 +3 278.667 487.583 322.000 487.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 43.333 43.333 0.000 +3 322.000 487.583 322.000 496.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 8.417 8.417 0.000 +3 322.000 496.000 278.667 496.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 43.333 43.333 0.000 +3 278.667 496.000 278.667 487.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 8.417 8.417 0.000 +3 278.667 454.250 337.000 454.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 58.333 58.333 0.000 +3 337.000 454.250 337.000 463.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 8.750 8.750 0.000 +3 337.000 463.000 278.667 463.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 58.333 58.333 0.000 +3 278.667 463.000 278.667 454.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 8.750 8.750 0.000 +3 278.667 420.917 361.000 420.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 82.333 82.333 0.000 +3 361.000 420.917 361.000 432.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 11.083 11.083 0.000 +3 361.000 432.000 278.667 432.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 82.333 82.333 0.000 +3 278.667 432.000 278.667 420.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 11.083 11.083 0.000 +3 278.667 387.583 393.000 387.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 114.333 114.333 0.000 +3 278.667 387.583 393.000 387.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 114.333 114.333 0.000 +3 393.000 387.583 393.000 400.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 12.417 12.417 0.000 +3 393.000 400.000 278.667 400.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 114.333 114.333 0.000 +3 278.667 400.000 278.667 387.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 12.417 12.417 0.000 +3 428.667 554.250 453.000 554.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 24.333 24.333 0.000 +3 453.000 554.250 453.000 559.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 4.750 4.750 0.000 +3 453.000 559.000 428.667 559.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 24.333 24.333 0.000 +3 428.667 559.000 428.667 554.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 4.750 4.750 0.000 +3 428.667 520.917 452.000 520.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 23.333 23.333 0.000 +3 452.000 520.917 452.000 526.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 5.083 5.083 0.000 +3 452.000 526.000 428.667 526.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 23.333 23.333 0.000 +3 428.667 526.000 428.667 520.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 5.083 5.083 0.000 +3 428.667 487.583 464.000 487.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 35.333 35.333 0.000 +3 464.000 487.583 464.000 496.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 8.417 8.417 0.000 +3 464.000 496.000 428.667 496.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 35.333 35.333 0.000 +3 428.667 496.000 428.667 487.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 8.417 8.417 0.000 +3 428.667 454.250 481.000 454.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 52.333 52.333 0.000 +3 481.000 454.250 481.000 462.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 7.750 7.750 0.000 +3 481.000 462.000 428.667 462.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 52.333 52.333 0.000 +3 428.667 462.000 428.667 454.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 7.750 7.750 0.000 +3 428.667 420.917 502.000 420.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 73.333 73.333 0.000 +3 502.000 420.917 502.000 431.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 10.083 10.083 0.000 +3 502.000 431.000 428.667 431.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 73.333 73.333 0.000 +3 428.667 431.000 428.667 420.917 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 10.083 10.083 0.000 +3 428.667 387.583 532.000 387.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 103.333 103.333 0.000 +3 532.000 387.583 532.000 398.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 10.417 10.417 0.000 +3 532.000 398.000 428.667 398.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 103.333 103.333 0.000 +3 428.667 398.000 428.667 387.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 10.417 10.417 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test12.epc b/support/latexdraw/test/abbtest/test12.epc new file mode 100644 index 0000000000..65b9f39303 --- /dev/null +++ b/support/latexdraw/test/abbtest/test12.epc @@ -0,0 +1,59 @@ +LaTeXdraw (Siegert, TUM, C11.4) + 2.12834E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 564.250 20.583 1.000 0.000 0.000 1.000 (GITTERWERTE) +92.808 -201.667 797.583 470.583 704.775 672.250 150.000 200.000 1 1 (AUSGABEOPTIONEN) +3 247.000 228.333 357.000 287.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 10 0 1 124.824 124.824 0.000 +3 328.667 170.916 473.000 243.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 1 0 1 161.481 161.481 0.000 +3 278.667 137.583 325.000 163.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 2 0 1 53.008 53.008 0.000 +3 254.000 21.333 319.000 52.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 3 0 1 72.014 72.014 0.000 +3 225.000 15.333 301.000 65.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 4 0 1 90.973 90.973 0.000 +3 206.000 32.333 293.000 96.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 0 1 108.005 108.005 0.000 +3 195.000 45.333 264.000 99.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 6 0 1 87.618 87.618 0.000 +3 204.000 118.333 253.000 150.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 7 0 1 58.523 58.523 0.000 +3 137.000 147.333 232.000 165.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 8 0 1 96.690 96.690 0.000 +3 395.333 104.250 445.333 120.916 0.000 -266.667 0.000 -266.667 0.000 3600.000 9 0 1 52.704 52.704 0.000 +3 408.000 65.333 471.000 81.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 9 0 1 65.000 65.000 0.000 +3 162.000 -45.750 289.000 -28.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 1 2 1 128.144 128.144 0.000 +3 226.000 -17.667 334.000 -7.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 2 2 1 108.462 108.462 0.000 +3 354.000 -42.667 503.000 -1.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 3 2 1 154.538 154.538 0.000 +3 302.000 -85.667 372.000 -12.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 4 2 1 101.139 101.139 0.000 +3 395.333 -95.750 412.000 20.916 0.000 -266.667 0.000 -266.667 0.000 3600.000 4 2 1 117.851 117.851 0.000 +3 284.000 -33.667 345.333 20.916 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 2 1 82.104 82.104 0.000 +3 417.000 179.333 417.000 324.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 6 2 1 145.000 145.000 0.000 +3 366.000 210.333 516.000 297.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 7 2 1 173.404 173.404 0.000 +3 228.667 -79.084 168.000 8.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 8 2 1 106.406 106.406 0.000 +3 286.000 -90.667 359.000 49.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 9 2 1 157.889 157.889 0.000 +3 346.000 109.333 445.333 154.250 0.000 -266.667 0.000 -266.667 0.000 3600.000 10 2 1 109.016 109.016 0.000 +5 158.000 261.333 0.000 -266.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 0 1 65.192 65.192 0.000 +12 189.000 247.333 322.000 176.333 253.000 299.333 181.000 295.333 0.000 3600.000 5 0 1 0.000 0.000 0.000 +8 282.000 333.333 0.000 -266.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 0 3 92.000 26.000 0.000 +3 250.000 -153.667 328.667 -145.750 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 0 7 79.064 79.064 0.000 +3 240.000 -119.667 378.667 -129.084 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 0 5 138.986 138.986 0.000 +3 212.000 -179.084 389.000 -183.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 0 1 177.059 177.059 0.000 +3 188.000 -136.667 178.667 -62.417 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 0 3 74.834 74.834 0.000 +8 467.000 327.333 0.000 -266.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 9 0 3 88.000 38.000 0.000 +5 512.000 170.916 0.000 -266.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 10 0 3 45.002 45.002 0.000 +3 482.000 -106.667 548.000 -52.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 10 0 7 85.276 85.276 0.000 +3 502.000 -157.667 562.000 -112.417 0.000 -266.667 0.000 -266.667 0.000 3600.000 10 0 5 75.150 75.150 0.000 +3 532.000 -201.667 578.667 -162.417 0.000 -266.667 0.000 -266.667 0.000 3600.000 10 0 3 60.978 60.978 0.000 +10 534.000 23.333 0.000 -266.667 580.317 38.110 487.107 29.195 97.788 1761.368 5 3 1 47.000 87.000 0.000 +3 145.333 70.916 165.000 97.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 3 0 1 32.934 32.934 0.000 +3 128.667 37.583 168.000 47.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 4 0 1 40.523 40.523 0.000 +3 190.000 4.333 195.333 104.250 0.000 -266.667 0.000 -266.667 0.000 3600.000 1 0 1 100.059 100.059 0.000 +3 448.000 28.333 509.000 75.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 1 1 77.006 77.006 0.000 +3 338.000 67.333 310.000 116.333 0.000 -266.667 0.000 -266.667 0.000 3600.000 5 3 1 56.436 56.436 0.000 +2 647.000 7.333 647.000 7.333 647.000 7.333 684.000 7.333 0.000 3600.000 1 0 3 6.000 0.000 0.000 +askpol +2 666.000 63.333 666.000 63.333 666.000 63.333 678.888 72.814 0.000 3600.000 1 0 3 3.000 0.000 363.394 +tre +8 300.000 400.333 0.000 -266.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 9 0 3 95.333 22.000 0.000 +8 524.000 11.333 0.000 -266.667 0.000 -266.667 0.000 -266.667 0.000 3600.000 10 0 3 95.333 26.250 0.000 +2 616.000 -83.667 616.000 -83.667 616.000 -83.667 735.000 -83.667 0.000 3600.000 1 0 1 18.000 0.000 0.000 +ruhe r\"uhe r"uhle +12 627.000 92.333 789.000 111.333 742.000 170.333 647.583 187.250 0.000 3600.000 1 3 7 0.000 0.000 0.000 +12 613.000 131.333 797.583 203.917 697.583 220.583 623.000 232.333 0.000 3600.000 13 3 7 0.000 0.000 0.000 +8 597.583 437.250 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 13 0 7 133.417 33.333 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test13.epc b/support/latexdraw/test/abbtest/test13.epc new file mode 100644 index 0000000000..8c44094030 --- /dev/null +++ b/support/latexdraw/test/abbtest/test13.epc @@ -0,0 +1,9 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 2.98630E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +8 316.000 268.500 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 106.791 49.494 345.085 +3 228.000 208.000 404.000 329.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +5 540.333 268.750 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 70.711 70.711 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test14.epc b/support/latexdraw/test/abbtest/test14.epc new file mode 100644 index 0000000000..177c207f95 --- /dev/null +++ b/support/latexdraw/test/abbtest/test14.epc @@ -0,0 +1,15 @@ +LaTeXdraw (Siegert, TUM, CV6.4) + 3.82653E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +12 265.000 244.000 423.667 202.083 323.667 302.083 419.000 300.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 497.000 220.000 655.000 174.000 657.000 330.000 469.000 338.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 349.000 84.000 506.000 62.000 489.000 144.000 272.000 178.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 428.000 308.000 300.000 329.000 518.000 370.000 296.000 442.000 0.000 3600.000 5 2 1 0.000 0.000 0.000 +3 265.000 244.000 423.667 202.083 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 423.667 202.083 349.000 84.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 506.000 62.000 655.000 174.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 497.000 220.000 428.000 308.000 0.000 0.000 0.000 0.000 0.000 3600.000 5 2 1 0.000 0.000 0.000 +3 300.000 329.000 265.000 244.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test15.epc b/support/latexdraw/test/abbtest/test15.epc new file mode 100644 index 0000000000..e33dfdad7c --- /dev/null +++ b/support/latexdraw/test/abbtest/test15.epc @@ -0,0 +1,24 @@ +LaTeXdraw (Siegert, TUM, C7.1) + 2.31006E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +6 163.333 480.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 16.667 16.667 0.000 +6 196.667 446.667 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 101 0 1 17.829 17.829 0.000 +6 274.000 406.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 201 0 1 14.174 14.174 0.000 +6 313.333 363.333 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 301 0 1 23.570 23.570 0.000 +6 313.333 280.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 401 0 1 11.141 11.141 0.000 +6 396.667 246.667 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 501 0 1 16.667 16.667 0.000 +6 463.333 230.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 601 0 1 16.667 16.667 0.000 +6 414.000 185.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 701 0 1 13.601 13.601 0.000 +11 380.000 113.333 430.000 130.000 430.000 113.333 380.000 130.000 0.000 3600.000 801 0 1 0.000 0.000 0.000 +11 302.000 76.000 342.000 92.000 342.000 76.000 302.000 92.000 0.000 3600.000 901 0 1 0.000 0.000 0.000 +14 384.000 40.000 456.000 88.000 462.000 39.000 425.000 59.000 0.000 3600.000 1401 0 1 0.000 0.000 0.000 +6 575.000 447.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1401 0 1 63.467 63.467 0.000 +6 613.333 313.083 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1801 0 1 17.596 17.596 0.000 +9 716.000 252.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 2101 0 1 47.333 27.000 0.000 +11 613.333 196.417 696.667 213.083 696.667 196.417 613.333 213.083 0.000 3600.000 2401 0 1 0.000 0.000 0.000 +13 596.000 156.000 671.000 131.000 607.000 108.000 0.000 0.000 0.000 3600.000 2601 0 1 0.000 0.000 0.000 +14 713.333 113.083 796.000 122.000 774.000 80.000 718.000 72.000 0.000 3600.000 2801 0 1 0.000 0.000 0.000 +12 240.000 193.000 348.000 207.000 263.333 279.750 240.000 255.000 0.000 3600.000 3001 0 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test16.epc b/support/latexdraw/test/abbtest/test16.epc new file mode 100644 index 0000000000..82e35a04a5 --- /dev/null +++ b/support/latexdraw/test/abbtest/test16.epc @@ -0,0 +1,49 @@ +LaTeXdraw (Siegert, TUM, C7.1) + 2.50721E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +3 160.116 185.598 313.333 246.417 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 1 134.846 134.846 0.000 +3 275.000 165.667 263.333 296.417 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 1 131.269 131.269 0.000 +3 503.000 288.000 542.000 240.000 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 1 61.847 61.847 0.000 +3 429.000 236.667 388.000 197.667 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 1 56.586 56.586 0.000 +3 388.000 197.667 390.000 284.667 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 1 87.023 87.023 0.000 +13 287.000 51.667 340.000 81.667 337.000 33.667 0.000 -133.333 0.000 3600.000 1 0 1 0.000 0.000 0.000 +6 342.000 148.667 0.000 -133.333 0.000 -133.333 0.000 -133.333 0.000 3600.000 301 0 1 86.421 86.421 0.000 +6 342.000 148.667 0.000 -133.333 0.000 -133.333 0.000 -133.333 0.000 3600.000 601 0 1 32.016 32.016 0.000 +13 420.000 148.667 481.000 71.667 519.000 226.667 0.000 -133.333 0.000 3600.000 801 0 1 0.000 0.000 0.000 +14 526.000 168.667 569.000 225.667 647.000 203.667 584.000 86.667 0.000 3600.000 801 0 1 0.000 0.000 0.000 +3 246.667 -20.250 513.333 -20.250 0.000 -133.333 0.000 -133.333 0.000 3600.000 801 0 5 0.000 0.000 0.000 +3 246.667 -36.917 513.333 -36.917 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 5 0.000 0.000 0.000 +2 542.000 344.000 542.000 344.000 542.000 344.000 597.000 344.000 0.000 3600.000 1 0 18 6.000 0.000 0.000 +tyupil +3 246.667 -70.250 513.333 -70.250 0.000 -133.333 0.000 -133.333 0.000 3600.000 408 0 5 0.000 0.000 0.000 +3 246.667 -86.917 513.333 -86.917 0.000 -133.333 0.000 -133.333 0.000 3600.000 408 0 1 0.000 0.000 0.000 +6 267.157 337.216 0.000 -133.333 0.000 -133.333 0.000 -133.333 0.000 3600.000 301 0 1 86.421 86.421 0.000 +6 686.490 363.633 0.000 -133.333 0.000 -133.333 0.000 -133.333 0.000 3600.000 601 0 1 32.016 32.016 0.000 +13 160.604 370.090 219.751 384.605 184.648 417.481 -175.142 307.895 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 395.362 271.160 390.825 332.840 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 1 61.847 61.847 0.000 +3 475.825 306.840 419.239 307.104 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 1 56.586 56.586 0.000 +3 334.239 333.104 395.362 271.160 0.000 -133.333 0.000 -133.333 0.000 3600.000 1 0 1 87.023 87.023 0.000 +14 468.116 324.269 538.502 312.277 580.179 381.782 454.088 423.724 0.000 3600.000 801 0 1 0.000 0.000 0.000 +3 413.333 29.750 206.417 443.582 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 334.239 333.104 329.703 394.784 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 390.825 332.840 329.703 394.784 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 199.000 253.000 357.000 274.000 222.000 338.000 280.000 363.083 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 387.000 446.000 424.539 493.072 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 447.208 446.000 424.539 493.072 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 387.000 446.000 373.602 504.698 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 424.539 493.072 373.602 504.698 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 387.000 446.000 332.754 472.123 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 373.602 504.698 332.754 472.123 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 387.000 446.000 332.754 419.877 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 332.754 472.123 332.754 419.877 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 387.000 446.000 373.602 387.302 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 332.754 419.877 373.602 387.302 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 387.000 446.000 424.539 398.928 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 373.602 387.302 424.539 398.928 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 387.000 446.000 447.208 446.000 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 424.539 398.928 447.208 446.000 0.000 0.000 0.000 0.000 0.000 3600.000 408 0 1 0.000 0.000 0.000 +3 209.000 87.000 152.000 245.000 0.000 0.000 0.000 0.000 0.000 3600.000 304 3 1 0.000 0.000 0.000 +3 248.000 90.000 193.000 226.000 0.000 0.000 0.000 0.000 0.000 3600.000 704 3 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test17.epc b/support/latexdraw/test/abbtest/test17.epc new file mode 100644 index 0000000000..de25dc3055 --- /dev/null +++ b/support/latexdraw/test/abbtest/test17.epc @@ -0,0 +1,51 @@ +LaTeXdraw (Siegert, TUM, C13.14) + 3.00000E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 568.325 294.750 1.000 0.000 0.000 1.000 (GITTERWERTE) +143.000 36.000 771.000 529.000 628.000 493.000 188.400 147.900 1 0 (AUSGABEOPTIONEN) +13 370.000 324.000 475.000 344.000 376.000 442.000 0.000 0.000 0.000 3600.000 1 3 1 0.000 0.000 0.000 +3 407.000 151.000 430.000 90.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 65.192 65.192 0.000 +3 430.000 90.000 523.000 142.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 106.550 106.550 0.000 +3 523.000 142.000 407.000 151.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 116.349 116.349 0.000 +3 247.000 186.000 301.000 410.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 230.417 230.417 0.000 +3 301.000 410.000 323.000 196.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 215.128 215.128 0.000 +3 323.000 196.000 247.000 186.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 76.655 76.655 0.000 +3 323.000 196.000 407.000 151.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 95.294 95.294 0.000 +3 339.000 345.000 346.667 396.417 0.000 0.000 0.000 0.000 0.000 3600.000 101 3 1 51.985 51.985 0.000 +3 346.667 396.417 396.667 363.083 0.000 0.000 0.000 0.000 0.000 3600.000 101 3 1 60.093 60.093 0.000 +3 396.667 363.083 339.000 345.000 0.000 0.000 0.000 0.000 0.000 3600.000 101 3 1 60.436 60.436 0.000 +13 413.333 313.083 421.000 363.000 456.000 307.000 0.000 0.000 0.000 3600.000 101 3 1 0.000 0.000 0.000 +13 191.000 76.000 296.667 63.083 263.333 163.083 0.000 0.000 0.000 3600.000 301 3 1 0.000 0.000 0.000 +13 164.000 138.000 217.000 141.000 205.000 192.000 0.000 0.000 0.000 3600.000 501 3 1 0.000 0.000 0.000 +13 187.000 229.000 209.000 223.000 207.000 282.000 0.000 0.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +13 143.000 89.000 180.000 79.750 169.000 123.000 0.000 0.000 0.000 3600.000 901 3 1 0.000 0.000 0.000 +13 189.000 50.000 229.000 36.000 221.000 95.000 0.000 0.000 0.000 3600.000 1001 3 1 0.000 0.000 0.000 +13 232.000 502.000 211.000 375.000 257.000 376.000 0.000 0.000 0.000 3600.000 1101 3 1 0.000 0.000 0.000 +13 646.667 279.750 691.000 242.000 696.667 379.750 0.000 0.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +13 696.667 379.750 674.000 447.000 718.000 437.000 0.000 0.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +13 696.667 379.750 758.000 392.000 763.333 346.417 0.000 0.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +13 696.667 379.750 613.333 413.083 608.000 377.000 0.000 0.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +13 540.000 290.000 596.667 279.750 555.000 218.000 0.000 0.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +13 555.000 218.000 731.000 174.000 711.000 154.000 0.000 0.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +13 555.000 218.000 586.000 154.000 570.000 160.000 0.000 0.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 463.333 446.417 524.000 481.000 513.333 429.750 498.000 488.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 585.000 456.000 625.000 482.000 630.000 446.417 587.000 393.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 512.000 388.000 558.000 334.000 575.000 355.000 539.000 340.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 451.000 275.000 463.333 196.417 423.000 200.000 496.667 213.083 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 546.667 129.750 630.000 46.417 480.000 79.750 663.333 96.417 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 686.000 53.000 755.000 66.000 771.000 106.000 736.000 41.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 399.000 304.000 366.000 254.000 345.000 268.000 400.000 252.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 337.000 129.000 346.667 79.750 358.000 126.000 376.000 86.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 407.000 66.000 454.000 40.000 451.000 59.000 433.000 42.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 280.000 513.083 285.000 513.000 330.000 458.000 394.000 518.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 444.000 523.000 397.000 469.000 437.000 466.000 639.000 529.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 701.000 518.000 742.000 460.000 753.000 516.000 696.667 463.083 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 330.000 522.000 380.000 479.750 385.000 524.000 330.000 513.083 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 291.000 458.000 296.667 413.083 356.000 453.000 330.000 429.750 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 333.000 402.000 480.000 403.000 434.000 368.000 425.000 424.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +14 296.000 356.000 299.000 320.000 363.333 296.417 353.000 355.000 0.000 3600.000 701 3 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test18.epc b/support/latexdraw/test/abbtest/test18.epc new file mode 100644 index 0000000000..21021ff546 --- /dev/null +++ b/support/latexdraw/test/abbtest/test18.epc @@ -0,0 +1,12 @@ +LaTeXdraw (Siegert, TUM, C9.7) + 1.93549E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +12 407.000 217.000 664.667 154.167 606.000 323.000 420.000 341.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 214.667 237.500 357.000 218.000 320.000 310.000 214.667 320.833 0.000 3600.000 4 0 1 0.000 0.000 0.000 +12 331.333 154.167 517.000 99.000 539.000 159.000 371.000 180.000 0.000 3600.000 4 0 7 0.000 0.000 0.000 +12 272.000 204.000 506.000 204.000 460.000 327.000 364.667 337.500 0.000 3600.000 304 0 7 0.000 0.000 0.000 +12 298.000 320.583 471.000 315.000 455.000 375.000 338.000 429.000 0.000 3600.000 1 0 5 0.000 0.000 0.000 +12 553.000 372.000 731.333 303.917 657.000 433.000 581.333 453.917 0.000 3600.000 1 0 3 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test19.epc b/support/latexdraw/test/abbtest/test19.epc new file mode 100644 index 0000000000..aacad6ce82 --- /dev/null +++ b/support/latexdraw/test/abbtest/test19.epc @@ -0,0 +1,37 @@ +LaTeXdraw (Siegert, TUM, C9.3) + 1.64706E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +12 240.000 437.000 356.000 437.000 347.833 487.500 264.500 504.167 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 448.000 430.000 588.000 424.000 548.000 481.000 473.000 485.000 0.000 3600.000 4 0 1 0.000 0.000 0.000 +12 647.833 420.833 736.000 424.000 664.500 504.167 705.000 509.000 0.000 3600.000 8 0 1 0.000 0.000 0.000 +12 774.000 509.000 892.000 427.000 881.167 504.167 779.000 427.000 0.000 3600.000 10 0 1 0.000 0.000 0.000 +12 947.833 504.167 1081.167 420.833 976.333 418.000 1047.833 504.167 0.000 3600.000 18 0 1 0.000 0.000 0.000 +12 950.333 361.000 1061.333 266.000 1064.500 354.167 957.333 270.000 0.000 3600.000 18 0 5 0.000 0.000 0.000 +12 958.333 200.000 1064.500 120.833 1057.333 199.000 956.333 117.000 0.000 3600.000 18 0 3 0.000 0.000 0.000 +12 959.333 65.000 1064.500 -29.167 1066.333 66.000 958.333 -22.333 0.000 3600.000 18 0 7 0.000 0.000 0.000 +12 232.000 276.000 347.833 270.833 331.167 337.500 272.000 349.000 0.000 3600.000 1 0 5 0.000 0.000 0.000 +12 259.000 151.000 352.000 129.000 314.500 187.500 258.000 228.000 0.000 3600.000 1 0 3 0.000 0.000 0.000 +12 248.000 44.000 422.000 43.000 401.000 95.000 231.167 104.167 0.000 3600.000 1 0 7 0.000 0.000 0.000 +12 447.833 287.500 581.000 264.000 568.000 331.000 481.167 337.500 0.000 3600.000 4 0 5 0.000 0.000 0.000 +12 438.000 145.000 620.000 156.000 564.500 187.500 481.167 204.167 0.000 3600.000 4 0 3 0.000 0.000 0.000 +12 455.000 53.000 626.000 58.000 540.000 112.000 517.000 111.000 0.000 3600.000 4 0 7 0.000 0.000 0.000 +12 658.000 280.000 738.000 282.000 658.000 372.000 731.167 370.833 0.000 3600.000 8 0 5 0.000 0.000 0.000 +12 655.000 159.000 747.833 154.167 653.000 223.000 742.000 226.000 0.000 3600.000 8 0 3 0.000 0.000 0.000 +12 664.500 54.167 752.000 60.000 664.500 120.833 748.000 128.000 0.000 3600.000 8 0 7 0.000 0.000 0.000 +12 797.833 354.167 893.000 266.000 896.000 360.000 791.000 262.000 0.000 3600.000 10 0 5 0.000 0.000 0.000 +12 807.000 221.000 901.000 144.000 909.000 223.000 797.833 137.500 0.000 3600.000 10 0 3 0.000 0.000 0.000 +12 814.500 104.167 910.000 33.000 899.000 110.000 814.500 37.500 0.000 3600.000 10 0 7 0.000 0.000 0.000 +3 402.000 291.000 531.000 363.000 0.000 0.000 0.000 0.000 0.000 3600.000 4 0 5 147.733 147.733 0.000 +3 426.000 170.000 535.000 233.000 0.000 0.000 0.000 0.000 0.000 3600.000 4 0 3 125.897 125.897 0.000 +3 453.000 87.000 531.167 137.500 0.000 0.000 0.000 0.000 0.000 3600.000 4 0 7 93.061 93.061 0.000 +3 244.000 416.000 348.000 411.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 104.120 104.120 0.000 +3 236.000 250.000 364.250 237.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 5 128.882 128.882 0.000 +3 247.583 120.583 359.000 110.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 3 111.918 111.918 0.000 +3 249.000 28.000 414.250 20.583 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 7 165.416 165.416 0.000 +3 280.917 37.250 347.583 37.250 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 7 66.666 66.666 0.000 +3 259.000 106.000 306.000 131.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 3 53.235 53.235 0.000 +3 250.000 232.000 322.000 260.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 5 77.253 77.253 0.000 +3 269.000 389.000 323.000 430.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 67.801 67.801 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test20.epc b/support/latexdraw/test/abbtest/test20.epc new file mode 100644 index 0000000000..60520e968c --- /dev/null +++ b/support/latexdraw/test/abbtest/test20.epc @@ -0,0 +1,134 @@ +LaTeXdraw (Siegert, TUM, C8.9) + 2.00000E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +11 213.167 695.917 246.500 729.250 246.500 695.917 213.167 729.250 0.000 3600.000 1 0 1 0.000 0.000 0.000 +11 246.500 695.917 279.833 729.250 279.833 695.917 246.500 729.250 0.000 3600.000 101 0 1 0.000 0.000 0.000 +11 279.833 695.917 313.167 729.250 313.167 695.917 279.833 729.250 0.000 3600.000 201 0 1 0.000 0.000 0.000 +11 313.167 695.917 346.500 729.250 346.500 695.917 313.167 729.250 0.000 3600.000 301 0 1 0.000 0.000 0.000 +11 346.500 695.917 379.833 729.250 379.833 695.917 346.500 729.250 0.000 3600.000 401 0 1 0.000 0.000 0.000 +11 379.833 695.917 413.167 729.250 413.167 695.917 379.833 729.250 0.000 3600.000 501 0 1 0.000 0.000 0.000 +11 413.167 695.917 446.500 729.250 446.500 695.917 413.167 729.250 0.000 3600.000 601 0 1 0.000 0.000 0.000 +11 446.500 695.917 479.833 729.250 479.833 695.917 446.500 729.250 0.000 3600.000 701 0 1 0.000 0.000 0.000 +11 479.833 695.917 513.167 729.250 513.167 695.917 479.833 729.250 0.000 3600.000 801 0 1 0.000 0.000 0.000 +11 513.167 695.917 546.500 729.250 546.500 695.917 513.167 729.250 0.000 3600.000 901 0 1 0.000 0.000 0.000 +11 546.500 695.917 579.833 729.250 579.833 695.917 546.500 729.250 0.000 3600.000 1001 0 1 0.000 0.000 0.000 +11 213.167 629.250 246.500 662.583 246.500 629.250 213.167 662.583 0.000 3600.000 1101 0 1 0.000 0.000 0.000 +2 263.167 645.917 263.167 639.417 263.167 645.917 284.167 645.917 0.000 3600.000 1101 0 1 3.000 7.000 0.000 +red +11 213.167 579.250 246.500 612.583 246.500 579.250 213.167 612.583 0.000 3600.000 1201 0 1 0.000 0.000 0.000 +2 263.167 595.917 263.167 589.417 263.167 595.917 307.167 595.917 0.000 3600.000 1201 0 1 6.000 7.000 0.000 +orange +2 263.167 545.917 263.167 539.417 263.167 545.917 312.167 545.917 0.000 3600.000 1301 0 1 7.000 7.000 0.000 +sienna1 +11 213.167 529.250 246.500 562.583 246.500 529.250 213.167 562.583 0.000 3600.000 1301 0 1 0.000 0.000 0.000 +11 213.167 479.250 246.500 512.583 246.500 479.250 213.167 512.583 0.000 3600.000 1401 0 1 0.000 0.000 0.000 +2 263.167 495.917 263.167 489.417 263.167 495.917 292.167 495.917 0.000 3600.000 1401 0 1 4.000 7.000 0.000 +gold +2 263.167 445.917 263.167 439.417 263.167 445.917 308.167 445.917 0.000 3600.000 1501 0 1 6.000 7.000 0.000 +yellow +11 213.167 429.250 246.500 462.583 246.500 429.250 213.167 462.583 0.000 3600.000 1501 0 1 0.000 0.000 0.000 +11 213.167 379.250 246.500 412.583 246.500 379.250 213.167 412.583 0.000 3600.000 1601 0 1 0.000 0.000 0.000 +2 263.167 395.917 263.167 389.417 263.167 395.917 330.167 395.917 0.000 3600.000 1601 0 1 10.000 7.000 0.000 +chartreuse +2 263.167 345.917 263.167 339.417 263.167 345.917 299.167 345.917 0.000 3600.000 1701 0 1 5.000 7.000 0.000 +green +11 213.167 329.250 246.500 362.583 246.500 329.250 213.167 362.583 0.000 3600.000 1701 0 1 0.000 0.000 0.000 +11 213.167 279.250 246.500 312.583 246.500 279.250 213.167 312.583 0.000 3600.000 1801 0 1 0.000 0.000 0.000 +2 263.167 295.917 263.167 289.417 263.167 295.917 347.167 295.917 0.000 3600.000 1801 0 1 11.000 7.000 0.000 +SpringGreen +2 263.167 245.917 263.167 239.417 263.167 245.917 293.167 245.917 0.000 3600.000 1901 0 1 4.000 7.000 0.000 +cyan +11 213.167 229.250 246.500 262.583 246.500 229.250 213.167 262.583 0.000 3600.000 1901 0 1 0.000 0.000 0.000 +11 213.167 179.250 246.500 212.583 246.500 179.250 213.167 212.583 0.000 3600.000 2001 0 1 0.000 0.000 0.000 +2 263.167 195.917 263.167 189.417 263.167 195.917 291.167 195.917 0.000 3600.000 2001 0 1 4.000 7.000 0.000 +blue +2 263.167 145.917 263.167 139.417 263.167 145.917 342.167 145.917 0.000 3600.000 2101 0 1 10.000 7.000 0.000 +DarkOrchid +11 213.167 129.250 246.500 162.583 246.500 129.250 213.167 162.583 0.000 3600.000 2101 0 1 0.000 0.000 0.000 +11 213.167 79.250 246.500 112.583 246.500 79.250 213.167 112.583 0.000 3600.000 2201 0 1 0.000 0.000 0.000 +2 263.167 95.917 263.167 89.417 263.167 95.917 313.167 95.917 0.000 3600.000 2201 0 1 7.000 7.000 0.000 +orchid1 +2 263.167 45.917 263.167 39.417 263.167 45.917 318.167 45.917 0.000 3600.000 2201 0 1 7.000 7.000 0.000 +magenta +11 213.167 29.250 246.500 62.583 246.500 29.250 213.167 62.583 0.000 3600.000 2301 0 1 0.000 0.000 0.000 +11 346.500 629.250 379.833 662.583 379.833 629.250 346.500 662.583 0.000 3600.000 2401 0 1 0.000 0.000 0.000 +2 396.500 645.917 396.500 639.417 396.500 645.917 425.500 645.917 0.000 3600.000 2401 0 1 4.000 7.000 0.000 +red3 +11 346.500 579.250 379.833 612.583 379.833 579.250 346.500 612.583 0.000 3600.000 2501 0 1 0.000 0.000 0.000 +2 396.500 595.917 396.500 589.417 396.500 595.917 448.500 595.917 0.000 3600.000 2501 0 1 7.000 7.000 0.000 +orange3 +2 396.500 545.917 396.500 539.417 396.500 545.917 446.500 545.917 0.000 3600.000 2601 0 1 6.000 7.000 0.000 +brown3 +11 346.500 529.250 379.833 562.583 379.833 529.250 346.500 562.583 0.000 3600.000 2601 0 1 0.000 0.000 0.000 +11 346.500 479.250 379.833 512.583 379.833 479.250 346.500 512.583 0.000 3600.000 2701 0 1 0.000 0.000 0.000 +2 396.500 495.917 396.500 495.917 396.500 495.917 448.500 495.917 0.000 3600.000 2701 0 1 7.000 0.000 0.000 +orange2 +2 396.500 445.917 396.500 439.417 396.500 445.917 449.500 445.917 0.000 3600.000 2801 0 1 7.000 7.000 0.000 +yellow3 +11 346.500 429.250 379.833 462.583 379.833 429.250 346.500 462.583 0.000 3600.000 2801 0 1 0.000 0.000 0.000 +11 346.500 379.250 379.833 412.583 379.833 379.250 346.500 412.583 0.000 3600.000 2901 0 1 0.000 0.000 0.000 +2 396.500 395.917 396.500 389.417 396.500 395.917 471.500 395.917 0.000 3600.000 2901 0 1 11.000 7.000 0.000 +chartreuse3 +2 396.500 345.917 396.500 339.417 396.500 345.917 440.500 345.917 0.000 3600.000 3001 0 1 6.000 7.000 0.000 +green3 +11 346.500 329.250 379.833 362.583 379.833 329.250 346.500 362.583 0.000 3600.000 3001 0 1 0.000 0.000 0.000 +11 346.500 279.250 379.833 312.583 379.833 279.250 346.500 312.583 0.000 3600.000 3101 0 1 0.000 0.000 0.000 +2 396.500 295.917 396.500 289.417 396.500 295.917 467.500 295.917 0.000 3600.000 3101 0 1 9.000 7.000 0.000 +SprGreen3 +2 396.500 245.917 396.500 239.417 396.500 245.917 434.500 245.917 0.000 3600.000 3201 0 1 5.000 7.000 0.000 +cyan3 +11 346.500 229.250 379.833 262.583 379.833 229.250 346.500 262.583 0.000 3600.000 3201 0 1 0.000 0.000 0.000 +11 346.500 179.250 379.833 212.583 379.833 179.250 346.500 212.583 0.000 3600.000 3301 0 1 0.000 0.000 0.000 +2 396.500 195.917 396.500 189.417 396.500 195.917 432.500 195.917 0.000 3600.000 3301 0 1 5.000 7.000 0.000 +blue3 +2 396.500 145.917 396.500 139.417 396.500 145.917 470.500 145.917 0.000 3600.000 3401 0 1 9.000 7.000 0.000 +DarkOrch3 +11 346.500 129.250 379.833 162.583 379.833 129.250 346.500 162.583 0.000 3600.000 3401 0 1 0.000 0.000 0.000 +11 346.500 79.250 379.833 112.583 379.833 79.250 346.500 112.583 0.000 3600.000 3501 0 1 0.000 0.000 0.000 +2 396.500 95.917 396.500 89.417 396.500 95.917 446.500 95.917 0.000 3600.000 3501 0 1 7.000 7.000 0.000 +orchid3 +2 396.500 45.917 396.500 39.417 396.500 45.917 459.500 45.917 0.000 3600.000 3601 0 1 8.000 7.000 0.000 +magenta3 +11 346.500 29.250 379.833 62.583 379.833 29.250 346.500 62.583 0.000 3600.000 3601 0 1 0.000 0.000 0.000 +11 479.833 629.250 513.167 662.583 513.167 629.250 479.833 662.583 0.000 3600.000 3701 0 1 0.000 0.000 0.000 +2 529.833 645.917 529.833 639.417 529.833 645.917 608.833 645.917 0.000 3600.000 3701 0 1 10.000 7.000 0.000 +MistyRose1 +2 529.833 595.917 529.833 589.417 529.833 595.917 604.833 595.917 0.000 3600.000 3801 0 1 10.000 7.000 0.000 +PeachPuff1 +11 479.833 579.250 513.167 612.583 513.167 579.250 479.833 612.583 0.000 3600.000 3801 0 1 0.000 0.000 0.000 +11 479.833 529.250 513.167 562.583 513.167 529.250 479.833 562.583 0.000 3600.000 3901 0 1 0.000 0.000 0.000 +2 529.833 545.917 529.833 539.417 529.833 545.917 615.833 545.917 0.000 3600.000 3901 0 1 10.000 7.000 0.000 +RosyBrown1 +2 529.833 495.917 529.833 489.417 529.833 495.917 573.833 495.917 0.000 3600.000 4001 0 1 6.000 7.000 0.000 +khaki1 +11 479.833 479.250 513.167 512.583 513.167 479.250 479.833 512.583 0.000 3600.000 4001 0 1 0.000 0.000 0.000 +11 479.833 429.250 513.167 462.583 513.167 429.250 479.833 462.583 0.000 3600.000 4101 0 1 0.000 0.000 0.000 +2 529.833 445.917 529.833 439.417 529.833 445.917 622.833 445.917 0.000 3600.000 4101 0 1 12.000 7.000 0.000 +LightYellow1 +2 529.833 395.917 529.833 389.417 529.833 395.917 576.833 395.917 0.000 3600.000 4201 0 1 6.000 7.000 0.000 +wheat1 +11 479.833 379.250 513.167 412.583 513.167 379.250 479.833 412.583 0.000 3600.000 4201 0 1 0.000 0.000 0.000 +11 479.833 329.250 513.167 362.583 513.167 329.250 479.833 362.583 0.000 3600.000 4301 0 1 0.000 0.000 0.000 +2 529.833 345.917 529.833 339.417 529.833 345.917 610.833 345.917 0.000 3600.000 4301 0 1 10.000 7.000 0.000 +Mint Cream +2 529.833 295.917 529.833 289.417 529.833 295.917 605.833 295.917 0.000 3600.000 4401 0 1 10.000 7.000 0.000 +PaleGreen1 +11 479.833 279.250 513.167 312.583 513.167 279.250 479.833 312.583 0.000 3600.000 4401 0 1 0.000 0.000 0.000 +11 479.833 229.250 513.167 262.583 513.167 229.250 479.833 262.583 0.000 3600.000 4501 0 1 0.000 0.000 0.000 +2 529.833 245.917 529.833 239.417 529.833 245.917 607.833 245.917 0.000 3600.000 4501 0 1 10.000 7.000 0.000 +LightCyan1 +2 529.833 195.917 529.833 189.417 529.833 195.917 604.833 195.917 0.000 3600.000 4501 0 1 10.000 7.000 0.000 +LightBlue1 +11 479.833 179.250 513.167 212.583 513.167 179.250 479.833 212.583 0.000 3600.000 4601 0 1 0.000 0.000 0.000 +11 479.833 129.250 513.167 162.583 513.167 129.250 479.833 162.583 0.000 3600.000 4701 0 1 0.000 0.000 0.000 +2 529.833 145.917 529.833 139.417 529.833 145.917 578.833 145.917 0.000 3600.000 4701 0 1 8.000 7.000 0.000 +thistle1 +2 529.833 95.917 529.833 89.417 529.833 95.917 571.833 95.917 0.000 3600.000 4801 0 1 5.000 7.000 0.000 +plum1 +11 479.833 79.250 513.167 112.583 513.167 79.250 479.833 112.583 0.000 3600.000 4801 0 1 0.000 0.000 0.000 +11 479.833 29.250 513.167 62.583 513.167 29.250 479.833 62.583 0.000 3600.000 4901 0 1 0.000 0.000 0.000 +2 529.833 45.917 529.833 39.417 529.833 45.917 636.833 45.917 0.000 3600.000 4901 0 1 14.000 7.000 0.000 +LavenderBlush1 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test21.epc b/support/latexdraw/test/abbtest/test21.epc new file mode 100644 index 0000000000..ede64dc4d9 --- /dev/null +++ b/support/latexdraw/test/abbtest/test21.epc @@ -0,0 +1,72 @@ +LaTeXdraw (Siegert, TUM, C11.4) + 2.13439E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 747.587 287.250 1.000 0.000 0.000 1.000 (GITTERWERTE) +386.905 32.000 1089.681 520.583 702.776 488.583 150.000 220.000 1 1 (AUSGABEOPTIONEN) +3 414.254 520.583 530.920 520.583 183.337 0.000 183.337 0.000 0.000 3600.000 1 0 1 116.666 116.666 0.000 +3 414.254 503.917 530.920 503.917 183.337 0.000 183.337 0.000 0.000 3600.000 1 0 5 116.666 116.666 0.000 +3 414.254 487.250 530.920 487.250 183.337 0.000 183.337 0.000 0.000 3600.000 1 0 7 116.666 116.666 0.000 +3 414.254 470.583 530.920 470.583 183.337 0.000 183.337 0.000 0.000 3600.000 1 0 3 116.666 116.666 0.000 +3 580.920 520.583 697.587 520.583 183.337 0.000 183.337 0.000 0.000 3600.000 1 1 1 116.667 116.667 0.000 +3 580.920 503.917 697.587 503.917 183.337 0.000 183.337 0.000 0.000 3600.000 1 1 5 116.667 116.667 0.000 +3 580.920 487.250 697.587 487.250 183.337 0.000 183.337 0.000 0.000 3600.000 1 1 7 116.667 116.667 0.000 +3 580.920 470.583 697.587 470.583 183.337 0.000 183.337 0.000 0.000 3600.000 1 1 3 116.667 116.667 0.000 +3 747.587 520.583 864.254 520.583 183.337 0.000 183.337 0.000 0.000 3600.000 1 3 1 116.667 116.667 0.000 +3 747.587 503.917 864.254 503.917 183.337 0.000 183.337 0.000 0.000 3600.000 1 3 5 116.667 116.667 0.000 +3 747.587 487.250 864.254 487.250 183.337 0.000 183.337 0.000 0.000 3600.000 1 3 7 116.667 116.667 0.000 +3 747.587 470.583 864.254 470.583 183.337 0.000 183.337 0.000 0.000 3600.000 1 3 3 116.667 116.667 0.000 +3 914.254 520.583 1030.920 520.583 183.337 0.000 183.337 0.000 0.000 3600.000 1 2 1 116.666 116.666 0.000 +3 914.254 503.917 1030.920 503.917 183.337 0.000 183.337 0.000 0.000 3600.000 1 2 5 116.666 116.666 0.000 +3 914.254 487.250 1030.920 487.250 183.337 0.000 183.337 0.000 0.000 3600.000 1 2 7 116.666 116.666 0.000 +3 914.254 470.583 1030.920 470.583 183.337 0.000 183.337 0.000 0.000 3600.000 1 2 3 116.666 116.666 0.000 +12 417.337 427.000 530.916 420.586 447.581 453.920 480.915 453.920 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 419.337 402.000 521.337 403.000 456.337 429.000 480.915 420.586 0.000 3600.000 1 0 5 0.000 0.000 0.000 +12 413.337 377.000 522.337 374.000 458.337 403.000 484.337 398.000 0.000 3600.000 1 0 7 0.000 0.000 0.000 +12 414.247 353.918 526.337 343.000 464.248 370.585 480.915 370.585 0.000 3600.000 1 0 3 0.000 0.000 0.000 +12 584.007 427.000 697.586 420.586 614.251 453.920 647.585 453.920 0.000 3600.000 1 1 1 0.000 0.000 0.000 +12 586.007 402.000 688.007 403.000 623.007 429.000 647.585 420.586 0.000 3600.000 1 1 5 0.000 0.000 0.000 +12 580.007 377.000 689.007 374.000 625.007 403.000 651.007 398.000 0.000 3600.000 1 1 7 0.000 0.000 0.000 +12 580.917 353.918 693.007 343.000 630.918 370.585 647.585 370.585 0.000 3600.000 1 1 3 0.000 0.000 0.000 +12 750.677 427.000 864.256 420.586 780.921 453.920 814.255 453.920 0.000 3600.000 1 3 1 0.000 0.000 0.000 +12 752.677 402.000 854.677 403.000 789.677 429.000 814.255 420.586 0.000 3600.000 1 3 5 0.000 0.000 0.000 +12 746.677 377.000 855.677 374.000 791.677 403.000 817.677 398.000 0.000 3600.000 1 3 7 0.000 0.000 0.000 +12 747.587 353.918 859.677 343.000 797.588 370.585 814.255 370.585 0.000 3600.000 1 3 3 0.000 0.000 0.000 +12 917.347 427.000 1030.926 420.586 947.591 453.920 980.925 453.920 0.000 3600.000 1 2 1 0.000 0.000 0.000 +12 919.347 402.000 1021.347 403.000 956.347 429.000 980.925 420.586 0.000 3600.000 1 2 5 0.000 0.000 0.000 +12 913.347 377.000 1022.347 374.000 958.347 403.000 984.347 398.000 0.000 3600.000 1 2 7 0.000 0.000 0.000 +12 914.257 353.918 1026.347 343.000 964.258 370.585 980.925 370.585 0.000 3600.000 1 2 3 0.000 0.000 0.000 +7 456.337 284.000 183.337 0.000 457.629 325.353 429.633 252.400 882.101 2297.999 1 0 3 41.373 41.373 0.000 +7 456.337 284.000 183.337 0.000 431.381 238.107 442.111 334.265 2414.628 1058.025 1 0 7 52.240 52.240 0.000 +7 462.337 282.000 183.337 0.000 509.009 222.740 389.433 262.635 3082.233 1948.757 1 0 1 75.432 75.432 0.000 +7 456.337 284.000 183.337 0.000 407.408 242.746 501.081 329.760 2201.355 456.437 1 0 3 64.000 64.000 0.000 +7 629.003 281.998 183.337 0.000 675.676 222.738 556.099 262.633 3082.233 1948.757 1 1 1 75.433 75.433 0.000 +7 623.003 283.998 183.337 0.000 574.074 242.743 667.747 329.759 2201.355 456.437 1 1 5 64.001 64.001 0.000 +7 623.003 283.998 183.337 0.000 598.047 238.104 608.777 334.264 2414.628 1058.025 1 1 7 52.240 52.240 0.000 +7 623.003 283.998 183.337 0.000 624.296 325.351 596.299 252.397 882.101 2297.999 1 1 3 41.373 41.373 0.000 +7 795.671 281.996 183.337 0.000 842.344 222.735 722.766 262.630 3082.233 1948.757 1 3 1 75.433 75.433 0.000 +7 789.671 283.996 183.337 0.000 740.741 242.741 834.415 329.757 2201.355 456.437 1 3 5 64.001 64.001 0.000 +7 789.671 283.996 183.337 0.000 764.714 238.102 775.445 334.262 2414.628 1058.025 1 3 7 52.241 52.241 0.000 +7 789.671 283.996 183.337 0.000 790.963 325.349 762.966 252.395 882.101 2297.999 1 3 3 41.374 41.374 0.000 +7 962.341 281.994 183.337 0.000 1009.014 222.732 889.435 262.628 3082.233 1948.757 1 2 1 75.434 75.434 0.000 +7 956.340 283.994 183.337 0.000 907.410 242.739 1001.085 329.756 2201.355 456.437 1 2 5 64.002 64.002 0.000 +7 956.340 283.994 183.337 0.000 931.383 238.100 942.114 334.261 2414.628 1058.025 1 2 7 52.241 52.241 0.000 +7 956.340 283.994 183.337 0.000 957.633 325.348 929.635 252.393 882.101 2297.999 1 2 3 41.374 41.374 0.000 +10 447.581 137.247 183.337 0.000 456.448 110.646 468.667 163.129 2761.080 753.436 1 0 5 83.335 26.753 0.000 +10 454.337 135.000 183.337 0.000 431.129 102.866 445.372 167.872 2568.482 950.425 1 0 1 102.000 33.000 0.000 +10 454.337 135.000 183.337 0.000 400.337 135.000 508.282 138.112 1800.000 25.884 1 0 7 54.000 68.915 0.000 +10 454.337 135.000 183.337 0.000 423.885 174.687 484.709 175.276 1573.369 230.188 1 0 3 33.000 103.000 0.000 +10 630.918 137.247 183.337 0.000 639.785 110.646 652.004 163.129 2761.080 753.436 1 1 5 83.335 26.753 0.000 +10 637.674 135.000 183.337 0.000 614.466 102.866 628.709 167.872 2568.482 950.425 1 1 1 102.000 33.000 0.000 +10 637.674 135.000 183.337 0.000 583.674 135.000 691.619 138.112 1800.000 25.884 1 1 7 54.000 68.915 0.000 +10 637.674 135.000 183.337 0.000 607.222 174.687 668.046 175.276 1573.369 230.188 1 1 3 33.000 103.000 0.000 +10 797.588 137.247 183.337 0.000 806.455 110.646 818.674 163.129 2761.080 753.436 1 3 5 83.335 26.753 0.000 +10 804.344 135.000 183.337 0.000 781.136 102.866 795.379 167.872 2568.482 950.425 1 3 1 102.000 33.000 0.000 +10 804.344 135.000 183.337 0.000 750.344 135.000 858.289 138.112 1800.000 25.884 1 3 7 54.000 68.915 0.000 +10 804.344 135.000 183.337 0.000 773.892 174.687 834.716 175.276 1573.369 230.188 1 3 3 33.000 103.000 0.000 +10 980.925 137.247 183.337 0.000 989.792 110.646 1002.011 163.129 2761.080 753.436 1 2 5 83.335 26.753 0.000 +10 987.681 135.000 183.337 0.000 964.473 102.866 978.716 167.872 2568.482 950.425 1 2 1 102.000 33.000 0.000 +10 987.681 135.000 183.337 0.000 933.681 135.000 1041.626 138.112 1800.000 25.884 1 2 7 54.000 68.915 0.000 +10 987.681 135.000 183.337 0.000 957.229 174.687 1018.053 175.276 1573.369 230.188 1 2 3 33.000 103.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test22.epc b/support/latexdraw/test/abbtest/test22.epc new file mode 100644 index 0000000000..dc1353ad5d --- /dev/null +++ b/support/latexdraw/test/abbtest/test22.epc @@ -0,0 +1,24 @@ +LaTeXdraw (Siegert, TUM, C11.4) + 3.23955E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 564.250 287.250 1.000 0.000 0.000 1.000 (GITTERWERTE) +244.972 124.978 708.000 431.028 463.028 306.050 150.000 220.000 1 1 (AUSGABEOPTIONEN) +15 317.000 359.000 0.000 0.000 384.955 382.876 371.206 406.431 193.590 411.859 1 0 1 72.028 72.028 0.000 +15 317.000 359.000 0.000 0.000 371.206 406.431 325.813 430.487 411.859 829.716 201 0 1 72.028 72.028 0.000 +15 317.000 359.000 0.000 0.000 325.813 430.487 266.506 410.365 829.716 1345.103 301 0 1 72.028 72.028 0.000 +15 317.000 359.000 0.000 0.000 266.506 410.365 245.074 362.836 1345.103 1769.471 401 0 1 72.028 72.028 0.000 +15 317.000 359.000 0.000 0.000 245.074 362.836 270.672 303.848 1769.471 2299.697 501 0 1 72.028 72.028 0.000 +15 317.000 359.000 0.000 0.000 270.672 303.848 351.964 296.027 2299.697 2990.399 601 0 1 72.028 72.028 0.000 +16 547.583 353.917 0.000 0.000 675.778 311.185 690.978 385.782 3230.478 266.337 601 0 1 160.417 71.083 0.000 +16 547.583 353.917 0.000 0.000 690.978 385.782 636.262 413.151 266.337 564.406 701 0 1 160.417 71.083 0.000 +16 547.583 353.917 0.000 0.000 636.262 413.151 568.452 424.396 564.406 825.251 801 0 1 160.417 71.083 0.000 +16 547.583 353.917 0.000 0.000 568.452 424.396 512.883 423.317 825.251 1024.926 901 0 1 160.417 71.083 0.000 +16 547.583 353.917 0.000 0.000 512.883 423.317 401.370 383.159 1024.926 1557.080 1001 0 1 160.417 71.083 0.000 +16 547.583 353.917 0.000 0.000 401.370 383.159 416.165 313.153 1557.080 2149.921 1101 0 1 160.417 71.083 0.000 +16 547.583 353.917 0.000 0.000 416.165 313.153 519.708 283.915 2149.921 2599.932 1501 0 1 160.417 71.083 0.000 +16 547.583 353.917 0.000 0.000 519.708 283.915 592.234 285.642 2599.932 2861.612 3501 0 1 160.417 71.083 0.000 +16 547.583 353.917 0.000 0.000 592.234 285.642 621.910 290.924 2861.612 2976.025 101 0 1 160.417 71.083 0.000 +6 458.000 217.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 401 0 1 92.022 92.022 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test23.epc b/support/latexdraw/test/abbtest/test23.epc new file mode 100644 index 0000000000..254c0d3ada --- /dev/null +++ b/support/latexdraw/test/abbtest/test23.epc @@ -0,0 +1,56 @@ +LaTeXdraw (Siegert, TUM, C15.13) + 2.35135E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 564.250 820.594 1.000 0.000 0.000 1.000 (GITTERWERTE) +209.898 95.713 897.583 1100.748 687.685 1005.035 145.000 200.000 1 1 (AUSGABEOPTIONEN) +3 301.000 927.344 472.000 991.344 0.000 533.344 0.000 533.344 0.000 3600.000 1 0 1 182.584 182.584 0.000 +3 320.000 830.344 514.000 894.344 0.000 533.344 0.000 533.344 0.000 3600.000 520 0 1 204.284 204.284 0.000 +3 340.000 897.344 490.000 937.344 0.000 533.344 0.000 533.344 0.000 3600.000 2 0 1 155.242 155.242 0.000 +3 513.000 943.344 597.000 846.344 0.000 533.344 0.000 533.344 0.000 3600.000 3 0 1 128.316 128.316 0.000 +3 619.000 859.344 730.917 987.261 0.000 533.344 0.000 533.344 0.000 3600.000 4 0 1 169.965 169.965 0.000 +3 756.000 964.344 897.583 820.594 0.000 533.344 0.000 533.344 0.000 3600.000 5 0 1 201.767 201.767 0.000 +3 864.250 787.261 714.250 787.261 0.000 533.344 0.000 533.344 0.000 3600.000 6 0 1 150.000 150.000 0.000 +3 595.000 749.344 380.917 720.594 0.000 533.344 0.000 533.344 0.000 3600.000 7 0 1 216.005 216.005 0.000 +3 284.000 708.344 280.917 603.927 0.000 533.344 0.000 533.344 0.000 3600.000 8 0 1 104.463 104.463 0.000 +3 617.000 611.344 326.000 609.344 0.000 533.344 0.000 533.344 0.000 3600.000 9 0 1 291.007 291.007 0.000 +5 754.000 693.344 0.000 533.344 0.000 533.344 0.000 533.344 0.000 3600.000 20 0 1 84.024 84.024 0.000 +6 572.000 1000.344 0.000 533.344 0.000 533.344 0.000 533.344 0.000 3600.000 501 0 1 100.404 100.404 0.000 +8 458.000 665.344 0.000 533.344 0.000 533.344 0.000 533.344 0.000 3600.000 1 0 1 117.000 22.000 0.000 +7 455.000 805.344 0.000 533.344 422.135 840.400 475.320 761.800 1331.524 2950.169 1 0 1 48.052 48.052 0.000 +10 659.000 843.344 0.000 533.344 664.572 766.165 697.104 917.094 2724.948 726.812 1 0 1 128.000 77.252 0.000 +10 680.919 837.261 0.000 533.344 599.623 828.228 681.000 878.344 1927.013 899.443 1 0 1 83.335 41.083 0.000 +15 288.000 977.344 0.000 533.344 354.343 1018.557 303.975 1053.795 318.491 781.976 1 0 1 78.102 78.102 0.000 +15 288.000 977.344 0.000 533.344 303.975 1053.795 238.350 1037.633 781.976 1294.725 301 0 1 78.102 78.102 0.000 +15 288.000 977.344 0.000 533.344 238.350 1037.633 215.739 947.708 1294.725 2022.997 601 0 1 78.102 78.102 0.000 +15 288.000 977.344 0.000 533.344 215.739 947.708 257.234 905.557 2022.997 2468.014 801 0 1 78.102 78.102 0.000 +3 297.578 537.255 387.000 538.008 0.000 400.008 0.000 400.008 0.000 3600.000 801 0 5 89.425 89.425 0.000 +5 521.000 532.008 0.000 400.008 0.000 400.008 0.000 400.008 0.000 3600.000 801 0 5 86.122 86.122 0.000 +5 728.000 529.008 0.000 400.008 0.000 400.008 0.000 400.008 0.000 3600.000 810 0 5 95.755 95.755 0.000 +3 314.245 470.587 525.000 536.008 0.000 400.008 0.000 400.008 0.000 3600.000 810 0 5 220.675 220.675 0.000 +12 324.000 388.672 525.000 373.672 403.000 472.672 264.244 487.254 0.000 3600.000 810 0 5 0.000 0.000 0.000 +11 580.917 370.585 614.251 387.252 614.251 370.585 580.917 387.252 0.000 3600.000 10 0 5 0.000 0.000 0.000 +13 643.000 413.672 705.000 360.672 655.000 341.672 0.000 266.672 0.000 3600.000 10 0 5 0.000 0.000 0.000 +14 753.000 394.672 856.000 424.672 838.000 329.672 767.000 330.672 0.000 3600.000 10 0 5 0.000 0.000 0.000 +3 447.581 337.251 241.000 485.672 0.000 266.672 0.000 266.672 0.000 3600.000 10 3 1 254.371 254.371 0.000 +2 310.000 507.672 310.000 507.672 310.000 507.672 373.033 527.238 0.000 3600.000 10 3 1 10.000 0.000 172.450 +alles Gute +3 214.243 320.584 380.913 320.584 0.000 266.672 0.000 266.672 0.000 3600.000 1 3 1 166.670 166.670 0.000 +3 247.577 353.918 247.577 437.253 0.000 266.672 0.000 266.672 0.000 3600.000 1 3 1 83.335 83.335 0.000 +3 380.913 153.914 497.582 203.915 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 126.932 126.932 0.000 +8 497.582 203.915 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 126.932 37.861 231.986 +3 310.000 507.672 264.244 370.585 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 144.521 144.521 0.000 +3 497.582 203.915 614.251 253.916 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 126.932 126.932 0.000 +10 687.000 166.000 0.000 0.000 608.594 185.359 740.173 127.034 1250.758 2873.954 1 0 1 112.136 59.482 231.986 +3 614.251 253.916 608.595 185.359 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 68.790 68.790 0.000 +3 614.251 253.916 740.173 127.034 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 178.761 178.761 0.000 +3 380.913 153.914 740.173 127.034 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 360.264 360.264 0.000 +3 230.910 470.587 437.491 322.166 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 254.371 254.371 0.000 +3 230.910 470.587 241.000 485.672 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 18.148 18.148 0.000 +3 241.000 485.672 406.000 478.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 165.178 165.178 0.000 +3 406.000 478.000 447.581 337.251 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 146.763 146.763 0.000 +3 447.581 337.251 437.491 322.166 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 18.148 18.148 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test24.epc b/support/latexdraw/test/abbtest/test24.epc new file mode 100644 index 0000000000..02a0c2e977 --- /dev/null +++ b/support/latexdraw/test/abbtest/test24.epc @@ -0,0 +1,28 @@ +LaTeXdraw (Siegert, TUM, C11.4) + 2.80456E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 564.500 554.167 1.000 0.000 0.000 1.000 (GITTERWERTE) +244.000 87.500 814.500 770.833 570.500 683.333 160.000 220.000 1 1 (AUSGABEOPTIONEN) +3 247.833 704.167 370.000 767.667 0.000 266.667 0.000 266.667 0.000 3600.000 1 3 1 0.000 0.000 0.000 +3 264.000 764.667 328.000 664.667 0.000 266.667 0.000 266.667 0.000 3600.000 2 3 1 0.000 0.000 0.000 +3 244.000 546.667 377.000 598.667 0.000 266.667 0.000 266.667 0.000 3600.000 3 3 1 0.000 0.000 0.000 +3 246.000 575.667 353.000 536.667 0.000 266.667 0.000 266.667 0.000 3600.000 4 3 1 0.000 0.000 0.000 +3 257.000 454.667 425.000 495.667 0.000 266.667 0.000 266.667 0.000 3600.000 5 3 1 0.000 0.000 0.000 +3 282.000 494.667 375.000 436.667 0.000 266.667 0.000 266.667 0.000 3600.000 6 3 1 0.000 0.000 0.000 +3 269.000 361.667 390.000 380.667 0.000 266.667 0.000 266.667 0.000 3600.000 7 3 1 0.000 0.000 0.000 +3 309.000 398.667 347.833 320.833 0.000 266.667 0.000 266.667 0.000 3600.000 8 3 1 0.000 0.000 0.000 +3 297.833 237.500 423.000 259.333 0.000 133.333 0.000 133.333 0.000 3600.000 9 3 1 0.000 0.000 0.000 +3 281.167 287.500 447.000 178.333 0.000 133.333 0.000 133.333 0.000 3600.000 10 3 1 0.000 0.000 0.000 +3 564.000 712.667 776.000 756.667 0.000 266.667 0.000 266.667 0.000 3600.000 11 3 1 0.000 0.000 0.000 +3 581.167 770.833 749.000 698.667 0.000 266.667 0.000 266.667 0.000 3600.000 12 3 1 0.000 0.000 0.000 +3 587.000 638.667 772.000 597.667 0.000 266.667 0.000 266.667 0.000 3600.000 13 3 1 0.000 0.000 0.000 +3 631.000 564.667 754.000 660.667 0.000 266.667 0.000 266.667 0.000 3600.000 14 3 1 0.000 0.000 0.000 +3 559.000 458.667 811.000 481.667 0.000 266.667 0.000 266.667 0.000 3600.000 15 3 1 0.000 0.000 0.000 +3 572.000 510.667 778.000 409.667 0.000 266.667 0.000 266.667 0.000 3600.000 16 3 1 0.000 0.000 0.000 +3 574.000 368.667 781.167 287.500 0.000 266.667 0.000 266.667 0.000 3600.000 17 3 1 0.000 0.000 0.000 +3 753.000 353.333 552.000 262.333 0.000 133.333 0.000 133.333 0.000 3600.000 18 3 1 0.000 0.000 0.000 +3 614.500 170.833 814.500 120.833 0.000 0.000 0.000 0.000 0.000 3600.000 19 3 1 0.000 0.000 0.000 +3 547.833 87.500 787.000 212.000 0.000 0.000 0.000 0.000 0.000 3600.000 20 3 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/support/latexdraw/test/abbtest/test25.epc b/support/latexdraw/test/abbtest/test25.epc new file mode 100644 index 0000000000..7ebf5bc3d8 --- /dev/null +++ b/support/latexdraw/test/abbtest/test25.epc @@ -0,0 +1,22 @@ +LaTeXdraw (Siegert, TUM, C15.03)Digi + 2.44338E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 564.250 420.583 1.000 0.000 0.000 1.000 (GITTERWERTE) +218.834 66.083 901.333 696.681 682.499 630.598 161.100 222.000 1 1 (AUSGABEOPTIONEN) +3 257.000 564.333 380.000 610.333 0.000 133.333 0.000 133.333 0.000 3600.000 1 0 7 131.320 131.320 0.000 +3 256.000 492.333 387.000 549.333 0.000 133.333 0.000 133.333 0.000 3600.000 5 0 7 142.864 142.864 0.000 +3 259.000 412.333 398.000 464.333 0.000 133.333 0.000 133.333 0.000 3600.000 10 0 7 148.408 148.408 0.000 +3 242.000 294.333 397.583 353.917 0.000 133.333 0.000 133.333 0.000 3600.000 15 0 7 166.602 166.602 0.000 +3 262.000 232.333 407.000 280.333 0.000 133.333 0.000 133.333 0.000 3600.000 20 0 7 152.738 152.738 0.000 +5 647.583 287.250 0.000 133.333 0.000 133.333 0.000 133.333 0.000 3600.000 20 0 7 76.645 76.645 0.000 +5 619.000 623.333 0.000 133.333 0.000 133.333 0.000 133.333 0.000 3600.000 1 0 7 73.348 73.348 0.000 +5 497.583 470.583 0.000 133.333 0.000 133.333 0.000 133.333 0.000 3600.000 5 0 7 61.945 61.945 0.000 +5 652.000 480.333 0.000 133.333 0.000 133.333 0.000 133.333 0.000 3600.000 10 0 7 74.000 74.000 0.000 +5 805.000 385.333 0.000 133.333 0.000 133.333 0.000 133.333 0.000 3600.000 15 0 7 96.333 96.333 0.000 +10 574.000 110.000 0.000 0.000 640.779 149.856 659.374 72.951 651.659 3024.757 20 0 7 159.000 43.917 0.000 +10 330.917 287.250 0.000 0.000 233.141 385.026 436.115 356.266 1507.330 201.868 1 0 7 112.083 200.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test26.epc b/support/latexdraw/test/abbtest/test26.epc new file mode 100644 index 0000000000..17988cc69b --- /dev/null +++ b/support/latexdraw/test/abbtest/test26.epc @@ -0,0 +1,69 @@ +LaTeXdraw (Siegert, TUM, C13.10) + 3.00000E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 568.650 295.000 1.000 0.000 0.000 1.000 (GITTERWERTE) +276.920 107.000 840.000 579.099 563.080 472.099 165.600 228.000 0 1 (AUSGABEOPTIONEN) +15 322.000 300.000 0.000 0.000 276.920 235.380 364.311 366.467 2350.997 575.201 401 0 1 78.791 78.791 0.000 +3 398.000 417.000 356.000 354.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 75.717 75.717 0.000 +7 322.000 300.000 0.000 0.000 276.920 235.380 364.311 366.467 2350.997 575.201 1 0 1 78.791 78.791 0.000 +11 475.000 318.000 649.000 335.000 649.000 318.000 475.000 335.000 0.000 3600.000 401 0 1 0.000 0.000 0.000 +11 568.000 140.000 622.000 235.000 622.000 140.000 568.000 235.000 0.000 3600.000 401 0 1 0.000 0.000 0.000 +14 682.000 250.000 840.000 191.000 787.000 256.000 735.317 195.000 0.000 3600.000 401 0 1 0.000 0.000 0.000 +13 751.983 445.000 695.000 413.000 775.000 381.000 0.000 0.000 0.000 3600.000 401 0 1 0.000 0.000 0.000 +15 558.000 473.000 0.000 0.000 605.956 511.822 584.560 417.309 389.910 2954.976 401 0 1 61.700 61.700 0.000 +16 346.000 137.000 0.000 0.000 319.749 108.467 423.937 125.027 2520.111 3364.773 401 0 1 85.000 30.000 0.000 +16 346.000 137.000 0.000 0.000 376.437 165.011 336.994 166.831 690.178 960.818 401 0 1 85.000 30.000 0.000 +7 433.000 184.000 0.000 0.000 376.757 203.919 475.000 141.620 1604.976 3147.422 1 0 1 59.666 59.666 0.000 +3 713.846 423.583 835.322 378.335 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 129.629 129.629 0.000 +3 568.000 181.717 514.000 142.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 67.033 67.033 0.000 +3 749.950 194.441 818.655 144.997 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 84.647 84.647 0.000 +3 323.220 301.749 279.000 291.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 45.508 45.508 0.000 +3 530.744 352.193 398.216 319.979 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 136.387 136.387 0.000 +3 506.000 370.000 554.635 335.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 59.920 59.920 0.000 +3 835.322 378.335 622.000 221.435 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 264.809 264.809 0.000 +3 578.257 318.000 703.348 227.978 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 154.116 154.116 0.000 +3 455.000 520.000 503.504 501.933 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 51.760 51.760 0.000 +10 346.000 137.000 0.000 0.000 319.749 108.467 423.936 125.026 2520.111 3364.769 401 0 1 85.000 30.000 0.000 +10 346.000 137.000 0.000 0.000 376.436 165.011 336.994 166.831 690.180 960.818 401 0 1 85.000 30.000 0.000 +7 657.000 397.000 0.000 0.000 568.000 238.132 622.000 218.296 2407.418 2589.186 1 0 1 182.099 182.099 0.000 +7 657.000 397.000 0.000 0.000 708.747 222.408 771.115 255.092 2865.093 3088.044 1 0 1 182.099 182.099 0.000 +7 657.000 397.000 0.000 0.000 838.356 380.566 497.424 484.724 3548.223 1512.009 1 0 1 182.099 182.099 0.000 +7 657.000 397.000 0.000 0.000 475.119 405.906 475.000 391.000 1771.967 1818.882 1 0 1 182.099 182.099 0.000 +7 657.000 397.000 0.000 0.000 485.781 335.000 492.930 318.000 1999.058 2057.109 1 0 1 182.099 182.099 0.000 +12 418.647 345.001 435.314 495.004 318.645 445.003 334.000 445.003 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 400.791 300.000 562.000 300.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 161.209 161.209 0.000 +3 562.000 300.000 562.000 318.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 18.000 18.000 0.000 +3 400.791 300.000 595.000 300.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 1 1 194.209 194.209 0.000 +3 595.000 300.000 595.000 235.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 65.000 65.000 0.000 +3 622.000 187.500 761.000 187.500 0.000 0.000 0.000 0.000 0.000 3600.000 1 1 1 139.000 139.000 0.000 +3 761.000 187.500 761.000 194.019 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 6.519 6.519 0.000 +3 761.000 220.500 784.303 220.500 0.000 0.000 0.000 0.000 0.000 3600.000 1 1 1 23.303 23.303 0.000 +3 784.303 220.500 784.303 169.719 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 50.781 50.781 0.000 +3 346.000 137.000 322.000 137.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 1 1 24.000 24.000 0.000 +3 322.000 137.000 322.000 221.209 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 84.209 84.209 0.000 +3 558.000 473.000 740.661 473.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 1 1 182.661 182.661 0.000 +3 740.661 473.000 740.661 438.642 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 34.358 34.358 0.000 +3 558.000 473.000 657.000 473.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 1 1 99.000 99.000 0.000 +3 657.000 473.000 657.000 397.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 76.000 76.000 0.000 +3 558.000 473.000 728.661 473.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 1 1 170.661 170.661 0.000 +3 728.661 473.000 728.661 299.885 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 173.115 173.115 0.000 +3 376.473 243.073 433.000 184.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 81.761 81.761 0.000 +3 394.848 269.980 568.000 198.626 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 187.278 187.278 0.000 +3 622.000 192.867 718.741 212.099 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 98.634 98.634 0.000 +3 620.449 235.000 640.803 272.989 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 43.098 43.098 0.000 +3 558.000 473.000 711.851 422.463 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 161.939 161.939 0.000 +3 742.676 393.930 757.428 254.310 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 140.397 140.397 0.000 +3 657.000 397.000 558.000 473.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 3 1 124.808 124.808 0.000 +3 562.000 345.001 562.000 335.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 10.001 10.001 0.000 +3 418.647 326.500 475.000 326.500 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 56.353 56.353 0.000 +3 385.546 346.582 508.238 436.522 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 152.127 152.127 0.000 +3 435.314 495.004 497.269 483.892 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 62.944 62.944 0.000 +3 435.314 495.004 497.269 483.892 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 62.944 62.944 0.000 +3 418.647 345.001 530.317 352.500 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 111.922 111.922 0.000 +3 418.647 345.001 530.317 352.500 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 111.922 111.922 0.000 +3 418.647 345.001 530.317 352.500 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 111.922 111.922 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test27.epc b/support/latexdraw/test/abbtest/test27.epc new file mode 100644 index 0000000000..8077d60cfc --- /dev/null +++ b/support/latexdraw/test/abbtest/test27.epc @@ -0,0 +1,43 @@ +LaTeXdraw (Siegert, TUM, C14.09)Digi + 2.14413E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 568.650 145.000 1.000 0.000 0.000 1.000 (GITTERWERTE) +219.100 -88.884 872.045 560.572 652.946 649.457 140.000 200.000 1 1 (AUSGABEOPTIONEN) +17 551.983 245.000 681.000 306.000 590.350 210.464 681.000 242.000 0.000 3600.000 601 0 1 0.000 0.000 0.000 +17 862.000 108.000 766.000 -84.000 924.751 44.072 668.650 -5.000 0.000 3600.000 601 0 1 0.000 0.000 0.000 +17 708.000 141.000 862.000 108.000 794.000 266.000 702.000 271.000 0.000 3600.000 601 0 1 0.000 0.000 0.000 +17 407.000 269.000 551.983 245.000 493.000 303.000 452.000 335.000 0.000 3600.000 601 0 1 0.000 0.000 0.000 +5 268.650 345.000 0.000 -150.000 0.000 -150.000 0.000 -150.000 0.000 3600.000 1 0 1 49.550 49.550 0.000 +12 407.000 269.000 551.983 245.000 493.000 303.000 452.000 335.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 551.983 245.000 681.000 306.000 590.350 210.464 681.000 242.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +17 493.000 -44.000 751.983 111.667 514.820 -75.543 588.000 -31.000 0.000 3600.000 401 0 1 0.000 0.000 0.000 +17 751.983 111.667 477.000 131.000 753.190 112.717 751.983 111.667 0.000 3600.000 401 0 1 0.000 0.000 0.000 +12 493.000 -44.000 594.000 139.000 520.059 -72.512 514.000 52.000 0.000 3600.000 601 0 1 0.000 0.000 0.000 +12 708.000 141.000 862.000 108.000 794.000 266.000 702.000 271.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 862.000 108.000 766.000 -84.000 924.751 44.072 668.650 -5.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +17 542.000 58.000 663.000 -77.000 607.261 48.616 629.000 198.000 0.000 3600.000 601 0 1 0.000 0.000 0.000 +17 663.000 -77.000 402.000 -78.000 670.860 -140.576 701.983 78.333 0.000 3600.000 601 0 1 0.000 0.000 0.000 +3 449.000 150.000 335.317 61.667 0.000 -150.000 0.000 -150.000 0.000 3600.000 601 0 1 0.000 0.000 0.000 +17 553.933 79.900 566.500 226.318 608.128 154.833 629.005 107.197 0.000 3600.000 601 0 1 0.000 0.000 0.000 +17 566.500 226.318 657.486 336.263 542.514 272.028 595.470 352.076 0.000 3600.000 601 0 1 0.000 0.000 0.000 +17 504.272 403.194 510.346 560.572 646.646 455.642 628.759 365.259 0.000 3600.000 620 0 1 0.000 0.000 0.000 +17 271.886 240.569 486.716 453.061 246.713 269.506 307.956 329.412 0.000 3600.000 20 0 1 0.000 0.000 0.000 +17 307.164 55.836 457.769 156.754 372.721 48.804 356.876 -101.319 0.000 3600.000 601 0 1 0.000 0.000 0.000 +17 265.870 130.236 480.699 342.727 240.696 159.173 301.939 219.078 0.000 3600.000 401 0 1 0.000 0.000 0.000 +17 273.886 78.569 488.716 291.061 248.713 107.506 309.956 167.412 0.000 3600.000 401 0 1 0.000 0.000 0.000 +17 272.886 56.569 487.716 269.061 247.713 85.506 308.956 145.412 0.000 3600.000 401 0 1 0.000 0.000 0.000 +17 264.886 35.569 479.716 248.061 239.713 64.506 300.956 124.412 0.000 3600.000 401 0 1 0.000 0.000 0.000 +17 265.870 30.236 480.699 242.727 240.696 59.173 301.939 119.078 0.000 3600.000 401 0 1 0.000 0.000 0.000 +17 264.886 22.569 479.716 235.061 239.713 51.506 300.956 111.412 0.000 3600.000 401 0 1 0.000 0.000 0.000 +17 265.870 13.569 480.699 226.061 240.696 42.506 301.939 102.412 0.000 3600.000 401 0 1 0.000 0.000 0.000 +3 504.272 403.194 486.716 453.061 0.000 0.000 0.000 0.000 0.000 3600.000 5420 0 1 0.000 0.000 0.000 +3 566.500 226.318 708.000 141.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 566.500 226.318 708.000 226.318 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +3 708.000 226.318 708.000 141.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +17 735.000 367.000 813.000 301.000 831.000 425.000 662.000 519.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 4 6 17 20 27 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test28.epc b/support/latexdraw/test/abbtest/test28.epc new file mode 100644 index 0000000000..ac70c62e43 --- /dev/null +++ b/support/latexdraw/test/abbtest/test28.epc @@ -0,0 +1,18 @@ +LaTeXdraw (Siegert, TUM, C14.11)Digi + 3.00000E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 464.650 389.250 1.000 0.000 0.000 1.000 (GITTERWERTE) +210.363 39.250 864.658 547.583 654.295 508.333 165.600 228.000 0 1 (AUSGABEOPTIONEN) +12 231.317 422.583 397.983 422.583 397.983 589.250 231.317 589.250 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 214.650 39.250 697.983 39.250 697.983 139.250 214.650 139.250 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 346.000 231.000 507.000 259.000 569.000 363.000 347.981 372.583 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 507.000 259.000 225.000 384.000 521.506 248.639 481.317 222.580 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 225.000 384.000 573.000 379.000 134.279 441.133 493.000 380.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 573.000 379.000 464.650 155.912 612.215 378.510 570.000 281.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 464.650 155.912 849.000 531.000 393.388 71.298 206.000 58.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +12 849.000 531.000 864.658 505.919 876.718 551.390 763.000 529.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test29.epc b/support/latexdraw/test/abbtest/test29.epc new file mode 100644 index 0000000000..26ec6ad94a --- /dev/null +++ b/support/latexdraw/test/abbtest/test29.epc @@ -0,0 +1,19 @@ +LaTeXdraw (Siegert, TUM, C15.02)Digi + 2.55883E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 562.800 295.000 1.000 0.000 0.000 1.000 (GITTERWERTE) +79.467 111.663 746.137 584.749 666.670 473.086 145.000 240.000 1 1 (AUSGABEOPTIONEN) +3 262.800 445.000 362.800 278.333 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 194.365 194.365 0.000 +3 362.800 278.333 512.800 428.333 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 212.132 212.132 0.000 +7 362.800 278.333 0.000 0.000 323.647 341.757 415.763 330.779 1216.878 447.192 10 3 1 74.536 74.536 0.000 +7 362.800 278.333 0.000 0.000 467.736 383.269 286.448 405.587 450.000 1209.638 10 3 1 148.402 148.402 0.000 +10 362.800 278.333 0.000 0.000 422.273 338.000 324.487 342.188 635.094 1066.992 10 3 1 133.333 66.667 0.000 +10 362.800 278.333 0.000 0.000 298.152 386.081 465.882 381.416 1031.894 686.650 10 3 1 283.333 110.667 0.000 +3 262.800 445.000 512.800 428.333 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 250.555 250.555 0.000 +7 362.800 278.333 0.000 0.000 579.466 495.005 205.145 541.080 450.008 1209.648 10 3 1 306.416 306.416 0.000 +10 412.797 111.663 0.000 0.000 746.137 111.663 412.797 261.666 0.000 900.000 10 3 1 333.340 150.003 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test30.epc b/support/latexdraw/test/abbtest/test30.epc new file mode 100644 index 0000000000..6648c3fde1 --- /dev/null +++ b/support/latexdraw/test/abbtest/test30.epc @@ -0,0 +1,27 @@ +LaTeXdraw (Siegert, TUM, C15.06)Digi + 2.20866E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 562.800 595.006 1.000 0.000 0.000 1.000 (GITTERWERTE) +214.508 111.663 896.140 834.006 681.632 722.343 150.000 200.000 1 1 (AUSGABEOPTIONEN) +8 405.000 721.006 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 1 0 1 101.000 28.000 0.000 +8 402.000 615.006 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 1 0 5 110.800 30.000 0.000 +8 396.133 511.673 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 1 0 3 116.667 33.333 0.000 +8 396.133 411.673 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 1 0 7 108.867 22.333 0.000 +8 662.800 411.673 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 7 50.000 54.333 0.000 +8 652.000 544.006 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 3 187.000 31.000 0.000 +8 570.000 682.006 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 7 34.000 152.000 0.000 +8 729.467 645.006 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 5 50.000 166.667 0.000 +3 221.000 683.006 279.467 795.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 5 126.342 126.342 0.000 +8 315.000 502.006 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 5 162.288 75.323 624.344 +8 453.000 439.006 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 7 118.956 38.431 624.344 +8 362.800 711.673 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 3 89.628 37.262 624.344 +9 846.133 678.339 0.000 300.006 0.000 300.006 0.000 300.006 0.000 3600.000 20 0 3 90.460 25.365 624.344 +12 294.000 133.000 496.132 128.330 446.131 194.998 305.000 214.000 0.000 3600.000 1 3 1 0.000 0.000 0.000 +12 496.132 128.330 396.130 111.663 532.235 112.148 503.000 227.000 0.000 3600.000 4 3 3 0.000 0.000 0.000 +12 629.468 161.664 896.140 161.664 820.000 310.000 529.466 328.334 0.000 3600.000 6 3 7 0.000 0.000 0.000 +12 449.000 219.000 573.000 197.000 828.000 401.000 557.000 489.000 0.000 3600.000 14 3 5 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test31.epc b/support/latexdraw/test/abbtest/test31.epc new file mode 100644 index 0000000000..479c073348 --- /dev/null +++ b/support/latexdraw/test/abbtest/test31.epc @@ -0,0 +1,22 @@ +LaTeXdraw (Siegert, TUM, C15.02)Digi + 2.81850E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 562.800 295.000 1.000 0.000 0.000 1.000 (GITTERWERTE) +260.000 43.587 805.198 479.325 545.198 435.738 150.000 200.000 1 1 (AUSGABEOPTIONEN) +3 307.000 477.000 273.000 372.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 110.368 110.368 0.000 +10 385.000 367.000 0.000 0.000 364.244 428.365 433.359 355.277 2310.912 925.928 1 0 1 82.771 49.670 2520.576 +10 356.000 203.000 0.000 0.000 358.346 152.183 343.496 233.008 536.179 2520.849 1 0 5 80.286 22.217 2520.576 +10 512.800 228.333 0.000 0.000 630.843 260.504 591.769 133.489 1378.302 431.680 1 0 7 90.360 152.521 2520.576 +10 496.133 261.667 0.000 0.000 510.678 363.477 510.057 236.906 2366.144 839.946 1 0 3 184.162 20.990 2520.576 +10 588.000 230.000 0.000 0.000 594.930 299.583 605.142 231.558 2495.821 919.788 9 0 3 195.875 15.838 2520.576 +5 665.000 433.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 20 0 3 46.325 46.325 0.000 +7 756.000 249.000 0.000 0.000 805.198 307.351 787.732 179.585 498.645 2945.672 20 0 3 76.324 76.324 0.000 +12 262.000 271.000 638.000 114.000 441.000 450.000 331.000 489.000 0.000 3600.000 10 3 5 0.000 0.000 0.000 +12 260.000 301.000 636.000 144.000 439.000 480.000 329.000 519.000 0.000 3600.000 10 3 3 0.000 0.000 0.000 +12 272.000 344.000 648.000 187.000 451.000 523.000 341.000 562.000 0.000 3600.000 10 3 7 0.000 0.000 0.000 +12 270.000 227.000 646.000 70.000 449.000 406.000 339.000 445.000 0.000 3600.000 10 3 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test32.epc b/support/latexdraw/test/abbtest/test32.epc new file mode 100644 index 0000000000..6f9c979ae1 --- /dev/null +++ b/support/latexdraw/test/abbtest/test32.epc @@ -0,0 +1,23 @@ +LaTeXdraw (Siegert, TUM, C15.21) + 2.20866E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 562.800 295.000 1.000 0.000 0.000 1.000 (GITTERWERTE) +214.508 32.059 893.651 534.000 679.144 501.941 150.000 200.000 1 1 (AUSGABEOPTIONEN) +8 405.000 421.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 5 0 1 101.000 28.000 0.000 +8 402.000 315.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 5 0 5 110.800 30.000 0.000 +8 396.133 211.667 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 5 0 3 116.667 33.333 0.000 +8 396.133 111.667 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 5 0 7 108.867 22.333 0.000 +8 662.800 111.667 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 7 50.000 54.333 0.000 +8 652.000 244.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 3 187.000 31.000 0.000 +8 570.000 382.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 7 34.000 152.000 0.000 +8 729.467 345.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 5 50.000 166.667 0.000 +3 221.000 383.000 279.467 495.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 5 126.342 126.342 0.000 +8 315.000 202.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 5 162.288 75.323 624.344 +8 453.000 139.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 7 118.956 38.431 624.344 +8 362.800 411.667 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 10 0 3 89.628 37.262 624.344 +9 846.133 378.333 0.000 0.000 0.000 0.000 0.000 0.000 0.000 3600.000 20 0 3 90.460 25.365 624.344 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test33.epc b/support/latexdraw/test/abbtest/test33.epc new file mode 100644 index 0000000000..5bec577794 --- /dev/null +++ b/support/latexdraw/test/abbtest/test33.epc @@ -0,0 +1,21 @@ +LaTeXdraw (Siegert, TUM, C15.03)Digi + 2.33052E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 562.400 294.750 1.000 0.000 0.000 1.000 (GITTERWERTE) +235.000 94.133 835.725 511.638 600.725 417.505 140.000 200.000 1 1 (AUSGABEOPTIONEN) +12 312.400 261.417 614.000 219.000 512.400 361.417 379.067 394.750 0.000 3600.000 1 1 1 0.000 0.000 0.000 +12 614.000 219.000 728.000 352.000 644.871 195.906 525.000 182.000 0.000 3600.000 20 1 1 0.000 0.000 0.000 +12 395.733 228.083 584.000 385.000 551.000 462.000 345.733 478.083 0.000 3600.000 20 1 1 0.000 0.000 0.000 +12 584.000 385.000 545.733 194.750 692.703 342.533 445.733 128.083 0.000 3600.000 20 1 1 0.000 0.000 0.000 +12 235.000 313.000 367.000 367.000 338.000 431.000 269.000 453.000 0.000 3600.000 4 0 1 0.000 0.000 0.000 +12 367.000 367.000 829.072 94.746 496.979 252.937 795.738 311.417 0.000 3600.000 7 2 1 0.000 0.000 0.000 +12 636.000 97.000 312.400 261.417 401.000 75.000 356.000 214.000 0.000 3600.000 7 2 1 0.000 0.000 0.000 +12 312.400 261.417 722.000 443.000 197.238 386.661 728.000 352.000 0.000 3600.000 7 3 1 0.000 0.000 0.000 +12 722.000 443.000 501.000 508.000 713.139 577.396 386.000 465.000 0.000 3600.000 7 0 1 0.000 0.000 0.000 +12 779.000 253.000 753.000 499.000 889.000 354.000 816.000 436.000 0.000 3600.000 7 0 1 0.000 0.000 0.000 +12 279.061 494.754 272.000 162.000 237.000 419.000 226.000 272.000 0.000 3600.000 1 0 1 0.000 0.000 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test34.epc b/support/latexdraw/test/abbtest/test34.epc new file mode 100644 index 0000000000..2ee9289fd3 --- /dev/null +++ b/support/latexdraw/test/abbtest/test34.epc @@ -0,0 +1,27 @@ +LaTeXdraw (Siegert, TUM, C15.03)Digi + 2.36569E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 562.800 295.000 1.000 0.000 0.000 1.000 (GITTERWERTE) +146.133 -271.678 846.139 528.338 700.006 800.016 165.600 228.000 1 1 (AUSGABEOPTIONEN) +3 279.467 461.667 412.800 278.333 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 226.692 226.692 0.000 +3 412.800 278.333 562.800 461.667 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 236.878 236.878 0.000 +7 412.800 278.333 0.000 0.000 495.817 379.799 335.691 384.358 507.106 1260.274 1 3 1 131.100 131.100 0.000 +7 412.800 278.333 0.000 0.000 543.662 438.276 291.251 445.463 507.106 1260.274 20 3 3 206.656 206.656 0.000 +7 412.800 278.333 0.000 0.000 291.251 445.463 543.662 438.276 1260.274 507.106 20 3 1 206.656 206.656 0.000 +10 412.800 278.333 0.000 0.000 353.701 359.594 478.857 359.069 1028.043 756.578 20 3 1 266.667 83.333 0.000 +3 229.467 528.333 762.800 528.333 0.000 0.000 0.000 0.000 0.000 3600.000 20 3 1 533.333 533.333 0.000 +12 229.467 528.333 479.465 295.000 274.000 262.000 397.000 253.000 0.000 3600.000 4 0 1 0.000 0.000 0.000 +12 479.465 295.000 471.000 146.000 532.600 322.062 346.129 228.332 0.000 3600.000 5810 0 1 0.000 0.000 0.000 +12 762.804 528.338 635.000 258.000 846.139 261.666 861.000 351.000 0.000 3600.000 2010 3 1 0.000 0.000 0.000 +12 616.000 473.000 686.000 398.000 784.000 373.000 800.000 556.000 0.000 3600.000 1720 3 1 0.000 0.000 0.000 +3 346.129 144.997 731.000 339.000 0.000 0.000 0.000 0.000 0.000 3600.000 1720 3 1 431.002 431.002 0.000 +10 470.002 -80.340 0.000 -300.006 770.008 -80.340 169.996 -80.340 0.000 1800.000 20 3 1 300.006 33.334 0.000 +10 446.131 -121.675 0.000 -300.006 446.131 -271.678 446.131 28.328 2700.000 900.000 20 3 1 33.334 150.003 0.000 +7 562.800 -121.675 0.000 -300.006 662.802 -121.675 562.800 -21.673 0.000 900.000 20 3 1 100.002 100.002 0.000 +7 729.470 128.330 0.000 0.000 746.137 128.330 729.470 111.663 0.000 2700.000 20 3 1 16.667 16.667 0.000 +10 812.805 128.330 0.000 0.000 846.139 128.330 812.805 144.997 0.000 900.000 20 3 1 33.334 16.667 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/abbtest/test35.epc b/support/latexdraw/test/abbtest/test35.epc new file mode 100644 index 0000000000..b483d97f54 --- /dev/null +++ b/support/latexdraw/test/abbtest/test35.epc @@ -0,0 +1,47 @@ +LaTeXdraw (Siegert, TUM, C15.14) + 2.64706E-01 (TEXFAKTOR) + 2.00000E+00 (TEXDASHLAENGE) + 1.80000E+00 (TEXDOTGAP) + 8.00000E-01 (TEXINTERDOTGAP) +16.667 16.667 562.400 294.750 1.000 0.000 0.000 1.000 (GITTERWERTE) +210.000 78.083 838.000 518.000 628.000 439.917 165.600 228.000 1 1 (AUSGABEOPTIONEN) +3 254.000 421.000 353.000 518.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 2 1 138.600 138.600 0.000 +3 295.733 394.750 405.000 494.000 0.000 0.000 0.000 0.000 0.000 3600.000 3 2 1 147.614 147.614 0.000 +3 332.000 369.000 462.400 478.083 0.000 0.000 0.000 0.000 0.000 3600.000 5 2 1 170.010 170.010 0.000 +3 374.000 332.000 539.000 451.000 0.000 0.000 0.000 0.000 0.000 3600.000 7 2 1 203.435 203.435 0.000 +3 457.000 324.000 633.000 471.000 0.000 0.000 0.000 0.000 0.000 3600.000 9 2 1 229.314 229.314 0.000 +3 532.000 304.000 662.400 394.750 0.000 0.000 0.000 0.000 0.000 3600.000 11 2 1 158.870 158.870 0.000 +3 544.000 237.000 735.000 368.000 0.000 0.000 0.000 0.000 0.000 3600.000 13 2 1 231.607 231.607 0.000 +3 568.000 189.000 757.000 282.000 0.000 0.000 0.000 0.000 0.000 3600.000 15 2 1 210.642 210.642 0.000 +3 572.000 154.000 829.067 178.083 0.000 0.000 0.000 0.000 0.000 3600.000 17 2 1 258.193 258.193 0.000 +3 545.733 128.083 838.000 90.000 0.000 0.000 0.000 0.000 0.000 3600.000 19 2 1 294.738 294.738 0.000 +12 295.733 78.083 435.000 96.000 379.067 128.083 279.067 144.750 0.000 3600.000 19 3 1 0.000 0.000 0.000 +12 435.000 96.000 336.000 244.000 513.377 71.497 250.000 185.000 0.000 3600.000 1 3 1 0.000 0.000 0.000 +10 414.000 222.000 0.000 0.000 433.945 264.611 477.659 195.352 755.629 3227.253 1 3 1 80.000 44.000 0.000 +10 276.667 351.333 0.000 0.000 210.584 365.802 342.115 372.190 1724.125 109.723 20 3 1 66.667 109.583 0.000 +3 353.000 518.000 405.000 494.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 57.271 57.271 0.000 +3 462.398 478.087 405.000 494.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 59.563 59.563 0.000 +3 462.398 478.087 539.000 451.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 81.250 81.250 0.000 +3 539.000 451.000 633.000 471.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 96.104 96.104 0.000 +3 662.400 394.750 633.000 471.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 81.722 81.722 0.000 +3 662.400 394.750 735.000 368.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 77.371 77.371 0.000 +3 735.000 368.000 757.000 282.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 88.769 88.769 0.000 +3 757.000 282.000 829.067 178.083 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 126.461 126.461 0.000 +3 838.000 90.000 829.072 178.081 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 88.532 88.532 0.000 +3 545.733 128.083 572.000 154.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 36.900 36.900 0.000 +3 572.000 154.000 568.000 189.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 35.228 35.228 0.000 +3 532.000 304.000 544.000 237.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 68.066 68.066 0.000 +3 544.000 237.000 568.000 189.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 53.666 53.666 0.000 +3 532.000 304.000 457.000 324.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 77.621 77.621 0.000 +3 457.000 324.000 433.945 264.611 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 63.707 63.707 0.000 +3 433.945 264.611 374.000 332.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 90.192 90.192 0.000 +3 374.000 332.000 332.000 369.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 55.973 55.973 0.000 +3 332.000 369.000 295.733 394.750 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 44.479 44.479 0.000 +3 254.000 421.000 295.733 394.750 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 49.302 49.302 0.000 +3 254.000 421.000 210.584 365.802 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 70.227 70.227 0.000 +3 545.733 128.083 477.659 195.352 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 95.704 95.704 0.000 +3 295.733 78.083 254.000 421.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 345.447 345.447 0.000 +3 435.000 96.000 254.000 421.000 0.000 0.000 0.000 0.000 0.000 3600.000 1 0 1 372.003 372.003 0.000 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 +0 0
\ No newline at end of file diff --git a/support/latexdraw/test/diagrammtest/stapel1.txt b/support/latexdraw/test/diagrammtest/stapel1.txt new file mode 100644 index 0000000000..6bf29d4f30 --- /dev/null +++ b/support/latexdraw/test/diagrammtest/stapel1.txt @@ -0,0 +1,28 @@ +# Zum Erzeugen Stapeldiagramm +# Eingabe fuer ldstapeldiagramm + +Stapeltest1 6.3.1996 +% das ist ein Kommentar +% das ist ein Kommentar +# das ist ein Kommentar + +folie +farbig +Bew. + +Land Bewohner +A 2193 +B 2412 +C 1375 +D 1685 +E 1271 +FF 374 +GG 1012 +H 1057 +I 1376 +J 2431 +K 1955 +L 1126 + +Anmerkung: +Daten erhoben von S.K.H. diff --git a/support/latexdraw/test/diagrammtest/stapel2.txt b/support/latexdraw/test/diagrammtest/stapel2.txt new file mode 100644 index 0000000000..20dcf99ff4 --- /dev/null +++ b/support/latexdraw/test/diagrammtest/stapel2.txt @@ -0,0 +1,30 @@ +# Zum Erzeugen Stapeldiagramm +# Eingabe fuer ldstapeldiagramm + +Bewohner und Bewohnerinnen +% das ist ein Kommentar +% das ist ein Kommentar +# das ist ein Kommentar + +folie +farbig +BewInnen + +Ort M"anner Frauen +AL 235 85 +B 896 71 +C 249 63 +DDD 144 185 +E 88 34 +F 1075 408 +G 731 638 +H 2139 104 +I 222 12 +JJ 485 509 +K 1185 144 +L 1583 102 +M 396 353 + + +Anmerkung: +Stand nach Umfrage 1902/DR4 diff --git a/support/latexdraw/test/diagrammtest/stapel3.txt b/support/latexdraw/test/diagrammtest/stapel3.txt new file mode 100644 index 0000000000..f03b4a8075 --- /dev/null +++ b/support/latexdraw/test/diagrammtest/stapel3.txt @@ -0,0 +1,28 @@ +# Zum Erzeugen Stapeldiagramm +# Eingabe fuer ldstapeldiagramm + +Test3 Stapel Krokos +% das ist ein Kommentar +% das ist ein Kommentar +# das ist ein Kommentar + +folie +farbig +Krokodile in Tsd + +Teich alte~K. junge~K. gr"une~K. rote~K. gelbe~K. +AA 731E-2 638E-2 +BB 2139E-2 104E-2 +CC 1583E-2 102E-2 5.4 8.5 12.5 +D 1185E-2 144E-2 +EE 235E-2 185E-2 +FF 896E-2 271E-2 11.7 6.0 8.27 +G 249E-2 163E-2 +H7 396E-2 353E-2 +IK 222E-2 312E-2 +JO 144E-2 185E-2 +KK 1075E-2 408E-2 +L 485E-2 509E-2 + +Anmerkung: +Stand Juli 2003 diff --git a/support/latexdraw/test/diagrammtest/torte1.txt b/support/latexdraw/test/diagrammtest/torte1.txt new file mode 100644 index 0000000000..5daf6fb74d --- /dev/null +++ b/support/latexdraw/test/diagrammtest/torte1.txt @@ -0,0 +1,26 @@ +# Tortendiagramm Test1 +# Eingabe fuer ldtortendiagramm + +Tortentest 6.3.1996 +% das ist ein Kommentar +folie +farbig + +AL 1376 +RR 2431 +X1 374 +Mm 1012 +DVA 1057 +WX 2193 +VZ 2412 +MS 1955 +3A 1375 +ZX 1685 +ME 1271 + + +Anmerkung: +Anmerkung: +Das sind Testzahlen +Das ist eine Anmerkung gewesen +3. und letzte Zeile der Anmerkungen
\ No newline at end of file diff --git a/support/latexdraw/texinputs/dicker.sty b/support/latexdraw/texinputs/dicker.sty new file mode 100644 index 0000000000..394142fcfa --- /dev/null +++ b/support/latexdraw/texinputs/dicker.sty @@ -0,0 +1,12 @@ + +%++++++++++++++++++++++++++++++++++++++++ +% Linienstaerke in Zeichnungen verst"arken +% durch Neudef. ldlinewidth aus latexdraw.sty +% Parameter 1 Linienstaerke 1, 2, 3 usw. +% Parameter 2 Linienstaerke in pt nach latexdraw +%++++++++++++++++++++++++++++++++++++++++ + +\renewcommand{\ldlinewidth}[2]{\renewcommand{\LdLineWidth}{#2}% +\psset{unit=\unitlength}\setlength{\pslinewidth}{#2pt}% +\ifnum #1<3 \setlength{\pslinewidth}{1.5\pslinewidth}\else% +{\ifnum #1<5 \setlength{\pslinewidth}{1.1\pslinewidth}\fi}\fi} diff --git a/support/latexdraw/texinputs/latexdraw.sty b/support/latexdraw/texinputs/latexdraw.sty new file mode 100644 index 0000000000..4bb38893c7 --- /dev/null +++ b/support/latexdraw/texinputs/latexdraw.sty @@ -0,0 +1,404 @@ +% 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 |