summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/hobby/hobby.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-08-16 21:45:29 +0000
committerKarl Berry <karl@freefriends.org>2014-08-16 21:45:29 +0000
commit555761b02e9d39a42e9a72dc9f90955c65036740 (patch)
treee4d97a65928f81d51ee21b70dcb104095c0ba85d /Master/texmf-dist/source/latex/hobby/hobby.dtx
parent9caacf53d7d2a1620a603aa644617293a60183e2 (diff)
hobby (16aug14)
git-svn-id: svn://tug.org/texlive/trunk@34953 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/hobby/hobby.dtx')
-rw-r--r--Master/texmf-dist/source/latex/hobby/hobby.dtx100
1 files changed, 79 insertions, 21 deletions
diff --git a/Master/texmf-dist/source/latex/hobby/hobby.dtx b/Master/texmf-dist/source/latex/hobby/hobby.dtx
index 74ad06c13dd..39f96042d33 100644
--- a/Master/texmf-dist/source/latex/hobby/hobby.dtx
+++ b/Master/texmf-dist/source/latex/hobby/hobby.dtx
@@ -6,7 +6,7 @@
----------------------------------------------------------------
hobby --- a TikZ/PGF library for drawing smooth(ish) curves using
Hobby's algorithm (implemented in LaTeX3)
-E-mail: stacey@math.ntnu.no
+E-mail: loopspace@mathforge.org
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
@@ -33,7 +33,7 @@ The implementation is in LaTeX3. It can be used as as a TikZ
----------------------------------------------------------------
hobby --- a TikZ/PGF library for drawing smooth(ish) curves using
Hobby's algorithm (implemented in LaTeX3)
-E-mail: stacey@math.ntnu.no
+E-mail: loopspace@mathforge.org
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
@@ -41,7 +41,7 @@ See http://www.latex-project.org/lppl.txt
\endpreamble
\postamble
-Copyright (C) 2012 by Andrew Stacey <stacey@math.ntnu.no>
+Copyright (C) 2012 by Andrew Stacey <loopspace@mathforge.org>
This file may be distributed and/or modified under the conditions
of the LaTeX Project Public License, either version 1.3 of this
@@ -110,7 +110,7 @@ and the derived files hobby.code.tex
%</driver>
% \fi
%
-% \CheckSum{3304}
+% \CheckSum{3380}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -134,7 +134,7 @@ and the derived files hobby.code.tex
%
% \providecommand*{\url}{\texttt}
% \title{The \textsf{Hobby} package: code}
-% \author{Andrew Stacey \\ \url{stacey@math.ntnu.no}}
+% \author{Andrew Stacey \\ \url{loopspace@mathforge.org}}
% \date{\hobbyVersion\ from\ \hobbyDate}
% \maketitle
%
@@ -182,8 +182,8 @@ and the derived files hobby.code.tex
\tl_new:N \g__hobby_version
\tl_new:N \g__hobby_date
-\tl_set:Nn \g__hobby_version {1.4}
-\tl_set:Nn \g__hobby_date {2014-01-21}
+\tl_set:Nn \g__hobby_version {1.6}
+\tl_set:Nn \g__hobby_date {2014-08-11}
\DeclareDocumentCommand \hobbyVersion {}
{
\tl_use:N \g__hobby_version
@@ -480,20 +480,20 @@ and the derived files hobby.code.tex
% \begin{macro}{\l_hobby_in_angle_fp}
% \Verb+\l_hobby_in_angle_fp+ is the angle at the end of an open path.
% If this is not specified, it will be computed automatically.
-% It is set to \Verb+\c_undefined_fp+ to allow easy detection of when it has been specified.
+% It is set to \Verb+\c_inf_fp+ to allow easy detection of when it has been specified.
% \begin{macrocode}
\fp_new:N \l_hobby_in_angle_fp
-\fp_set_eq:NN \l_hobby_in_angle_fp \c_undefined_fp
+\fp_set_eq:NN \l_hobby_in_angle_fp \c_inf_fp
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l_hobby_out_angle_fp}
% \Verb+\l_hobby_out_angle_fp+ is the angle at the start of an open path.
% If this is not specified, it will be computed automatically.
-% It is set to \Verb+\c_undefined_fp+ to allow easy detection of when it has been specified.
+% It is set to \Verb+\c_inf_fp+ to allow easy detection of when it has been specified.
% \begin{macrocode}
\fp_new:N \l_hobby_out_angle_fp
-\fp_set_eq:NN \l_hobby_out_angle_fp \c_undefined_fp
+\fp_set_eq:NN \l_hobby_out_angle_fp \c_inf_fp
% \end{macrocode}
% \end{macro}
%
@@ -742,7 +742,7 @@ and the derived files hobby.code.tex
% Just need to set the incoming and outgoing angles
% \begin{macrocode}
\hobby_distangle:n {0}
-\fp_if_undefined:NF \l_hobby_out_angle_fp
+\fp_compare:nF { \l_hobby_out_angle_fp == \c_inf_fp }
{
\fp_set:Nn \l_hobby_tempa_fp { \l_hobby_out_angle_fp
- \array_get:Nn \l_hobby_angles_array {0}}
@@ -763,15 +763,15 @@ and the derived files hobby.code.tex
\fp_add:Nn \l_hobby_tempa_fp {2 * \c_pi_fp}
}
\array_put:Nnx \l_hobby_theta_array {0} {\fp_to_tl:N \l_hobby_tempa_fp}
- \fp_if_undefined:NT \l_hobby_in_angle_fp
+ \fp_compare:nT { \l_hobby_in_angle_fp == \c_inf_fp }
{
%^^A \fp_mul:Nn \l_hobby_tempa_fp {-1}
\array_put:Nnx \l_hobby_phi_array {1}{ \fp_to_tl:N \l_hobby_tempa_fp}
}
}
-\fp_if_undefined:NTF \l_hobby_in_angle_fp
+\fp_compare:nTF { \l_hobby_in_angle_fp == \c_inf_fp }
{
- \fp_if_undefined:NT \l_hobby_out_angle_fp
+ \fp_compare:nT { \l_hobby_out_angle_fp == \c_inf_fp }
{
\array_put:Nnx \l_hobby_phi_array {1} {0}
\array_put:Nnx \l_hobby_theta_array {0} {0}
@@ -791,7 +791,7 @@ and the derived files hobby.code.tex
\array_put:Nnx \l_hobby_phi_array {1}
{\fp_to_tl:N \l_hobby_tempa_fp}
- \fp_if_undefined:NT \l_hobby_out_angle_fp
+ \fp_compare:nT { \l_hobby_out_angle_fp == \c_inf_fp }
{
%^^A \fp_mul:Nn \l_hobby_tempa_fp {-1}
\array_put:Nnx \l_hobby_theta_array {0}{ \fp_to_tl:N \l_hobby_tempa_fp}
@@ -981,7 +981,7 @@ and the derived files hobby.code.tex
% Open path.
% First, we test to see if \(\theta_0\) has been specified.
% \begin{macrocode}
-\fp_if_undefined:NTF \l_hobby_out_angle_fp
+\fp_compare:nTF { \l_hobby_out_angle_fp == \c_inf_fp }
{
\array_put:Nnx \l_hobby_matrix_b_array {0} {\fp_to_tl:n {
(\array_get:Nn \l_hobby_tension_in_array {1})^3
@@ -1036,7 +1036,7 @@ and the derived files hobby.code.tex
%
% Next, if \(\phi_n\) has been given.
% \begin{macrocode}
-\fp_if_undefined:NTF \l_hobby_in_angle_fp
+\fp_compare:nTF { \l_hobby_in_angle_fp == \c_inf_fp }
{
\array_put:Nnx \l_hobby_matrix_b_array {\l_hobby_npoints_int - 1} {\fp_to_tl:n {
@@ -1234,7 +1234,7 @@ and the derived files hobby.code.tex
% \end{macrocode}
% If \(\phi_n\) was not given, we compute it from \(\theta_{n-1}\).
% \begin{macrocode}
-\fp_if_undefined:NT \l_hobby_in_angle_fp
+\fp_compare:nT { \l_hobby_in_angle_fp == \c_inf_fp }
{
\array_put:Nnx \l_hobby_phi_array {\l_hobby_npoints_int} {\fp_to_tl:n {
((3 * (\array_get:Nn \l_hobby_tension_in_array {\l_hobby_npoints_int}) - 1)
@@ -1661,8 +1661,8 @@ sin ( (\array_get:Nn \l_hobby_angles_array {##1})
\int_gset:Nn \l_hobby_npoints_int {-1}
\int_gset:Nn \l_hobby_draw_int {1}
- \fp_gset_eq:NN \l_hobby_in_angle_fp \c_undefined_fp
- \fp_gset_eq:NN \l_hobby_out_angle_fp \c_undefined_fp
+ \fp_gset_eq:NN \l_hobby_in_angle_fp \c_inf_fp
+ \fp_gset_eq:NN \l_hobby_out_angle_fp \c_inf_fp
\fp_gset_eq:NN \l_hobby_in_curl_fp \c_one_fp
\fp_gset_eq:NN \l_hobby_out_curl_fp \c_one_fp
}
@@ -1751,6 +1751,64 @@ sin ( (\array_get:Nn \l_hobby_angles_array {##1})
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\pgfpathhobby}
+% Low-level interface to the hobby construction.
+% This sets up the commands and starts the iterator.
+% \begin{macrocode}
+\def\pgfpathhobby{%
+ \pgfutil@ifnextchar\bgroup{\pgfpath@hobby}{\pgfpath@hobby{}}}
+\def\pgfpath@hobby#1{%
+ \hobbyinit\hobby@moveto\hobby@curveto\hobby@close
+ \hobbysetparams{#1}%
+ \pgfmathsetmacro\hobby@x{\the\pgf@path@lastx/1cm}%
+ \pgfmathsetmacro\hobby@y{\the\pgf@path@lasty/1cm}%
+ \hobbyaddpoint{x = \hobby@x, y = \hobby@y}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pgfpathhobbypt}
+% Adds a point to the construction
+% \begin{macrocode}
+\def\pgfpathhobbypt#1{%
+ #1%
+ \pgfmathsetmacro\hobby@x{\the\pgf@x/1cm}%
+ \pgfmathsetmacro\hobby@y{\the\pgf@y/1cm}%
+ \pgfutil@ifnextchar\bgroup{\pgfpathhobbyptparams}{\pgfpathhobbyptparams{}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pgfpathhobbyptparams}
+% \begin{macrocode}
+\def\pgfpathhobbyptparams#1{%
+ \hobbyaddpoint{#1,x = \hobby@x, y = \hobby@y}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pgfpathhobbyend}
+% \begin{macrocode}
+\def\pgfpathhobbyend{%
+ \ifhobby@externalise
+ \ifx\hobby@path@name\pgfutil@empty
+ \hobbygenusepath
+ \else
+ \hobbygenuseifnecpath{\hobby@path@name}%
+ \fi
+ \else
+ \hobbygenusepath
+ \fi
+ \ifx\hobby@path@name\pgfutil@empty
+ \else
+ \hobbysavepath{\hobby@path@name}%
+ \fi
+ \global\let\hobby@path@name=\pgfutil@empty
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
% Plot handlers
%
% \begin{macro}{\pgfplothanderhobby}