summaryrefslogtreecommitdiff
path: root/support/latexdraw
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/latexdraw
Initial commit
Diffstat (limited to 'support/latexdraw')
-rw-r--r--support/latexdraw/Makefile237
-rwxr-xr-xsupport/latexdraw/bin/latex2epc436
-rwxr-xr-xsupport/latexdraw/bin/ldstapeldiagramm190
-rwxr-xr-xsupport/latexdraw/bin/ldtortendiagramm129
-rw-r--r--support/latexdraw/digitizer/digitizer.c360
-rw-r--r--support/latexdraw/digitizer/digitizer.h29
-rw-r--r--support/latexdraw/doc/ltdmanual.e.ps.gzbin0 -> 71319 bytes
-rw-r--r--support/latexdraw/doc/ltdmanual.e.tex.gzbin0 -> 13940 bytes
-rw-r--r--support/latexdraw/doc/ltdmanual.g.ps.gzbin0 -> 80900 bytes
-rw-r--r--support/latexdraw/doc/ltdmanual.g.tex.gzbin0 -> 18153 bytes
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/index.html64
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node1.html29
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node10.html44
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node11.html35
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node12.html26
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node13.html651
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node14.html38
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node15.html40
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node16.html36
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node17.html61
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node18.html52
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node19.html133
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node2.html36
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node20.html47
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node21.html47
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node22.html55
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node23.html25
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node3.html57
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node4.html35
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node5.html28
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node6.html40
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node7.html36
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node8.html50
-rw-r--r--support/latexdraw/doc/ltdmanual.html.e/node9.html42
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/index.html62
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node1.html29
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node10.html50
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node11.html38
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node12.html27
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node13.html751
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node14.html38
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node15.html77
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node16.html31
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node17.html97
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node18.html27
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node19.html133
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node2.html45
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node20.html49
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node21.html25
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node3.html60
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node4.html35
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node5.html28
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node6.html48
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node7.html36
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node8.html72
-rw-r--r--support/latexdraw/doc/ltdmanual.html.g/node9.html52
-rw-r--r--support/latexdraw/latexdraw.c10677
-rw-r--r--support/latexdraw/man/man1/latexdraw.170
-rw-r--r--support/latexdraw/test/abbtest/allecolors.tex1185
-rw-r--r--support/latexdraw/test/abbtest/test01.epc363
-rw-r--r--support/latexdraw/test/abbtest/test02.epc81
-rw-r--r--support/latexdraw/test/abbtest/test03.epc19
-rw-r--r--support/latexdraw/test/abbtest/test04.epc30
-rw-r--r--support/latexdraw/test/abbtest/test05.epc41
-rw-r--r--support/latexdraw/test/abbtest/test06.epc14
-rw-r--r--support/latexdraw/test/abbtest/test07.epc15
-rw-r--r--support/latexdraw/test/abbtest/test08.epc93
-rw-r--r--support/latexdraw/test/abbtest/test09.epc44
-rw-r--r--support/latexdraw/test/abbtest/test10.epc23
-rw-r--r--support/latexdraw/test/abbtest/test11.epc122
-rw-r--r--support/latexdraw/test/abbtest/test12.epc59
-rw-r--r--support/latexdraw/test/abbtest/test13.epc9
-rw-r--r--support/latexdraw/test/abbtest/test14.epc15
-rw-r--r--support/latexdraw/test/abbtest/test15.epc24
-rw-r--r--support/latexdraw/test/abbtest/test16.epc49
-rw-r--r--support/latexdraw/test/abbtest/test17.epc51
-rw-r--r--support/latexdraw/test/abbtest/test18.epc12
-rw-r--r--support/latexdraw/test/abbtest/test19.epc37
-rw-r--r--support/latexdraw/test/abbtest/test20.epc134
-rw-r--r--support/latexdraw/test/abbtest/test21.epc72
-rw-r--r--support/latexdraw/test/abbtest/test22.epc24
-rw-r--r--support/latexdraw/test/abbtest/test23.epc56
-rw-r--r--support/latexdraw/test/abbtest/test24.epc28
-rw-r--r--support/latexdraw/test/abbtest/test25.epc22
-rw-r--r--support/latexdraw/test/abbtest/test26.epc69
-rw-r--r--support/latexdraw/test/abbtest/test27.epc43
-rw-r--r--support/latexdraw/test/abbtest/test28.epc18
-rw-r--r--support/latexdraw/test/abbtest/test29.epc19
-rw-r--r--support/latexdraw/test/abbtest/test30.epc27
-rw-r--r--support/latexdraw/test/abbtest/test31.epc22
-rw-r--r--support/latexdraw/test/abbtest/test32.epc23
-rw-r--r--support/latexdraw/test/abbtest/test33.epc21
-rw-r--r--support/latexdraw/test/abbtest/test34.epc27
-rw-r--r--support/latexdraw/test/abbtest/test35.epc47
-rw-r--r--support/latexdraw/test/diagrammtest/stapel1.txt28
-rw-r--r--support/latexdraw/test/diagrammtest/stapel2.txt30
-rw-r--r--support/latexdraw/test/diagrammtest/stapel3.txt28
-rw-r--r--support/latexdraw/test/diagrammtest/torte1.txt26
-rw-r--r--support/latexdraw/texinputs/dicker.sty12
-rw-r--r--support/latexdraw/texinputs/latexdraw.sty404
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
new file mode 100644
index 0000000000..2f7501fdf2
--- /dev/null
+++ b/support/latexdraw/doc/ltdmanual.e.ps.gz
Binary files differ
diff --git a/support/latexdraw/doc/ltdmanual.e.tex.gz b/support/latexdraw/doc/ltdmanual.e.tex.gz
new file mode 100644
index 0000000000..0d18298e7c
--- /dev/null
+++ b/support/latexdraw/doc/ltdmanual.e.tex.gz
Binary files differ
diff --git a/support/latexdraw/doc/ltdmanual.g.ps.gz b/support/latexdraw/doc/ltdmanual.g.ps.gz
new file mode 100644
index 0000000000..346257da25
--- /dev/null
+++ b/support/latexdraw/doc/ltdmanual.g.ps.gz
Binary files differ
diff --git a/support/latexdraw/doc/ltdmanual.g.tex.gz b/support/latexdraw/doc/ltdmanual.g.tex.gz
new file mode 100644
index 0000000000..ec970cc03f
--- /dev/null
+++ b/support/latexdraw/doc/ltdmanual.g.tex.gz
Binary files differ
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 '&#92;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 &#92;F&#60;fname&#62;, 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 &#92;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 '&#124;&#124;' 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 '&#124;&#124;', '&#124;-', ' _ ', ' . ',
+ 'b&#62;', 'e&#62;' and '|]'.
+<P>
+ '&#124;&#124;' says that you want to draw a line which is parallel to
+ some other line and has the same lenght.
+<P>
+ '&#124;-' 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&#62;' ('e&#62;') 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&#62;' and 'e&#62;' 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 '&#124;&#124;' 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 '&#124;&#124;'<BR>
+ The symbol '&#124;&#124;' stands for parallel.
+<P>
+ If you draw a line and '&#124;&#124;' 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 '-&#124;'<BR>
+ The symbol '-&#124;' 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&#62;'<BR>
+ An arrow is at the beginning of a line, an arc or a Bezier curve.
+<P>
+<LI> Menue item 'e&#62;'<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 '=&#60;number&#62;'<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*&#60;number&#62;. 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 ' &#60; &#94; v &#62; '<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 '&#60;colornumber&#62;:&#60;colorname&#62;'<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:&#60;dauer&#62;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 &#92;beginpicture and
+ ends with &#92;endpicture. This type of file is used for
+ including in an other document by &#92;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 ''&#92;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 &#60;= wanf &#60;= 3600<TR><TD>
+ <TD> wend <TD> angle of end point (in 0.1 degrees), 0 &#60;= wend &#60;= 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 &#60;= wanf &#60;= 3600<TR><TD>
+ <TD> wend <TD> angle of end point (in 0.1 degrees), 0 &#60;= wend &#60;= 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 &#60;= wanf &#60;= 3600<TR><TD>
+ <TD> wend <TD> angle of end point (in 0.1 degrees), 0 &#60;= wend &#60;= 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 &#60;= wanf &#60;= 3600<TR><TD>
+ <TD> wend <TD> angle of end point (in 0.1 degrees), 0 &#60;= wend &#60;= 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>
+&#92;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 &#169; 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 &#60; comma separated list of
+pathnames &#62;. 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> &#92;input{&#60;filename&#62;}
+ </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>
+ ''&#92;documentstyle[latexdraw]{article}''
+<LI> -2e sets the header line to:<BR>
+ ''&#92;documentclass{article}&#92;input{latexdraw.sty}''
+<LI> -d followed by a string x sets the header line to x.<BR>
+ Example:<BR> latexdraw -l -d
+ '&#92;[latexdraw]{report}&#92;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|&#62;|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&#228;rtskompatibel mit allen &#228;lteren
+Versionen, die unter X-Window ablaufen. Ab Version 14.04 ist es
+m&#246;glich, ein Digitalisiertablett anzuschlie&#223;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&#228;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&#228;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&#246;nnen zu Gruppen zusammengefa&#223;t werden.
+ Diese k&#246;nnen wiederum mit anderen Zeichnungselementen und oder
+ Gruppen zu neuen Gruppen zusammengefa&#223;t werden. Die
+ Gruppenstruktur kann auch wieder abgebaut werden.
+<P>
+ Ist der Gruppenmodus ausgeschaltet, dann hat die vorhandene
+ Gruppenstruktur keinen Einflu&#223; auf die Auswahl der Elemente.
+ Ausgew&#228;hlt ist dann das angeklickte Element oder alle in einem
+ Auswahlfenster befindliche Zeichnungselemente, unabh&#228;ngig von ihrer
+ Gruppenzugeh&#246;rigkeit.
+<P>
+ Ist der Gruppenmodus eingeschaltet dann beeinflu&#223;t die
+ Gruppenstruktur die Auswahl der Elemente. Eine Ausnahme sind die
+ F&#228;lle, in denen aufgrund des Kontextes nur ein Einzelelement
+ angegeben werden kann. Hier gilt das angeklickte Zeichnungselement.
+ In allen anderen F&#228;llen gilt:
+ <UL><LI> Wird ein Element angeklickt, dann sind alle Elemente
+ ausgew&#228;hlt, die zu der umfassendsten Gruppe des angeklickten
+ Elements geh&#246;ren. Falls das angeklickte Element zu keiner Gruppe
+ geh&#246;rt, dann ist nur dieses Element ausgew&#228;hlt.
+ <LI> Wird ein Auswahlrechteck aufgezogen, dann sind alle Elemente,
+ die keiner Gruppe angeh&#246;ren und im Auswahlrechteck sind
+ ausgew&#228;hlt. Dar&#252;berhinaus sind alle Elemente ausgew&#228;hlt, deren
+ umfassendste Gruppe vollst&#228;ndig im Auswahlrechteck liegt. Dies
+ ist der Fall, wenn alle Elemente, die zu der umfassendsten Gruppe
+ geh&#246;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&#246;glich, auch
+ w&#228;hrend der Texteingabe. Die laufende Aktion wird gegebenenfalls
+ modifiziert oder abgebrochen. Bei Texteingabe f&#252;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&#228;test
+ m&#246;glichen Zeitpunkt abgefragt. Eine nachfolgende &#196;nderung wird
+ dann f&#252;r die laufende Aktion nicht mehr ber&#252;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&#228;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&#228;ter
+ wieder als Eingabedatei verwendet werden.
+<P>
+ Anschlie&#223;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&#252;ber der letzten Einstellung f&#252;r diese
+ Zeichnung ge&#228;ndert werden sollen. Wenn ja wird die letzte
+ Einstellung &#252;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&#228;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&#246;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&#246;he sind immer bezogen auf die nicht
+ gedrehte Darstellung. Bei gedrehtem Ausdruck kann also die Breite
+ der Zeichnung die H&#246;he einer DIN A4-Seite erreichen! Die Breite
+ und die H&#246;he werden zur Berechnung des Skalierungsfaktors
+ '&#92;unitlength' f&#252;r die LaTeX-Ausgabe verwendet. Die
+ Skalierung erfolgt so, da&#223; die Zeichnung eine der beiden
+ angegebenen Dimensionen voll ausf&#252;llt. Linienst&#228;rken und
+ Textgr&#246;&#223;en werden nicht skaliert, da diese Werte unabh&#228;ngig
+ von der genauen Gr&#246;&#223;e der Zeichnung sein m&#252;ssen.
+<P>
+<LI> Menuefeld 'text'<BR>
+ Es wird eine Position, die Bezugsposition des Textes, angeklickt.
+ Anschlie&#223;end wird ein Text &#252;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 &#252;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&#252;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&#252;ckter
+ Taste CONTROL.
+<P>
+ Im Font--Feld neben 'text' wird der Zeichenfont angezeigt. Durch
+ anklicken des Feldes werden die zul&#228;ssigen Werte zyklisch
+ angezeigt. Bei Dr&#252;cken der Taste 1 bzw. 3 wird vorw&#228;rts bzw.
+ r&#252;ckw&#228;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&#246;&#223;e durch
+ die &#252;blichen LaTeX-Makros in der Umgebung definiert werden. Die
+ Darstellung der Zeichen entspricht so der Fontart und der
+ Gr&#246;&#223;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&#246;&#223;e ist in Punkten beim Druck angegeben,
+ beispielsweise bedeutet 17bpt, da&#223; mit den Standardeinstellungen
+ f&#252;r die Formatmakros der Text fett mit 17 Punkten gedruckt wird.
+ F&#252;r die Formatmakros gilt folgendes Bildungsgesetz:
+<P>
+ &#92;F&#60;Anzeige&#62;
+<P>
+ hierbei ist &#60;Anzeige&#62; die Anzeige im Menue, wobei die Zahlenwerte
+ in gro&#223;en R&#246;mischen Ziffern angegeben werden.
+<P>
+ Beispiel: Die Anzeige im Menue sei 12bpt dann hei&#223;t das Formatmakro
+ FXIIbpt.
+<P>
+ Die Formatmakros sind in latexdraw.sty definiert. Sie k&#246;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&#228;&#223; 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 &#252;bernommen und kann korrigiert werden. Die Lage des
+ Textes bez&#252;glich des Bezugspunktes wird dabei grunds&#228;tzlich
+ gem&#228;&#223; 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&#252;ndig ab Bezugspunkt;
+ <LI> 'r': Text rechtsb&#252;ndig am Bezugspunkt;
+ <LI> weder 'l' noch 'r': Text bez&#252;glich der Textl&#228;nge
+ zentriert um Bezugspunkt;
+ <LI> 'b': Textunterkante am Bezugspunkt;
+ <LI> 't': Textoberkante durch Bezugspunkt;
+ <LI> weder 'b' noch 't': Text bez&#252;glich der Texth&#246;he
+ zentriert um Bezugspunkt.
+ </UL>
+<P>
+ Ist das Menuefeld '&#124;&#124;' 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&#252;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&#252;rfen daher alle in LaTeX dort
+ zul&#228;ssigen Elemente definieren.
+<P>
+<LI> Menuefeld 'line'<BR>
+ Es wird eine Strecke gezeichnet. Meistens mu&#223; der Anfangs- und
+ Endpunkt angeklickt werden. Die Bedeutung des angeklickten
+ Punktes h&#228;ngt hier, wie grunds&#228;tzlich bei allen Punkteingaben,
+ vom Zusand des feldes 'mp' ab. Das genaue Vorgehen ist auch vom
+ Zustand der Felder '&#124;&#124;' und '&#124;-' abh&#228;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&#62;' und 'e&#62;'
+ definieren, ob am Anfang und/oder am Ende der Linie ein Pfeil
+ gezeichnet wird. Strecken, die eine minimale L&#228;nge
+ unterschreiten, werden nicht gezeichnet. Sind die Pfeilfelder nicht
+ aktiviert, aber das Feld '|]', dann werden bei durchgezogenen Linien
+ die Linienenden um die halbe Linienst&#228;rke verl&#228;ngert.
+<P>
+ Die Linienst&#228;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&#252;gbare Linienst&#228;rke eingestellt werden. Die Linienst&#228;rke gilt
+ f&#252;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&#228;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&#252;llt, wenn das Feld
+ '* ' aktiv ist. Durch Anklicken der Berandung wird das
+ Element ausgew&#228;hlt.
+<P>
+ Das Zeichnen eines Kreisbogens erfolgt zun&#228;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&#228;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&#252;llte Tortenscheibe gezeichnet, wenn
+ das Feld '* ' aktiv ist. Die Pfeilfelder 'b&#62;' und 'e&#62;'
+ 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) &#252;ber die
+ Tastatur eingegeben werden.
+<P>
+<LI> Menuefeld 'ellipse'<BR>
+ Analog wie Kreis, jedoch mu&#223; zus&#228;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 '&#124;&#124;' aktiv, dann
+ wird die Hauptachse der Ellipse parallel zu einer auszuw&#228;hlenden
+ Geraden gelegt.
+<P>
+<LI> Menuefeld 'rectangle'<BR>
+ Es wird ein Rechteck gezeichnet. Hierzu werden zwei diagonal
+ gegen&#252;berliegende Punkte angeklickt. Die Eckpunkte des Rechtecks
+ werden intern so geordnet, da&#223; der erste Punkt den den kleinsten
+ x- und kleinsten y-Wert hat. Falls das Feld '* ' aktiv ist, wird ein
+ gef&#252;lltes Rechteck erzeugt.
+<P>
+ Ein nicht gef&#252;lltes Rechteck wird als vier isolierte Strecken
+ dargestellt. Ein gef&#252;lltes Rechteck ist ein Zeichenelement. Es
+ kann am Brechen nicht beteiligt werden. Durch Anklicken der
+ Berandung wird das Element ausgew&#228;hlt. Einrastpunkte des
+ gef&#252;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&#252;lltes
+ Dreieck erzeugt.
+<P>
+ Ein nicht gef&#252;lltes Dreieck wird als drei isolierte Strecken
+ dargestellt. Ein gef&#252;lltes Dreieck ist ein Zeichenelement. Es
+ kann am Brechen nicht beteiligt werden. Durch Anklicken der
+ Berandung wird das Element ausgew&#228;hlt. Einrastpunkte des
+ gef&#252;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&#252;lltes
+ Viereck erzeugt.
+<P>
+ Ein nicht gef&#252;lltes Viereck wird als vier isolierte Strecken
+ dargestellt. Ein gef&#252;lltes Viereck ist ein Zeichenelement. Es
+ kann am Brechen nicht beteiligt werden. Durch Anklicken der
+ Berandung wird das Element ausgew&#228;hlt. Einrastpunkte des
+ gef&#252;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&#228;chste Endtangente und einen n&#228;chsten Endpunkt definieren,
+ dann jeweils fortgesetzt werden.
+<P>
+ Falls das Feld '* ' aktiv ist, wird eine gef&#252;llte Bezierkurve
+ erzeugt.
+<P>
+<LI> Menuefeld 'polygon'<BR>
+ Es wird ein Polygon gezeichnet. Hierzu werden der Mittelpunkt
+ und ein Punkt des Kreises angeklickt. Anschlie&#223;end wird der
+ Grad des Polygons &#252;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&#252;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&#246;nnen alle Zeichnungselemente ausgew&#228;hlt werden. Bei Bezierkurven
+ erfolgt kein Trimmen, sondern nur eine Verbindung zu dem Endpunkt,
+ der dem angeklickten Punkt am n&#228;chsten ist. Anmerkung: Es wird nur
+ der Anfang (das Ende) der Verbindungslinie eingek&#252;rzt, falls
+ dieser(s) sich mit dem Ausgangsobjekt (Zielobjekt) schneidet.
+<P>
+<LI> Menuefeld 'p'<BR>
+ Zeigt an, da&#223; 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&#246;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&#252;glich ihrer Lage und
+ Orientierung richtig gespiegelt, aber nicht bez&#252;glich der
+ Orientierung der einzelnen Zeichen.
+<P>
+<LI> Menuefeld 'attr?'<BR>
+ Es kann ein Objekt angeklickt werden, dann wird die Linienst&#228;rke,
+ die Farbe und bei Texten der Font des ausgew&#228;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&#228;chst werden die zu rotierenden
+ Objekte ausgew&#228;hlt. Falls ein Auswahlrechteck definiert wurde,
+ blinken die ausgew&#228;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&#246;ht.
+<P>
+<LI> Menuefeld 'copy'<BR>
+ Es k&#246;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&#246;&#223;erung bzw. Verkleinerung und eine Drehung enth&#228;lt.
+ Die Abbildung wird durch zwei Strecken definiert, die in einander
+ &#252;berf&#252;hrt werden. Hierbei wird die Referenzstrecke so in die
+ Zielstrecke &#252;berf&#252;hrt, da&#223; die Anfangs- und Endpunkte
+ jeweils in einander &#252;bergehen. Das Verh&#228;ltnis der Strecken
+ definiert den Vergr&#246;&#223;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&#228;chst die zu kopierenden Objekte ausgew&#228;hlt. Diese blinken
+ dann. Falls ein Auswahlrechteck definiert wurde, dann wird nach
+ einem Referenzpunkt gefragt, sonst ist der Referenzpunkt durch den
+ Einrastpunkt bestimmt. Anschlie&#223;end k&#246;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&#246;&#223;en&#228;nderung.
+<P>
+<LI> Menuefeld 'move'<BR>
+ Ablauf wie beim Kopiervorgang, jedoch wird das urspr&#252;ngliche
+ Objekt gel&#246;scht. Die Referenzstrecke und die Zielstrecke k&#246;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&#223;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&#228;nzt. Auch diese Figur wird als vier
+ unabh&#228;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&#228;ngert und zwar auf der Seite, deren Ende dem
+ Anklickpunkt am n&#228;chsten ist. Durch die Verl&#228;ngerung bei
+ B&#246;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&#228;glich gef&#252;llt. Dabei bleibt die Kontur erhalten, da ein
+ zus&#228;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&#252;llt werden. Es k&#246;nnen gef&#252;llt
+ werden: Kreise, Kreisb&#246;gen, Ellipsen und Ellipsenb&#246;gen.
+ Dar&#252;berhinaus k&#246;nnen gef&#252;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&#228;chsten liegen. Gef&#252;llte Kreis- und Ellipsenb&#246;gen k&#246;nnen
+ verl&#228;ngert werden, falls der gef&#252;llte Teil nicht alles abdeckt.
+<P>
+<LI> Menuefeld 'trim'<BR>
+ Strecken, Kreise, Kreisb&#246;gen, Ellipsen, Ellipsenb&#246;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&#223;er Texten und Bezierkurven) begrenzt. Diese
+ beiden Grafikelemente werden anschlie&#223;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&#246;scht. Sind keine Schnittpunkte vorhanden oder w&#252;rde das
+ gesamte Grafikelement gel&#246;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&#228;ngerung der Strecke liegen akzeptiert.
+<P>
+<LI> Menuefeld 'up'<BR>
+ Es werden die ausgew&#228;hlten Zeichnungselemente ganz nach oben in der
+ Liste der Zeichnungselemente verschoben. Dabei wird die bisherige
+ Reihenfolge der ausgew&#228;hlten Elemente umgedreht. Das unterste
+ ausgew&#228;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&#228;hlten Zeichnungselemente ganz nach unten in
+ der Liste der Zeichnungselemente verschoben. Dabei wird die
+ bisherige Reihenfolge der ausgew&#228;hlten Elemente im Gegensatz zu
+ 'up' nicht umgedreht. Die Verdeckung innerhalb der ausgew&#228;hlten
+ Elemente bleibt also gleich. Alle anderen Elemente k&#246;nnen die
+ ausgew&#228;hlten Elemente dann &#252;berdecken.
+<P>
+<LI> Menuefeld 'delete'<BR>
+ Es werden die ausgew&#228;hlten Zeichnungselemente gel&#246;scht. Bei
+ Kreisen bzw Ellipsen mu&#223; sich der Anklickpunkt in etwa auf dem
+ Bogen befinden, bei Rechteck, Viereck und Dreieck in der n&#228;he der
+ Umrandung, bei Texten in der N&#228;he des Bezugspunktes, bei Strecken
+ in der N&#228;he der Strecke, bei Bezierkurven in der N&#228;he der Kurve.
+ Es wird immer dasjenige Element gel&#246;scht, zu dem der kleinste
+ Abstand vom angeklickten Punkt aus besteht.
+<P>
+ F&#252;r alle seit dem letzten Anklicken des Feldes 'l&#246;schen'
+ gel&#246;schten Elemente kann durch Dr&#252;cken einer der Tasten
+ BACKSPACE, DELETE oder UNDO die L&#246;schung r&#252;ckg&#228;ngig gemacht
+ werden. Je nach Abbildung der Tasten in den einzelnen
+ Rechnerinstallationen kann es sein, da&#223; nicht alle angegebenen
+ Tasten wirksam sind.
+<P>
+<LI> Menuefeld 'cut'<BR>
+ Die Menuefelder 'cut' und 'paste' dienen zur &#220;bertragung von
+ Zeichenobjekten von einem LaTeXdraw-Fenster in andere. Mit 'cut'
+ wird ein Fenster das gebende Fenster. Nach dem Anklicken von 'cut'
+ wird zun&#228;chst wie beim Kopieren mit der Maus ein Referenzpunkt
+ definiert und anschlie&#223;end k&#246;nnen nacheinander Objekte durch
+ anklicken oder durch ein Auswahlrechteck ausgew&#228;hlt werden.
+ Ausgew&#228;hlte Objekte sind ausgeschnitten. Sie blinken. Ein
+ mehrfaches ausw&#228;hlen desselben Objekts ist ohne Bedeutung. Die
+ ausgeschnittenen Objekte bleiben bis zum n&#228;chsten Anklicken eines
+ Menuepunktes definiert. Ist in anderen Fenstern bereits 'paste'
+ aktiv, dann werden die ausgeschnittenen Objekte schritthaltend
+ &#252;bertragen. Sonst nur vermerkt. Die Gruppenstruktur der
+ &#252;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 &#252;bernehmen. Jedesmal nach Anklicken von
+ 'paste' wird ein Zielpunkt definiert. Der Referenzpunkt bei 'cut'
+ wird auf den Zielpunkt bei 'paste' abgebildet. Eine
+ Gr&#246;&#223;en&#228;nderung oder eine Drehung ist nicht vorgesehen. Dann
+ werden alle bereits ausgeschnittenen Objekte &#252;bernommen. Weitere
+ ausgeschnittene Objekte werden schritthaltend &#252;bernommen. Die
+ &#252;bernommenen Objekte geh&#246;ren keiner Gruppe an. Es k&#246;nnen in
+ mehreren Fenstern gleichzeitig 'paste'-Vorg&#228;nge aktiv sein.
+<P>
+<LI> Menuefeld '-l'<BR>
+ Ein Text wird linksb&#252;ndig am Bezugspunkt ausgerichtet.
+<P>
+<LI> Menuefeld '-r'<BR>
+ Ein Text wird rechtsb&#252;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&#252;llt.
+ Anstelle von Kreis- und Ellipsenb&#246;gen werden ausgef&#252;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&#246;gen gezeichnet, sonst gef&#252;llte Tortenscheiben.
+<P>
+<LI> Menuefeld '&#124;&#124;'<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&#228;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&#228;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 '-&#124;'<BR>
+ Anstelle des Endpunktes der einzugebenden Strecke wird eine
+ Strecke s angeklickt. Der Endpunkt ist dann der Fu&#223;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&#252;nschte Punkt der Mittelpunkt der Strecke oder der Mittelpunkt
+ des Kreises bzw. der Ellipse.
+ <LI> Fall: Es liegt kein zul&#228;ssiges Element in der N&#228;he, dann
+ wird der angeklickte Punkt verwendet.
+ </UL>
+<P>
+<LI> Menuefeld 'b&#62;'<BR>
+ Am Anfang einer Strecke, eines Bogens oder einer Bezierkurve wird
+ ein Pfeil gezeichnet.
+<P>
+<LI> Menuefeld 'e&#62;'<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&#228;rke verl&#228;ngert.
+<P>
+ <LI> Menuefeld '=&#60;Zahl&#62;'<BR> Die Zahl in diesem Feld gibt die
+ Linienst&#228;rke an. Durch Anklicken erfolgt eine Fortschaltung. Bei
+ Dr&#252;cken der Taste 1 bzw. 3 wird vorw&#228;rts bzw. r&#252;ckw&#228;rts
+ gez&#228;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 ' &#60; &#94; v &#62; '<BR>
+ Die Zeichnung wird um einen halben Bildschirm nach links, nach
+ oben, nach unten oder nach rechts verschoben. Teile der
+ Zeichnung d&#252;rfen auch au&#223;erhalb des Bildschirmes liegen.
+ Eine Verschiebung kann auch w&#228;hrend eines Zeichenvorgangs
+ erfolgen. Die Verschiebung kann auch mit den Cursortasten
+ ausgel&#246;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&#246;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&#228;chsten Anklicken von 'newgroup' oder einem
+ anderen Menuefeld ausgew&#228;hlt wurden, bilden die neue Gruppe. Die
+ ausgew&#228;hlten Elemente blinken. Die Wirkung dieser Aktion ist
+ unabh&#228;ngig vom eingestellten Gruppenmodus.
+<P>
+<LI> Menuefeld 'ungroup'
+ Es wird durch anklicken eines Elements die Gruppe ausgew&#228;hlt, zu
+ der das Zeichnungselement geh&#246;rt. Die Gruppe blinkt. Nach Anklicken
+ von 'OK' wird die oberste Gruppe dieser Elemente aufgel&#246;st. Die
+ Gruppe, in der das angeklickte Element ist, gilt jetzt als
+ ausgew&#228;hlt und blinkt. Durch Anklicken von 'OK' kann diese Gruppe
+ ebenfalls aufgel&#246;st werden. Alternativ kann ein anderes Element
+ oder ein anderer Menuepunkt angeklickt werden. Die Wirkung dieser
+ Aktion ist unabh&#228;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&#246;ren. Die Wirkung dieser Aktion ist unabh&#228;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&#228;ndert sich mit einer Skalierung oder durch Neudefinition des
+ Gitters.
+<P>
+ Die Grundgitterweite ist so gew&#228;hlt, da&#223; beim Druck unter
+ &#92;unitlength = 0.3mm der Abstand genau 5 mm ist. Die
+ Gr&#246;&#223;e &#92;unitlength = 0.3mm ergibt sich
+ beispielsweise, wenn die Zeichnung die Breite der Zeichenfl&#228;che
+ des Bildschirms ausf&#252;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&#246;&#223;e 12pt oder 14pt ('large' oder 'Large' bei LaTeX article
+ style 10pt). Da meistens st&#228;rker verkleinert wird, ist die
+ Grundgitterweite normalerweise f&#252;r eine Schrift mit 10 Punkten
+ geeignet.
+<P>
+ Durch Anklicken des Menuepunktes Gitter kann ein neues Gitter
+ definiert werden. Das Gitter mu&#223; nicht rechtwinklig sein. Die
+ Definition eines Gitters besteht aus drei Schritten, der Eingabe
+ des Ursprungs P0, des n&#228;chsten rechten Gitterpunktes P1 und des
+ n&#228;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&#228;nde sind:
+ <UL><LI> Vor Eingabe von P0:<BR>
+ Standardgitter mit Grundgitterweite, Koordinatenursprung in
+ der Mitte der Zeichenfl&#228;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&#228;nge der
+ Strecke P0P1 definiert.
+ </UL>
+<P>
+<LI> Menuefeld 'o'<BR>
+ Die Zeichnung wird so zentriert, da&#223; der Mittelpunkt der
+ Zeichnung in der Mitte des Bildschirms liegt. Diese Operation
+ kann auch w&#228;hrend eines Zeichenvorgangs erfolgen.
+<P>
+<LI> Menuefeld '+'<BR>
+ Die Zeichnung wird um einen fest eingebauten Faktor vergr&#246;&#223;ert.
+ Diese Operation kann auch w&#228;hrend eines Zeichenvorgangs
+ erfolgen. Die Operation kann auch mit den Minustasten der Tastatur
+ ausgel&#246;st werden.
+<P>
+<LI> Menuefeld '-'<BR>
+ Die Zeichnung wird um einen fest eingebauten Faktor verkleinert.
+ Diese Operation kann auch w&#228;hrend eines Zeichenvorgangs
+ erfolgen. Die Operation kann auch mit den Plustasten der Tastatur
+ ausgel&#246;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&#246;gen, Eckpunkte von Rechtecken, Vierecken
+ und Dreiecken sowie der n&#228;chstliegende Gitterpunkt.
+<P>
+<LI> Menuefeld 'xy'<BR>
+ Der erwartete Punkt wird nicht mit der Maus, sondern durch
+ Eingabe &#252;ber die Tastatur definiert. Die Punktkoordinaten
+ werden in dem gerade definierten Gitterkoordinatensystem
+ angegeben. Die beiden eingegebenen Koordinaten werden mit
+ Zwischenraum oder Komma getrennt. Abschlu&#223; mit return-Taste.
+ Falls die Eingabe syntaktisch nicht korrekt ist, werden die
+ Zahlen nicht akzeptiert. Sie k&#246;nnen korrigiert werden.
+<P>
+<LI> Menuefeld 'deg'<BR>
+ Wird bei der Eingabe von Ellipsenb&#246;gen, Kreisb&#246;gen oder gef&#252;llten
+ Sektoren ein Winkel erwartet und ist zu diesem Zeitpunkt dieses Feld
+ aktiv, dann kann der Winkel in Grad als Gleitpunktzahl &#252;ber die
+ Tastatur eingegeben werden.
+<P>
+ <LI> Menuefeld '&#60;Farbnummer&#62;:&#60;Farbname&#62;'<BR>
+<P>
+ Es wird die Nummer und der Name der ausgew&#228;hlten Zeichenfarbe
+ angegeben. Falls die zugeordnete Farbe verf&#252;gbar ist, wird das
+ Feld entsprechend farbig ausgef&#252;llt. Falls die Farbe nicht
+ verf&#252;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&#246;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&#246;nnen die Linienst&#228;rke, der
+ Linientyp, die Pfeilenden, das Linienende '|]' und die Farbe von
+ Zeichnungselementen ge&#228;ndert werden. Bei Texten kann zus&#228;tzlich
+ die Fontart und die Ausrichtung des Textes relativ zum
+ Bezugspunkt ge&#228;ndert werden. Ge&#228;ndert werden jedoch nur die
+ Attribute, die nach Auswahl des Menuefeldes 'chatt' angeklickt
+ wurden. Die zu &#228;ndernden Zeichnungselemente werden
+ anschlie&#223;end angeklickt. Ma&#223;gebend f&#252;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 &uuml;bernommen. Es gibt zwei F&auml;lle.
+
+ Im ersten Fall wird eine vollst&auml;ndige Latexdraw-Datei
+ &uuml;bermittelt, einschlie&szlig;lich Anfangszeilen mit Parametern und
+ Gruppeninformation am Ende der Datei. In diesem Fall werden alle
+ vorher vorhandenen Zeichnungselemente gel&ouml;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 &uuml;bertragen. Die
+ bereits vor Aktivierung des Menuefeldes vorhandenen
+ Zeichnungselemente bleiben erhalten und die &uuml;bertragenen
+ Zeichnungselemente werden hinzugef&uuml;gt, falls der Typ des Elements
+ positiv ist. Ist der Typ des Elements negativ, dann wird das
+ korrespondierende Zeichnungselement gel&ouml;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 &uuml;bertragen. Nach Abschlu&szlig; der
+ Zeichnungselement wird die Zeichnung ausgegeben und dann d Sekunden
+ gewartet (siehe Menuefeld 'd:').<P>
+
+ Die Eingabe &uuml;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 &uuml;ber das Menuefeld behandelt, falls solche
+ vorliegen. F&uuml;r diese Interaktionen bestehen keine Einschr&auml;nkungen
+ gegen&uuml;ber denen, die sonst m&ouml;glich sind. Insbesondere kann durch
+ Auswahl einer anderen Funktion, die Eingabe &uuml;ber die
+ Standardeingabe unterbrochen werden. Durch erneutes Anklicken von
+ 'stdin' wird dann fortgesetzt.<P>
+
+ Diese Schnittstelle ist besonders f&uuml;r on-line Animationen
+ geeignet. Deshalb werden in diesem Modus die Gitterpunkte und
+ Klickmarken nicht dargestellt.
+<P>
+ <LI> Menuefeld 'd:&#60;dauer&#62;s'<BR>
+
+ Der Wert &#60;dauer&#62; gibt die Wartezeit in Sekunden an, die nach
+ Eingabe einer Zeichnung oder einer Folge von Zeichnungselementen
+ &uuml;ber Standardeingabe (vgl. 'stdin') vergeht, bis weitergelesen
+ wird. Der Wert wird mit der linken (rechten) Maustaste erh&ouml;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&#228;lt nur ASCII-Zeichen und k&#246;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&#228;ngen,
+Winkel und Darstellungsparameter. Jede Zeile enth&#228;lt dieselbe
+Anzahl von Zahlen, auch wenn einzelne f&#252;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 &#252;bernommen. Der Benutzer kann bei
+Bedarf diese Parameter in der Ausgabedatei ab&#228;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&#252;r das
+Dokument anzugeben. Es werden die dort eingef&#252;hrten
+Zeichnungsprimitive verwendet. Daher kann die Zeichnung auch noch
+nachtr&#228;glich ohne grossen Aufwand modifiziert werden.
+<P>
+Die erzeugte LaTeX-Datei ist ein vollst&#228;ndiges LaTeX-Dokument. Sie
+kann daher unmittelbar &#252;bersetzt und gedruckt werden. In vielen
+F&#228;llen wird die LaTeX-Datei aber in ein gr&#246;&#223;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&#228;hlt, da&#223; bestimmte
+nachtr&#228;gliche Manipulationen sehr einfach m&#246;glich sind, z.B.:
+<UL><LI> Die Gr&#246;&#223;e des Bildes ist durch Modifikation der
+ '&#92;unitlength'
+ ver&#228;nderbar. (Die Einheit im Bild ist das Pixel).
+ <LI> F&#252;r die Linienst&#228;rke wird folgendes Makro zur Einstellung
+ verwendet: &#92;ldlinewidth. Dieses hat zwei Parameter:
+ <UL><LI> 1. Parameter: Linienst&#228;rke (i, ganzzahlig)
+ <LI> 2. Parameter: Linienst&#228;rke in pt (0.57* Linienst&#228;rke)
+ </UL>
+ <LI> F&#252;r die Darstellung von Punkten bei punktierten Linien werden
+ folgende Makros verwendet:
+ <UL><LI> Linienst&#228;rke 1: &#92;Pthinpunkt
+ <LI> Linienst&#228;rke 3: &#92;Pthickpunkt
+ <LI> sonstige Linienst&#228;rke i:
+ &#92;Pvarpunkt{w}{i}, wobei w der Drehwinkel in Radian
+ ist.
+ </UL>
+ <LI> Die Parameter &#92;Pdotgap,&#92;Pinterdotgap
+ und &#92;Pdashlength f&#252;r die Geraden (vgl. eepic.sty) sind
+ am Anfang der Zeichnung definiert und so leicht &#228;nderbar.
+ <LI> Ein Anfangspfeil wird durch das Makro &#92;aLdPfeil
+ realisiert, ein Endepfeil durch &#92;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&#228;rke.
+ <LI> Der Abstand vor und nach der Zeichnung kann ge&#228;ndert werden.
+ <LI> Die Lage des Textes bez&#252;glich des bei Erstellung des Textes
+ angeklickten Bezugspunktes kann einfach ge&#228;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&#223;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&#228;rtskompatibel. Damit k&#246;nnen auch alte Versionen durch neuere
+LaTeXdraw--Programme gelesen werden.
+<P>
+<UL><LI> Pr&#228;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&#246;nnen dadurch nicht mehr als Eingabe bei
+ Versionen unter 10.0 verwendet werden. Abhilfe: L&#246;schen der
+ entsprechenden Zeile in der LaTeXdraw--Datei.
+<P>
+ Eine weitere &#196;nderung gilt ab Version 11. Hier sind auch noch die
+ momentanen Einstellungen f&#252;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&#246;&#223;e) des Bildes in
+ Pixeln gem&#228;&#223; Zeichnung
+ <LI> maximale x-Dimension und y-Dimension des Bildes in mm
+ gem&#228;&#223; Angabe des Benutzers
+ <LI> eigenst&#228;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&#228;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&#246;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&#252;r redundante Parameter
+ ist der Punkt xb1,yb1. Dieser ist der Anfangspunkt bei Kreis- und
+ Ellipsenb&#246;gen. Solche redundanten Parameter sind nachfolgend nicht
+ mehr beschrieben.
+<P>
+Die Koordinaten der Zeichenfl&#228;che sind so gew&#228;hlt, da&#223;
+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&#246;ren sind nicht
+ aufgef&#252;hrt. F&#252;r jede Gruppe, der mindestens ein Zeichnungselement
+ direkt angeh&#246;rt, wird die Gruppe angegeben und dann die Liste der
+ Nummern von Zeichnungselementen, die dieser Gruppe direkt
+ angeh&#246;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&#252;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&#252;ndig, Unterkante<TR><TD>
+ <TD> laenge2 = 1 <TD> voll zentriert<TR><TD>
+ <TD> laenge2 = 2 <TD> rechtsb&#252;ndig, Unterkante<TR><TD>
+ <TD> laenge2 = 3 <TD> zentriert, Unterkante<TR><TD>
+ <TD> laenge2 = 4 <TD> linksb&#252;ndig, Oberkante<TR><TD>
+ <TD> laenge2 = 5 <TD> rechtsb&#252;ndig, Oberkante<TR><TD>
+ <TD> laenge2 = 6 <TD> zentriert, Oberkante<TR><TD>
+ <TD> laenge2 = 7 <TD> linksb&#252;ndig, zentriert<TR><TD>
+ <TD> laenge2 = 8 <TD> rechtsb&#252;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&#252;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 &#60;= wanf &#60;= 3600<TR><TD>
+ <TD> wend <TD> Endwinkel in 0.1 Grad, 0 &#60;= wend &#60;= 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&#223;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&#252;llte Ellipse<TR><TD>
+ <TD> x1,y1 <TD> Mittelpunkt<TR><TD>
+ <TD> lx <TD> halbe gro&#223;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&#223;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 &#60;= wanf &#60;= 3600<TR><TD>
+ <TD> wend <TD> Endwinkel in 0.1 Grad, 0 &#60;= wend &#60;= 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&#252;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 &#60;= wanf &#60;= 3600<TR><TD>
+ <TD> wend <TD> Endwinkel in 0.1 Grad, 0 &#60;= wend &#60;= 3600<TR><TD>
+</table><BR>
+<p><table border><TR><TD>
+16 <TD> gef&#252;llte Ellipsensektoren<TR><TD>
+ <TD> x1,y1 <TD> Mittelpunkt<TR><TD>
+ <TD> lx <TD> halbe gro&#223;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 &#60;= wanf &#60;= 3600<TR><TD>
+ <TD> wend <TD> Endwinkel in 0.1 Grad, 0 &#60;= wend &#60;= 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&#228;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&#228;uft unter UNIX mit X-Windows. Beim &#220;bersetzen der
+LaTeX-Quelle mit den Bildern st&#252;tzt es sich ab auf den Stil
+latexdraw.sty. Dieser benutzt seinerseits das Paket pstricks.tex
+(in Standardverteilung f&#252;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&#252;ssen zuerst mit
+latex oder slitex &#252;bersetzt werden. Beispielsweise sieht die Angabe
+des documentstyle bei Verwendung von article.sty als Hauptstil und
+einem deutschen Text wie folgt aus:<BR>
+&#92;documentstyle[latexdraw,german]{article}<BR>
+Die Option german <b> mu&#223;</b> immer als letzte aufgef&#252;hrt werden,
+da sie fast immer die anderen Stile st&#246;rt. Im Anschlu&#223; an die
+&#220;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&#246;nnen unvollst&#228;ndig oder falsch
+sein. Dies h&#228;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&#228;rke<TR><TD>
+ <TD> <TD> Farbe: schwarz=0, weiss=1, ...<TR><TD>
+<P>
+linienende <TD>=<TD> 0 <TD> eckiger Abschlu&#223;<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&#223;er Achse
+der Ellipse (in x-Richtung).
+<P>
+Bei gef&#252;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 &#169; 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&#228;tze</TITLE>
+</HEAD>
+<BODY>
+<meta name="description" value=" Zeichens&#228;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&#228;tze</A></H2>
+<P>
+Die f&#252;r den Druck ben&#246;tigten Fonts sind in latexdraw.sty
+definiert. Es sind 6, 8, 10, 12, 14 und 18 Punkt-Fonts in normal, bold
+und italics. F&#252;r die Textdarstellung auf dem Bildschirm werden
+folgende Fonts ben&#246;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&#252;gbar ist wird der 8x13-Font<BR>
+ -* -times-medium-r-* -* -17-* <BR>
+zur Darstellung benutzt. Falls der entsprechende Font in der Zeichnung
+ben&#246;tigt wird, dann sollte er aber in einer richtigen Gr&#246;&#223;e
+verf&#252;gbar gemacht werden (in /usr/lib/X11/fonts/...) oder
+alternativ sollte ein geeigneter Ersatzfont &#252;ber die
+Alias-Definition von Fonts (Datei .../fonts.alias) definiert werden.
+Falls die Pfadnamen der Fonts nicht richtig voreingestellt sind, dann
+k&#246;nnen diese mit xset fp &#60; Liste der durch Komma getrennten
+Pfadnamen &#62; 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&#228;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&#223; interne Arbeit abl&#228;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&#228;ter wieder eingelesen
+ werden und auch durch das Zeichnungsprogramm weiter bearbeitet
+ werden. Zeichnungen werden also in dieser Form aufgehoben. Auch die
+ Sicherung von Zwischenzust&#228;nden bei gr&#246;&#223;eren Zeichnungen
+ erfolgt in dieser Form.
+<LI> LaTeX--Datei:<BR> Die LaTeX--Datei ist eine Ausgabedatei, die eine
+ LaTeX-Quelle darstellt, durch LaTeX &#252;bersetzt werden mu&#223; und
+ dann auf Papier ausgedruckt werden kann. Beim Abspeichern einer
+ Zeichnung k&#246;nnen 2 Ausgabeformen f&#252;r die LaTeX-Darstellung
+ gew&#228;hlt werden:
+ <UL><LI> In der ersten Form wird die Zeichnung als eigenst&#228;ndiges
+ Dokument ausgegeben. Sie kann direkt mit latex &#252;bersetzt werden.
+ <LI> In der zweiten Form wird die Zeichnung ohne Pr&#228;ambel und
+ Postambel ausgegeben. Sie kann dann mit &#92;
+ input{&#60;Dateiname&#62;} direkt in ein Dokument
+ eingebunden werden. Im Hinblick auf sp&#228;tere &#196;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&#228;ltnis bei DIN A4. Das Fenster kann beliebig in der
+Gr&#246;&#223;e durch den Benutzer ver&#228;ndert werden.
+<P>
+Der Bildschirm ist w&#228;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&#223; auf die Formatwahl bei der LaTeX-Ausgabe!
+<P>
+ Falls das Programm latexdraw mit der Digitizer-Option &#252;bersetzt
+ wurde (siehe makefile), dann kann diese durch den Aufrufparameter
+ ''-t'' aktiviert werden.
+<P>
+ F&#252;r die LaTeX-Datei wird, falls diese nicht in ein anderes
+ Dokument eingebunden werden soll, als erste Latex-Zeile ausgegeben:
+ <UL><LI> der Dokumentenstil
+ ''&#92;documentstyle[latexdraw]{article}'',
+ falls keiner der Aufrufparameter -2e oder -d angegeben wurde;
+ <LI> der Dokumentenstil
+ ''&#92;documentclass{article}&#92;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 '&#92;[latexdraw,german]{report}&#92;pagestyle{empty}'
+<P>
+ stellt Querformat ein und den Dokumentenstil ''report'' mit den
+ Optionen ''latexdraw'' und ''german''. Au&#223;erdem wird der Stil
+ f&#252;r die Seite auf ''empty'' gesetzt.
+<P>
+ Falls die voreingestellte Schrift f&#252;r das Menue nicht verwendet
+ werden soll, kann die Bezeichnung der Schrift f&#252;r das Menue nach
+ dem optionalen Parameter -f angegeben werden, beispielsweise -f 8x13bold.
+<P>
+ Soll der Zeichenbereich in der Gr&#246;&#223;e ver&#228;ndert werden, dann
+ kann dies dynamisch durch Ver&#228;nderung der Gr&#246;&#223;e des Fensters
+ erfolgen. Die statische Voreinstellung kann durch die Option -s
+ gefolgt von &#60;Breite&#62;x&#60;H&#246;he&#62; in Pixeln beim Start ver&#228;ndert
+ werden.
+<P>
+ Soll lediglich eine bereits vorhandene LaTeXdraw--Datei in eine
+ LaTeX--Datei ohne Ver&#228;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&#246;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&#252;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&#246;nnen, eine Bedeutung. Die Maustaste 1
+ schaltet dann aufw&#228;rts und die Maustaste 3 abw&#228;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&#228;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&#252;ckter Maustaste 1 wird ein Auswahlrechteck aufgezogen. Geht
+ die l&#228;ngere Seite in x--Richtung bzw. y--Richtung, dann wird der
+ neue Punkt mit dem fr&#252;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&#228;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], &ltyp, &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], &ltyp, &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,&ltyp,&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,&ltyp,&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], &ltyp1, &ldicke1, &lende1, &lcolor1);
+ ausel(elsel, erase);
+ getlineattribute(0L, typ[elsel], &ltyp2, &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], &ltyp, &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,&yend);
+ 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