From 555761b02e9d39a42e9a72dc9f90955c65036740 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sat, 16 Aug 2014 21:45:29 +0000
Subject: hobby (16aug14)

git-svn-id: svn://tug.org/texlive/trunk@34953 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/hobby/hobby.dtx | 100 +++++++++++++++++++------
 1 file changed, 79 insertions(+), 21 deletions(-)

(limited to 'Master/texmf-dist/source/latex/hobby/hobby.dtx')

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}
-- 
cgit v1.2.3

