diff options
author | Karl Berry <karl@freefriends.org> | 2015-08-08 22:54:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-08-08 22:54:29 +0000 |
commit | 531d43fafa269c546d587eaca6cd14adcd11914f (patch) | |
tree | 1883933af984c60254e6d9d1bd955a76748cb827 /Master/texmf-dist/tex/generic/pgf/modules | |
parent | 877e963d44f039783cb9227d90c911866c780961 (diff) |
pgf (8aug15)
git-svn-id: svn://tug.org/texlive/trunk@38079 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/modules')
3 files changed, 162 insertions, 120 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduledatavisualization.code.tex b/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduledatavisualization.code.tex index 243f8ce225d..f991fdedaef 100644 --- a/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduledatavisualization.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduledatavisualization.code.tex @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/modules/pgfmoduledatavisualization.code.tex,v 1.47 2013/07/19 13:16:48 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/modules/pgfmoduledatavisualization.code.tex,v 1.50 2015/05/18 17:01:16 tantau Exp $ \usepgfmodule{oo,shapes} \usepgflibrary{fpu} @@ -1523,11 +1523,10 @@ % has a value different from \relax, it will always be used instead % of the in attribute itself. This can be useful to temporarily % set a constant value to a key inside a mapping chain. + % + % If the subkey /is min or max is set to "min" or "max", the mapping + % will always be done to the respective out min or out max values. -% \attribute clip; -% % The code for clipping the interval. Will set \pgf@dvcliptrue, if a -% % clip is necessary. - \attribute out; % The name of the output attribute. @@ -1577,35 +1576,6 @@ \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,map,map datapoint signal) } -% % Method -% \method set clip interval(#1,#2) { -% \def\pgfdvmin{#1}% -% \def\pgfdvmax{#2}% -% \ifx\pgfdvmin\pgfutil@empty% -% \else% -% \pgfdvmathenter{\pgf@dv@temp}{\pgfdvmin}% -% \pgfdvmathexitbyserializing{\pgfdvmin}{\pgf@dv@temp}% -% \fi -% \ifx\pgfdvmax\pgfutil@empty% -% \else% -% \pgfdvmathenter{\pgf@dv@temp}{\pgfdvmax}% -% \pgfdvmathexitbyserializing{\pgfdvmax}{\pgf@dv@temp}% -% \fi -% \pgfooeset{clip}{% -% \noexpand\pgf@dvclipfalse% -% \ifx\pgfdvmin\pgfutil@empty% -% \else% -% \noexpand\pgfdvmathenter{\noexpand\pgf@dv@temp}{\pgfdvmin}% -% \noexpand\pgfdvmathifless{\noexpand\pgfvalue}{\noexpand\pgf@dv@temp}{\noexpand\pgf@dvcliptrue}{}% -% \fi% -% \ifx\pgfdvmax\pgfutil@empty% -% \else% -% \noexpand\pgfdvmathenter{\noexpand\pgf@dv@temp}{\pgfdvmax}% -% \noexpand\pgfdvmathifless{\noexpand\pgf@dv@temp}{\noexpand\pgfvalue}{\noexpand\pgf@dvcliptrue}{}% -% \fi% -% } -% } - % Method % % #1 = in interval minimum @@ -1624,67 +1594,88 @@ % Let's start with the output, it's easier... \pgfoolet{out min}{\pgf@out@interval@min} \pgfoolet{out max}{\pgf@out@interval@max} - \pgfdvmathsub{\pgf@out@diff}{\pgf@out@interval@max}{\pgf@out@interval@min} - \let\pgfvalue=\pgf@in@interval@min - \pgfoovalueof{trans} - \let\pgf@in@interval@min@transformed=\pgfvalue - \pgfoolet{trans in min}{\pgf@in@interval@min@transformed}% - \let\pgfvalue=\pgf@in@interval@max - \pgfoovalueof{trans} - \let\pgf@in@interval@max@transformed=\pgfvalue - \pgfdvmathsub{\pgf@diff@in@transformed}{\pgf@in@interval@max@transformed}{\pgf@in@interval@min@transformed} - % - % Precompute the scaling - % - \pgfdvmathdiv{\pgf@scale}{\pgf@out@diff}{\pgf@diff@in@transformed}% - \pgfoolet{scale}{\pgf@scale}% + \pgfdvmathifless{\pgf@in@interval@min}{\pgf@in@interval@max}{% + \pgfdvmathsub{\pgf@out@diff}{\pgf@out@interval@max}{\pgf@out@interval@min} + \let\pgfvalue=\pgf@in@interval@min + \pgfoovalueof{trans} + \let\pgf@in@interval@min@transformed=\pgfvalue + \pgfoolet{trans in min}{\pgf@in@interval@min@transformed}% + \let\pgfvalue=\pgf@in@interval@max + \pgfoovalueof{trans} + \let\pgf@in@interval@max@transformed=\pgfvalue + \pgfdvmathsub{\pgf@diff@in@transformed}{\pgf@in@interval@max@transformed}{\pgf@in@interval@min@transformed} + % + % Precompute the scaling + % + \pgfdvmathdiv{\pgf@scale}{\pgf@out@diff}{\pgf@diff@in@transformed}% + \pgfoolet{scale}{\pgf@scale}% + }{% + \pgfoolet{scale}\pgf@dv@no@scale% + }% }% } - + \def\pgf@dv@no@scale{noscale} + % Slot \method map() { - \pgfooget{scale}\pgf@temp - \ifx\pgf@temp\pgfutil@empty% + \pgfooget{scale}\pgf@dv@scale + \ifx\pgf@dv@scale\pgfutil@empty% % not yet setup \else% - \pgfkeysgetvalue{/data point/\pgfoovalueof{in}/const}\pgf@dv@external@value% - \ifx\pgf@dv@external@value\relax% - \pgfkeysgetvalue{/data point/\pgfoovalueof{in}}\pgf@dv@external@value% - \fi% - \ifx\pgf@dv@external@value\pgfutil@empty% - \pgf@dv@mapper@pos@check% + \pgfkeysgetvalue{/data point/\pgfoovalueof{in}/is min or max}\pgf@dv@is% + \ifx\pgf@dv@is\pgf@min@text% + \pgf@dv@set@out@min% \else% - \ifx\pgf@dv@external@value\relax% - \pgf@dv@mapper@pos@check% + \ifx\pgf@dv@is\pgf@max@text% + \pgf@dv@set@out@max% \else% -% % Clip? - \pgfdvmathenter{\pgfvalue}{\pgf@dv@external@value}% -% \pgfoovalueof{clip}% -% \ifpgf@dvclip% -% \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgfutil@empty% -% \else% - \pgf@dv@mapper@trans{} -% \fi% + \ifx\pgf@dv@scale\pgf@dv@no@scale% + \pgf@dv@mapper@goto@mid% + \else% + \pgfkeysgetvalue{/data point/\pgfoovalueof{in}/const}\pgf@dv@external@value% + \ifx\pgf@dv@external@value\relax% + \pgfkeysgetvalue{/data point/\pgfoovalueof{in}}\pgf@dv@external@value% + \fi% + \ifx\pgf@dv@external@value\pgfutil@empty% + \pgf@dv@mapper@pos@check% + \else% + \ifx\pgf@dv@external@value\relax% + \pgf@dv@mapper@pos@check% + \else% + \pgfdvmathenter{\pgfvalue}{\pgf@dv@external@value}% + \pgf@dv@mapper@trans + \fi% + \fi% + \fi% \fi% \fi% -% \pgfkeysgetvalue{/data point/\pgfoovalueof{in}/min}\pgf@dv@external@value% -% \ifx\pgf@dv@external@value\relax\else% -% \ifx\pgf@dv@external@value\pgfutil@empty\else% -% \pgfdvmathenter{\pgfvalue}{\pgf@dv@external@value}% -% \pgf@dv@mapper@trans{/min} -% \fi -% \fi -% \pgfkeysgetvalue{/data point/\pgfoovalueof{in}/max}\pgf@dv@external@value% -% \ifx\pgf@dv@external@value\relax\else% -% \ifx\pgf@dv@external@value\pgfutil@empty\else% -% \pgfdvmathenter{\pgfvalue}{\pgf@dv@external@value}% -% \pgf@dv@mapper@trans{/max} -% \fi -% \fi \fi% } - \def\pgf@dv@mapper@trans#1{ + \def\pgf@dv@set@out@min{% + \pgfkeyslet{/data point/\pgfoovalueof{out}/is min or max}\pgf@min@text% + \pgfooget{out min}{\pgf@minmax@temp}% + \pgf@dv@set@out@now% + } + \def\pgf@dv@set@out@max{% + \pgfkeyslet{/data point/\pgfoovalueof{out}/is min or max}\pgf@max@text% + \pgfooget{out max}{\pgf@minmax@temp}% + \pgf@dv@set@out@now% + } + \def\pgf@dv@set@out@now{% + \pgfkeysgetvalue{/data point/\pgfoovalueof{out}/offset}\pgf@dv@external@offset% + \ifx\pgf@dv@external@offset\relax\else% + \ifx\pgf@dv@external@offset\pgfutil@empty\else% + \pgfdvmathenter{\pgfvalue}{\pgf@minmax@temp}% + \pgfdvmathenter{\pgf@dv@offset}{\pgf@dv@external@offset}% + \pgfdvmathadd{\pgfvalue}{\pgfvalue}{\pgf@dv@offset} + \pgfdvmathexitbyserializing{\pgf@minmax@temp}{\pgfvalue}% + \fi + \fi + \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgf@minmax@temp% + } + + \def\pgf@dv@mapper@trans{ \pgfooget{trans in min}{\pgf@dv@trans@in@min}% \pgfooget{scale}{\pgf@dv@scale}% \pgfooget{out min}{\pgf@dv@out@min}% @@ -1692,7 +1683,7 @@ \pgfdvmathsub{\pgfvalue}{\pgfvalue}{\pgf@dv@trans@in@min}% \pgfdvmathmul{\pgfvalue}{\pgfvalue}{\pgf@dv@scale}% \pgfdvmathadd{\pgfvalue}{\pgfvalue}{\pgf@dv@out@min}% - \pgfkeysgetvalue{/data point/\pgfoovalueof{out}#1/offset}\pgf@dv@external@offset% + \pgfkeysgetvalue{/data point/\pgfoovalueof{out}/offset}\pgf@dv@external@offset% \ifx\pgf@dv@external@offset\relax\else% \ifx\pgf@dv@external@offset\pgfutil@empty\else% \pgfdvmathenter{\pgf@dv@offset}{\pgf@dv@external@offset}% @@ -1700,7 +1691,7 @@ \fi \fi \pgfdvmathexitbyserializing{\pgf@temp}{\pgfvalue}% - \pgfkeyslet{/data point/\pgfoovalueof{out}#1}\pgf@temp% + \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgf@temp% } \def\pgf@dv@mapper@pos@check{% @@ -1718,6 +1709,17 @@ \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgf@temp% \fi\fi% } + + \def\pgf@dv@mapper@goto@mid{% + % Ok, compute transformed min position: + \pgfooget{out min}{\pgf@out@interval@min} + \pgfooget{out max}{\pgf@out@interval@max} + \pgfdvmathmulfixed{\pgf@out@interval@min}{\pgf@out@interval@min}{.5} + \pgfdvmathmulfixed{\pgf@out@interval@max}{\pgf@out@interval@max}{.5} + \pgfdvmathadd{\pgf@out@val}{\pgf@out@interval@min}{\pgf@out@interval@max}% + \pgfdvmathexitbyserializing{\pgf@temp}{\pgf@out@val}% + \pgfkeyslet{/data point/\pgfoovalueof{out}}\pgf@temp% + } } @@ -1775,6 +1777,14 @@ % that deforms the linear mapping. In case f is specified, % f(#1) is mapped to #2 and f(#3) is mapped to #4. + \attribute spec maps min; + % When the scaling spec maps "min" to some value, rather than some + % specific value to that value, then spec maps min will be set to + % \pgfutil@firstoftwo, otherwise to \pgfutil@secondoftwo + + \attribute spec maps max; + % Like spec maps min + \attribute function; % Stores the function @@ -1826,18 +1836,6 @@ \pgfkeysvalueof{/pgf/data visualization/obj}.connect(\pgf@dv@me,phase,phase signal) } - -% % Method -% % -% % #1 = a min clip -- everything below this value will be clipped -% % #2 = a max value -- everything above this value will be clipped -% % -% % Sets a clipping for the underlying interval mapper. -% % -% \method set clip interval(#1,#2) { -% \pgfoovalueof{interval mapper}.set clip interval({#1},{#2})% -% } - % Getter % % Returns an interval object that stores the range of the in @@ -1887,21 +1885,23 @@ % In case #1 is set to the special value "min", it evaluates to % \pgfdvmin, when set to "max" it evaluates to \pgfdvmax. % - \method set in to(#1) { - \edef\pgf@temp{#1} - \ifx\pgf@temp\pgf@min@text + \method set in to(#1) {% + \edef\pgf@temp{#1}% + \ifx\pgf@temp\pgf@min@text% \pgf@dv@lib@set@mm% - \let\pgf@dv@value\pgfdvmin - \else - \ifx\pgf@temp\pgf@max@text + \let\pgf@dv@value\pgfdvmin% + \pgfoovalueof{spec maps min}{\pgfkeyslet{/data point/\pgfoovalueof{in}/is min or max}\pgf@min@text}{}% + \else% + \ifx\pgf@temp\pgf@max@text% \pgf@dv@lib@set@mm% - \let\pgf@dv@value\pgfdvmax - \else - \pgfdvmathenter{\pgf@dv@value}{\pgf@temp} - \fi - \fi - \pgfdvmathexitbyserializing{\pgf@dv@serial}{\pgf@dv@value} - \pgfkeyslet{/data point/\pgfoovalueof{in}}\pgf@dv@serial + \let\pgf@dv@value\pgfdvmax% + \pgfoovalueof{spec maps min}{\pgfkeyslet{/data point/\pgfoovalueof{in}/is min or max}\pgf@max@text}{}% + \else% + \pgfdvmathenter{\pgf@dv@value}{\pgf@temp}% + \fi% + \fi% + \pgfdvmathexitbyserializing{\pgf@dv@serial}{\pgf@dv@value}% + \pgfkeyslet{/data point/\pgfoovalueof{in}}\pgf@dv@serial% } \def\pgf@dv@lib@set@mm{ \pgfooget{in range obj}\pgfdvinrangeinterval @@ -1918,7 +1918,7 @@ \pgfoovalueof{in range obj}.get min and max() \ifx\pgfdvmin\pgfutil@empty% undefined, since no data points \else% - \pgfooget{scaling spec}\pgf@temp + \pgfooget{scaling spec}\pgf@temp% \expandafter\pgf@lib@dv@parse@scaling\pgf@temp\pgf@stop% \pgfoovalueof{interval mapper}.set interval values(% \pgf@lib@dv@min,\pgf@lib@dv@max,% @@ -1936,13 +1936,17 @@ \pgfdvmathenter{\pgf@lib@dv@max@at@mv}{#4} \ifx\pgf@lib@dv@min\pgf@min@text% \let\pgf@lib@dv@min@mv\pgfdvmin + \pgfoolet{spec maps min}\pgfutil@firstoftwo% \else \pgfdvmathenter{\pgf@lib@dv@min@mv}{\pgf@lib@dv@min} + \pgfoolet{spec maps min}\pgfutil@secondoftwo% \fi \ifx\pgf@lib@dv@max\pgf@max@text% \let\pgf@lib@dv@max@mv\pgfdvmax + \pgfoolet{spec maps max}\pgfutil@firstoftwo% \else \pgfdvmathenter{\pgf@lib@dv@max@mv}{\pgf@lib@dv@max} + \pgfoolet{spec maps max}\pgfutil@secondoftwo% \fi \pgfdvmathexitbyserializing{\pgf@lib@dv@min}{\pgf@lib@dv@min@mv} \pgfdvmathexitbyserializing{\pgf@lib@dv@min@at}{\pgf@lib@dv@min@at@mv} @@ -2767,7 +2771,7 @@ \c@pgf@counta=\c@pgf@countb\relax \c@pgf@countb=\c@pgf@countc\relax \fi - \edef\temp{rows: \the\c@pgf@counta, columns: \the\c@pgf@countb}\temp + %\edef\temp{rows: \the\c@pgf@counta, columns: \the\c@pgf@countb}\temp % % Now arrange the matrix % diff --git a/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex b/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex index 8620a91e4de..696608e31e8 100644 --- a/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/modules/pgfmoduleplot.code.tex,v 1.12 2013/07/31 16:22:24 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/modules/pgfmoduleplot.code.tex,v 1.13 2015/08/03 07:57:07 cfeuersaenger Exp $ % PGF's plotting interface works as follows: @@ -328,6 +328,7 @@ \def\pgfplotxyfile#1{% \begingroup% + \def\b@pgfplotsxyfile@scanning@for@first{1}% \pgfplotstreamstart% \openin\r@pgf@reada=#1 \ifeof\r@pgf@reada @@ -348,9 +349,15 @@ \let\par=\pgf@savedpar% \edef\pgf@temp{\pgf@temp}% \ifx\pgf@temp\pgfutil@empty% - \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi% + \if1\b@pgfplotsxyfile@scanning@for@first + \else + \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi% + \fi \else\ifx\pgf@temp\pgf@partext% - \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi% + \if1\b@pgfplotsxyfile@scanning@for@first + \else + \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi% + \fi \else% \expandafter\pgf@parsexyline\pgf@temp\pgf@stop% \fi\fi% @@ -358,6 +365,7 @@ } \def\pgf@parsexyline#1 #2 #3\pgf@stop{% + \def\b@pgfplotsxyfile@scanning@for@first{0}% \edef\pgf@xyline@flag@val{#3}% \ifx\pgf@xyline@flag@val\pgf@xyline@flag@undef% \pgfplotstreampointundefined% @@ -405,9 +413,15 @@ \def\pgf@readxyzfile{% \pgfutil@read\r@pgf@reada to \pgf@temp% \ifx\pgf@temp\pgfutil@empty% - \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi% + \if1\b@pgfplotsxyfile@scanning@for@first + \else + \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi% + \fi \else\ifx\pgf@temp\pgf@partext% - \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi% + \if1\b@pgfplotsxyfile@scanning@for@first + \else + \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi% + \fi \else% \expandafter\pgf@parsexyzline\pgf@temp\pgf@stop% \fi\fi% @@ -415,6 +429,7 @@ } \def\pgf@parsexyzline#1 #2 #3 #4\pgf@stop{% + \def\b@pgfplotsxyfile@scanning@for@first{0}% \edef\pgf@xyline@flag@val{#4}% \ifx\pgf@xyline@flag@val\pgf@xyline@flag@undef% \pgfplotstreampointundefined% diff --git a/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex b/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex index 7e4e65d4c38..6a4d0932393 100644 --- a/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/modules/pgfmoduleshapes.code.tex,v 1.34 2013/10/31 15:44:19 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/modules/pgfmoduleshapes.code.tex,v 1.35 2014/03/21 19:52:38 tantau Exp $ @@ -41,6 +41,7 @@ {\pgferror{Unknown shape ``#1''}}% {% {% + \pgf@outer@adjust@hook% \let\pgf@sh@savedmacros=\pgfutil@empty% MW \let\pgf@sh@savedpoints=\pgfutil@empty% \def\pgf@sm@shape@name{#1}% CJ % TT added prefix! @@ -108,6 +109,7 @@ }% }% } +\let\pgf@outer@adjust@hook\relax \def\pgf@shapes@late@pos@begin{% % Rename node @@ -153,8 +155,6 @@ }% } -\let\pgf@nodecallback=\pgfutil@gobble - % Creates a node @@ -400,6 +400,8 @@ } + + % Quickly create a coordinate node % % #1 = name @@ -849,12 +851,33 @@ inner sep/.style ={/pgf/inner xsep=#1,/pgf/inner ysep=#1}, outer xsep/.initial =.5\pgflinewidth, outer ysep/.initial =.5\pgflinewidth, - outer sep/.style ={/pgf/outer xsep=#1,/pgf/outer ysep=#1}, + outer sep/.code =\pgf@handle@outer@sep{#1}, minimum width/.initial =1pt, minimum height/.initial =1pt, minimum size/.style ={/pgf/minimum width=#1,/pgf/minimum height=#1}, } + + +\def\pgf@handle@outer@sep#1{% + \def\pgf@temp{#1}% + \ifx\pgf@temp\pgf@auto@text% + \def\pgf@outer@adjust@hook{% + \pgftransformationadjustments% + \pgfkeyssetvalue{/pgf/outer xsep}{.5\pgflinewidth*\pgfhorizontaltransformationadjustment}% + \pgfkeyssetvalue{/pgf/outer ysep}{.5\pgflinewidth*\pgfverticaltransformationadjustment}% + \pgf@outer@auto@adjust@hook% + }% + \else% + \pgfkeyssetvalue{/pgf/outer xsep}{#1}% + \pgfkeyssetvalue{/pgf/outer ysep}{#1}% + \fi% +} +\def\pgf@auto@text{auto} + +\let\pgf@outer@auto@adjust@hook\relax + + % Keys for rotating the shape border. % (may not be supported by all shapes) % |