diff options
Diffstat (limited to 'graphics/pgf/contrib/pgfplots/tex/pgfplotsplothandlers.code.tex')
-rw-r--r-- | graphics/pgf/contrib/pgfplots/tex/pgfplotsplothandlers.code.tex | 86 |
1 files changed, 76 insertions, 10 deletions
diff --git a/graphics/pgf/contrib/pgfplots/tex/pgfplotsplothandlers.code.tex b/graphics/pgf/contrib/pgfplots/tex/pgfplotsplothandlers.code.tex index bad6354b2f..4f138c8077 100644 --- a/graphics/pgf/contrib/pgfplots/tex/pgfplotsplothandlers.code.tex +++ b/graphics/pgf/contrib/pgfplots/tex/pgfplotsplothandlers.code.tex @@ -1952,6 +1952,7 @@ \newif\ifpgfplotsplothandlercontour@labels \newif\ifpgfplotsplothandlercontour@filled +\newif\ifpgfplotsplothandlercontour@corners \def\pgfplotsplothandlercontour@axis@set@inverse#1#2#3#4{% \pgfplotsutilifstringequal{#1}{#4}{% @@ -2041,6 +2042,8 @@ contour/contour label style/.style={ /pgfplots/contour/every contour label/.append style={#1}}, % + contour/corners/.is if=pgfplotsplothandlercontour@corners, + contour/corners=false, % % Styles to actually *compute* the contour. % These are mostly placeholders here: As long as the @@ -2090,6 +2093,16 @@ contour external/script extension/.initial=script, contour external/script/.initial=,% not yet initialised contour external/cmd/.initial=,% not yet initialised + contour external/script type/.is choice=,% + contour external/script type/system call/.code={\def\pgfplotsplothandlercontourexternal@script@type{S}},% + contour external/script type/lua/.code={\def\pgfplotsplothandlercontourexternal@script@type{L}\pgfkeyssetvalue{/pgfplots/contour external/script extension}{lua}},% + contour external/script type/system call,% + contour external/script input format/.is choice,% + contour external/script input format/x y meta meta/.code={\def\pgfplotsplothandlercontourexternal@script@input@format{M}},% + contour external/script input format/x y z meta/.code={\def\pgfplotsplothandlercontourexternal@script@input@format{Z}},% + contour external/script input format=x y meta meta,% + contour external/@before cmd/.initial=, + contour external/@after cmd/.initial=, contour external/.search also=/pgfplots/contour, contour gnuplot/.style={ contour external={% @@ -2684,6 +2697,7 @@ \else \pgfplotsset{plot to file/scanline marks/if in input}% the choice 'always' is unaware of existing end-of-scanline marks \fi + % \pgfplotsplothandlertofile{\pgfplotsplothandlercontourexternal@file.dat}% \pgfplotsplothandlersurveystart \let\pgfplotsplothandlersurveypoint@tofile=\pgfplotsplothandlersurveypoint @@ -2694,6 +2708,10 @@ \pgfplotsplothandlersurveypoint@contour@prepare@axes x% \pgfplotsplothandlersurveypoint@contour@prepare@axes y% \pgfplotsplothandlersurveypoint@contour@prepare@axes z% + % + \global\let\pgfplotsplothandlercontourexternal@metamin=\relax + \global\let\pgfplotsplothandlercontourexternal@metamax=\relax + % }% % #1: either x, y, or z @@ -2745,22 +2763,39 @@ }% \def\pgfplotsplothandlersurveypoint@contourexternal{% - % temporarily disable updates to point meta limits. They should be - % updated during the contour prepared processing. - \let\pgfplotsplothandlercontourexternal@orig@perpointlimits@limits=\pgfplots@set@perpointmeta@limits - \let\pgfplots@set@perpointmeta@limits=\relax + \ifx\pgfplotsplothandlercontourexternal@metamin\relax + % remember values. We want to restore them right before we parse the output of contour external: + \global\let\pgfplotsplothandlercontourexternal@metamin=\pgfplots@metamin + \global\let\pgfplotsplothandlercontourexternal@metamax=\pgfplots@metamax + \fi + \pgfplotsplothandlersurveypoint@contour@axes@std@to@reordered % \pgfplotsaxissurveysetpointmeta - \let\pgfplots@current@point@z=\pgfplots@current@point@meta % - \let\pgfplots@set@perpointmeta@limits=\pgfplotsplothandlercontourexternal@orig@perpointlimits@limits + \if M\pgfplotsplothandlercontourexternal@script@input@format + \let\pgfplots@current@point@z=\pgfplots@current@point@meta + \fi % - \pgfplotsplothandlersurveypoint@contour@axes@std@to@reordered % -%\message{contour gnuplot: collecting point (\pgfplots@current@point@x,\pgfplots@current@point@y,\pgfplots@current@point@z) [\pgfplots@current@point@meta]...}% +%\message{contour external collecting point (\pgfplots@current@point@x,\pgfplots@current@point@y,\pgfplots@current@point@z) [\pgfplots@current@point@meta]...}% \pgfplotsplothandlersurveypoint@tofile }% +% Utility function which is NOT normally invoked. It can be invoked inside of 'contour external/@before cmd'. Should it become the default? +\def\pgfplotscontourpopulateallkeys{% + \pgfkeysgetvalue{/pgfplots/contour/levels}\pgfplots@loc@TMPa + \ifx\pgfplots@loc@TMPa\pgfutil@empty + \ifx\pgfplots@metamax\pgfutil@empty + \else + \edef\pgfplots@loc@TMPa{\pgfplots@metamin:\pgfplots@metamax}% + \edef\thecontournumber{\pgfkeysvalueof{/pgfplots/contour/number}}% + \expandafter\pgfplots@domain@to@foreach\pgfplots@loc@TMPa\relax{\thecontournumber}% + \expandafter\pgfplots@foreach@to@list@macro\expandafter{\pgfplotsretval}% + \pgfkeyslet{/pgfplots/contour/levels}\pgfplotsretval + \fi + \fi +}% + { \catcode`\`=12 \catcode`\'=12 @@ -2777,6 +2812,7 @@ \fi \fi % + \pgfkeysvalueof{/pgfplots/contour external/@before cmd}\relax% \begingroup \let\numcoords=\pgfplots@current@point@coordindex% \pgfplotsautocompletemeshkeys @@ -2790,16 +2826,46 @@ \edef\ordering{\pgfplots@plot@mesh@ordering}% \edef\infile{\pgfplotsplothandlercontourexternal@file.dat}% \edef\outfile{\pgfplotsplothandlercontourexternal@file.table}% - \edef\script{\pgfplotsplothandlercontourexternal@file.\pgfkeysvalueof{/pgfplots/contour external/script extension}}% + % + \pgfkeysgetvalue{/pgfplots/contour external/cmd}\cmd + \pgfkeysgetvalue{/pgfplots/contour external/script extension}\scriptext + \if S\pgfplotsplothandlercontourexternal@script@type + \else + % script type=lua + \ifx\cmd\pgfutil@empty + \pgfkeyssetvalue{/pgfplots/contour external/cmd}{require(\"\scriptbase\")}% + \pgfkeysgetvalue{/pgfplots/contour external/cmd}\cmd + \fi + \fi + % + \pgfplotscoordmath{meta}{tofixed}{\pgfplots@metamin}% + \let\pgfplotsmetamin=\pgfmathresult + \pgfplotscoordmath{meta}{tofixed}{\pgfplots@metamax}% + \let\pgfplotsmetamax=\pgfmathresult + % + \edef\script{\pgfplotsplothandlercontourexternal@file.\scriptext}% + \edef\scriptbase{\pgfplotsplothandlercontourexternal@file}% \edef\thecontourlevels{\pgfkeysvalueof{/pgfplots/contour/levels}}% \edef\thecontournumber{\pgfkeysvalueof{/pgfplots/contour/number}}% \immediate\openout\w@pgf@writea=\script \immediate\write\w@pgf@writea{\pgfkeysvalueof{/pgfplots/contour external/script}}% \immediate\closeout\w@pgf@writea % - \pgfplots@shellescape{\pgfkeysvalueof{/pgfplots/contour external/cmd}}% + \if S\pgfplotsplothandlercontourexternal@script@type + \pgfplots@shellescape{\cmd}% + \else + \ifpgfplots@LUA@supported + \pgfplotsutil@directlua{\pgfkeysvalueof{/pgfplots/contour external/cmd}}% + \else + \pgfplots@error{Calls to 'lua' are currently unsupported. Please invoke lualatex instead.}% + \fi + \fi + \pgfkeysvalueof{/pgfplots/contour external/@after cmd}\relax% \endgroup % + % RESET point meta computation here such that it can be collected from the 'contour prepared' stream (i.e. the output of contour external): + \global\let\pgfplots@metamin=\pgfplotsplothandlercontourexternal@metamin + \global\let\pgfplots@metamax=\pgfplotsplothandlercontourexternal@metamax % \pgfplotsplothandlercontourprepared % the PREPARE steps in the coord stream start/end have already |