From 618290cc8302cc7c90bf5584387630fd78fb56b5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 12 Jan 2006 23:52:09 +0000 Subject: bez123 git-svn-id: svn://tug.org/texlive/trunk@705 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/bez123/bez123.sty | 375 ++++++++++++++++++++++++ Master/texmf-dist/tex/latex/bez123/multiply.sty | 77 +++++ 2 files changed, 452 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/bez123/bez123.sty create mode 100644 Master/texmf-dist/tex/latex/bez123/multiply.sty (limited to 'Master/texmf-dist/tex/latex/bez123') diff --git a/Master/texmf-dist/tex/latex/bez123/bez123.sty b/Master/texmf-dist/tex/latex/bez123/bez123.sty new file mode 100644 index 00000000000..29d5c1bf6a9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/bez123/bez123.sty @@ -0,0 +1,375 @@ +%% +%% This is file `bez123.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% bez123.dtx (with options: `bez') +%% +%% Author: Peter Wilson (CUA and NIST) +%% now at: peter.r.wilson@boeing.com +%% +%% Copyright 1998 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{bez123}[1998/10/14 v1.1 Bezier curves] +\RequirePackage{multiply}[1998/10/14] +\newcommand{\lbezier}[2][0]{\@lbez{#1}#2} +\gdef\@lbez#1(#2,#3)(#4,#5){% +%%%%\def\lbezier#1(#2,#3)(#4,#5){% + \ifnum #1<\@ne + \@ovxx = #4\unitlength + \advance\@ovxx by -#2\unitlength + \ifdim \@ovxx < \z@ + \@ovxx = -\@ovxx + \fi + \@ovyy = #5\unitlength + \advance\@ovyy by -#3\unitlength + \ifdim \@ovyy < \z@ + \@ovyy = -\@ovyy + \fi + \ifdim \@ovxx > \@ovyy + \@multicnt = \@ovxx + \else + \@multicnt = \@ovyy + \fi + \@ovxx = 0.5\@halfwidth + \divide\@multicnt by \@ovxx + \ifnum \qbeziermax < \@multicnt + \@multicnt = \qbeziermax\relax + \fi + \else + \@multicnt = #1\relax + \fi + \@tempcnta = \@multicnt + \advance\@tempcnta by \@ne + \@ovdx = #4\unitlength + \advance\@ovdx by -#2\unitlength + \divide\@ovdx by \@multicnt + \@ovdy = #5\unitlength + \advance\@ovdy by -#3\unitlength + \divide\@ovdy by \@multicnt + \setbox\@tempboxa\hbox{\vrule \@height\@halfwidth + \@depth \@halfwidth + \@width \@wholewidth}% + \put(#2,#3){% + \count@ = \z@ + \@whilenum{\count@ < \@tempcnta}\do + {\@xdim = \count@\@ovdx + \@ydim = \count@\@ovdy + \raise \@ydim + \hb@xt@\z@{\kern\@xdim + \unhcopy\@tempboxa\hss}% + \advance\count@\@ne}}% +} +\newlength{\@wxc} +\newlength{\@wyc} +\newcommand{\cbezier}[2][0]{\@cbez{#1}#2} +\gdef\@cbez#1(#2,#3)(#4,#5)(#6,#7)(#8,#9){% + \ifnum #1<\@ne + \@ovxx = #2\unitlength + \@ovdx = \@ovxx + \@ovdy = #4\unitlength + \ifdim \@ovdy > \@ovxx + \@ovxx = \@ovdy + \fi + \ifdim \@ovdy < \@ovdx + \@ovdx = \@ovdy + \fi + \@ovdy = #6\unitlength + \ifdim \@ovdy > \@ovxx + \@ovxx = \@ovdy + \fi + \ifdim \@ovdy < \@ovdx + \@ovdx = \@ovdy + \fi + \@ovdy = #8\unitlength + \ifdim \@ovdy > \@ovxx + \@ovxx = \@ovdy + \fi + \ifdim \@ovdy < \@ovdx + \@ovdx = \@ovdy + \fi + \advance\@ovxx by -\@ovdx + \@ovyy = #3\unitlength + \@ovdy = \@ovyy + \@ovdx = #5\unitlength + \ifdim \@ovdx > \@ovyy + \@ovyy = \@ovdx + \fi + \ifdim \@ovdx < \@ovdy + \@ovdy = \@ovdx + \fi + \@ovdx = #7\unitlength + \ifdim \@ovdx > \@ovyy + \@ovyy = \@ovdx + \fi + \ifdim \@ovdx < \@ovdy + \@ovdy = \@ovdx + \fi + \@ovdx = #9\unitlength + \ifdim \@ovdx > \@ovyy + \@ovyy = \@ovdx + \fi + \ifdim \@ovdx < \@ovdy + \@ovdy = \@ovdx + \fi + \advance\@ovyy by -\@ovdy + \ifdim \@ovxx > \@ovyy + \@multicnt = \@ovxx + \else + \@multicnt = \@ovyy + \fi + \@ovxx = 0.5\@halfwidth + \divide\@multicnt by \@ovxx + \ifnum \qbeziermax < \@multicnt + \@multicnt = \qbeziermax\relax + \fi + \else + \@multicnt = #1\relax + \fi + \@tempcnta = \@multicnt + \advance\@tempcnta by \@ne + \@ovdx = #4\unitlength \advance\@ovdx by -#2\unitlength + \@ovxx = #6\unitlength \advance\@ovxx by -\@ovdx + \multiply\@ovdx by \thr@@ + \advance\@ovxx by -#4\unitlength \multiply\@ovxx by \thr@@ + \@wxc = #4\unitlength \advance\@wxc by -#6\unitlength + \multiply\@wxc by \thr@@ \advance\@wxc by #8\unitlength + \advance\@wxc by -#2\unitlength \divide\@wxc by \@multicnt + \@ovdy = #5\unitlength \advance\@ovdy by -#3\unitlength + \@ovyy = #7\unitlength \advance\@ovyy by -\@ovdy + \multiply\@ovdy by \thr@@ + \advance\@ovyy by -#5\unitlength \multiply\@ovyy by \thr@@ + \@wyc = #5\unitlength \advance\@wyc by -#7\unitlength + \multiply\@wyc by \thr@@ \advance\@wyc by #9\unitlength + \advance\@wyc by -#3\unitlength \divide\@wyc by \@multicnt + \setbox\@tempboxa\hbox{\vrule \@height\@halfwidth + \@depth \@halfwidth + \@width \@wholewidth}% + \put(#2,#3){% + \count@ = \z@ + \@whilenum{\count@ < \@tempcnta}\do + {\@xdim = \count@\@wxc + \advance\@xdim by \@ovxx + \divide\@xdim by \@multicnt + \multiply\@xdim by \count@ + \advance\@xdim by \@ovdx + \divide\@xdim by \@multicnt + \multiply\@xdim by \count@ + \@ydim = \count@\@wyc + \advance\@ydim by \@ovyy + \divide\@ydim by \@multicnt + \multiply\@ydim by \count@ + \advance\@ydim by \@ovdy + \divide\@ydim by \@multicnt + \multiply\@ydim by \count@ + \raise \@ydim + \hb@xt@\z@{\kern\@xdim + \unhcopy\@tempboxa\hss}% + \advance\count@\@ne}}% +} +\newlength{\@ww} +\newlength{\@wwa} +\newlength{\@wwb} +\newlength{\@wwo} +\newlength{\@wwi} +\newcounter{@pntscale} +\newcounter{weightscale} +\newlength{\botscale} +\newcommand{\setweightscale}[1]{\setcounter{weightscale}{#1}} +\newcommand{\resetweightscale}{\setcounter{weightscale}{10000}} +\resetweightscale +\newcommand{\rqbezier}[2][0]{\@rqbez{#1}#2} +\gdef\@rqbez#1(#2,#3)(#4,#5)(#6,#7)(#8){% + \@ovxx = #8\unitlength + \ifdim\@ovxx = \unitlength + \PackageWarning{bez123}{Rational quadratic denerates to quadratic} + \qbezier[#1](#2,#3)(#4,#5)(#6,#7) + \else + \ifdim\@ovxx = \z@ + \PackageWarning{bez123}{Rational quadratic degenerates to linear} + \lbezier[#1](#2,#3)(#6,#7) + \else + \@ovxx = #4\unitlength + \advance\@ovxx by -#2\unitlength + \ifdim \@ovxx < \z@ + \@ovxx = -\@ovxx + \fi + \@ovdx = #6\unitlength + \advance\@ovdx by -#4\unitlength + \ifdim \@ovdx < \z@ + \@ovdx = -\@ovdx + \fi + \ifdim \@ovxx < \@ovdx + \@ovxx = \@ovdx + \fi + \@ovyy = #5\unitlength + \advance\@ovyy by -#3\unitlength + \ifdim \@ovyy < \z@ + \@ovyy = -\@ovyy + \fi + \@ovdy = #7\unitlength + \advance\@ovdy by -#5\unitlength + \ifdim \@ovdy < \z@ + \@ovdy = -\@ovdy + \fi + \ifdim \@ovyy < \@ovdy + \@ovyy = \@ovdy + \fi + \ifdim \@ovxx > \@ovyy + \@multicnt = \@ovxx + \else + \@multicnt = \@ovyy + \fi + \@wwi = \@multicnt sp + \ifnum #1<\@ne + \@ovxx = 0.5\@halfwidth + \divide\@multicnt by \@ovxx + \ifnum\qbeziermax < \@multicnt + \@multicnt = \qbeziermax\relax + \fi + \else + \@multicnt = #1\relax + \fi + \@tempcnta = \@multicnt + \advance\@tempcnta by \@ne + \divide\@tempcnta by \tw@ + \advance\@tempcnta by \@ne + \@wwo = \maxdimen + \advance\@wwo by -\@wwi + \divide\@wwo by \tw@ + \divide\@wwo by \@wwi + \@wwi = 10sp + \@wwi = #8\@wwi + \ifdim\@wwi < \z@ + \@wwi = -\@wwi + \fi + \divide\@wwi by 10\relax + \ifdim\@wwi < \@wwo + \c@@pntscale = \@ne + \else + \divide\@wwi by \tw@ + \ifdim\@wwi < \@wwo + \c@@pntscale = \tw@ + \else + \divide\@wwi by \tw@ + \ifdim\@wwi < \@wwo + \c@@pntscale = 4\relax + \else + \divide\@wwi by \tw@ + \ifdim\@wwi < \@wwo + \c@@pntscale = 8\relax + \else + \c@@pntscale = 16\relax + \fi + \fi + \fi + \fi + \@ovxx = #4\unitlength \advance\@ovxx by -#2\unitlength + \multiply\@ovxx by \tw@ + \divide\@ovxx by \c@@pntscale + \@ovdx = #8\@ovxx + \@ovxx = #6\unitlength \advance\@ovxx by -#2\unitlength + \divide\@ovxx by \c@@pntscale + \advance\@ovxx by -\@ovdx + \divide\@ovxx by \@multicnt + \@ovyy = #5\unitlength \advance\@ovyy by -#3\unitlength + \multiply\@ovyy by \tw@ + \divide\@ovyy by \c@@pntscale + \@ovdy = #8\@ovyy + \@ovyy = #7\unitlength \advance\@ovyy by -#3\unitlength + \divide\@ovyy by \c@@pntscale + \advance\@ovyy by -\@ovdy + \divide\@ovyy by \@multicnt + \setlength{\botscale}{\c@weightscale sp} + \@wwo = \botscale + \@wwi = #8\@wwo + \@wwa = \@wwo \advance\@wwa by -\@wwi + \multiply\@wwa by \tw@ + \@wwb = \@wwa + \divide\@wwb by \@multicnt + \@wwi = \botscale + \setbox\@tempboxa\hbox{\vrule \@height\@halfwidth + \@depth \@halfwidth + \@width \@wholewidth}% + \put(#2,#3){% + \count@ = \z@ + \@whilenum{\count@ < \@tempcnta}\do + {\@xdim = \count@\@ovxx + \advance\@xdim by \@ovdx + \divide\@xdim by \@multicnt + \multiply\@xdim by \count@ + \@ydim = \count@\@ovyy + \advance\@ydim by \@ovdy + \divide\@ydim by \@multicnt + \multiply\@ydim by \count@ + \@ww = \count@\@wwb + \advance\@ww by -\@wwa + \divide\@ww by \@multicnt + \multiply\@ww by \count@ + \advance\@ww by \@wwo + \divide\@ww by \c@@pntscale + \ifdim\@ww = \z@ + \else + \divide\@xdim by \@ww + \divide\@ydim by \@ww + \fi + \multnooverflow{\@xdim}{\botscale}% + \multnooverflow{\@ydim}{\botscale}% + \raise \@ydim + \hb@xt@\z@{\kern\@xdim + \unhcopy\@tempboxa\hss}% + \advance\count@\@ne}} + \@ovxx = #4\unitlength \advance\@ovxx by -#6\unitlength + \multiply\@ovxx by \tw@ + \divide\@ovxx by \c@@pntscale + \@ovdx = #8\@ovxx + \@ovxx = #2\unitlength \advance\@ovxx by -#6\unitlength + \divide\@ovxx by \c@@pntscale + \advance\@ovxx by -\@ovdx + \divide\@ovxx by \@multicnt + \@ovyy = #5\unitlength \advance\@ovyy by -#7\unitlength + \multiply\@ovyy by \tw@ + \divide\@ovyy by \c@@pntscale + \@ovdy = #8\@ovyy + \@ovyy = #3\unitlength \advance\@ovyy by -#7\unitlength + \divide\@ovyy by \c@@pntscale + \advance\@ovyy by -\@ovdy + \divide\@ovyy by \@multicnt + \put(#6,#7){% + \count@ = \z@ + \@whilenum{\count@ < \@tempcnta}\do + {\@xdim = \count@\@ovxx + \advance\@xdim by \@ovdx + \divide\@xdim by \@multicnt + \multiply\@xdim by \count@ + \@ydim = \count@\@ovyy + \advance\@ydim by \@ovdy + \divide\@ydim by \@multicnt + \multiply\@ydim by \count@ + \@ww = \count@\@wwb + \advance\@ww by -\@wwa + \divide\@ww by \@multicnt + \multiply\@ww by \count@ + \advance\@ww by \@wwo + \divide\@ww by \c@@pntscale + \ifnum\@ww = \z@ + \else + \divide\@xdim by \@ww + \divide\@ydim by \@ww + \fi + \multnooverflow{\@xdim}{\botscale}% + \multnooverflow{\@ydim}{\botscale}% + \raise \@ydim + \hb@xt@\z@{\kern\@xdim + \unhcopy\@tempboxa\hss}% + \advance\count@\@ne}} + \fi\fi} +\endinput +%% +%% End of file `bez123.sty'. diff --git a/Master/texmf-dist/tex/latex/bez123/multiply.sty b/Master/texmf-dist/tex/latex/bez123/multiply.sty new file mode 100644 index 00000000000..14a76bef147 --- /dev/null +++ b/Master/texmf-dist/tex/latex/bez123/multiply.sty @@ -0,0 +1,77 @@ +%% +%% This is file `multiply.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% bez123.dtx (with options: `mult') +%% +%% Author: Peter Wilson (CUA and NIST) +%% now at: peter.r.wilson@boeing.com +%% +%% Copyright 1998 Peter R. Wilson +%% +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +\ProvidesPackage{multiply}[1998/10/14 v1.1 Multiplication of lengths without overflow] +\newlength{\n@fl@wa} +\newlength{\n@fl@wb} +\newlength{\n@fl@wc} +\newif\ifch@nge +\newcommand{\multnooverflow}[2]{% + \n@fl@wa = #1\relax% + \n@fl@wb = #2\relax% + \ch@ngefalse% + \ifnum\n@fl@wb = \@ne% + \else% + \ifnum\n@fl@wb = \z@% + \n@fl@wa = \z@% + \else% + \ifnum\n@fl@wb = \m@ne% + \ch@ngetrue% + \else% + \ifnum\n@fl@wa = \z@% + \else% + \ifnum\n@fl@wa = \@ne% + \n@fl@wa = \n@fl@wb% + \else% + \ifnum\n@fl@wa = \m@ne% + \n@fl@wa = -\n@fl@wb% + \else% + \ifnum\n@fl@wa < \z@% + \ch@ngetrue% + \n@fl@wa = -\n@fl@wa% + \fi% + \ifnum\n@fl@wb < \z@% + \n@fl@wb = -\n@fl@wb% + \ifch@nge% + \ch@ngefalse% + \else% + \ch@ngetrue% + \fi% + \fi% + \n@fl@wc = \maxdimen% + \divide\n@fl@wc by \n@fl@wb% + \advance\n@fl@wc by -1sp% \m@ne + \ifnum\n@fl@wa > \n@fl@wc% + \n@fl@wa = \maxdimen% + \PackageWarning{multiply}{Multiplication overflow}% + \else% + \multiply\n@fl@wa by \n@fl@wb% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \ifch@nge% + \n@fl@wa = -\n@fl@wa% + \fi% + #1 = \n@fl@wa% +} +\endinput +%% +%% End of file `multiply.sty'. -- cgit v1.2.3