You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
% Copyright 2008 by Till Tantau
|
|
%
|
|
% This file may be distributed and/or modified
|
|
%
|
|
% 1. under the LaTeX Project Public License and/or
|
|
% 2. under the GNU Public License.
|
|
%
|
|
% See the file doc/generic/pgf/licenses/LICENSE for more details.
|
|
|
|
\ProvidesFileRCS{pgfmodulesorting.code.tex}
|
|
|
|
%
|
|
% This file defines commands for sorting data. This is useful for 3d plots,
|
|
% but also for drawing things in the correct order.
|
|
%
|
|
|
|
|
|
\newcount\pgfsortingbuckets
|
|
|
|
|
|
% Init the sorting
|
|
%
|
|
% #1 = number of buckets
|
|
%
|
|
% Description:
|
|
%
|
|
% This macro inits a sorting. At any time there can be only one active
|
|
% sorting. When you init the sorting, #1 should be a number of
|
|
% buckets. You can then call \pgfsortinginsert to insert code into the
|
|
% buckets. Once you are done, calling \pgfsortingexecute will execute
|
|
% first the code in buckets 0, then the code in bucket 1, and so on to
|
|
% bucket number #1-1.
|
|
%
|
|
\def\pgfsortinginit#1{
|
|
\pgfsortingbuckets#1\relax%
|
|
\c@pgf@counta=0\relax
|
|
\pgfutil@loop
|
|
\ifnum\c@pgf@counta<\c@pgf@countb\relax%
|
|
\expandafter\global\expandafter\let\csname pgf@sort@\the\c@pgf@counta\endcsname\pgfutil@empty%
|
|
\advance\c@pgf@counta by1\relax%
|
|
\pgfutil@repeat
|
|
}%
|
|
|
|
% Insert code into some bucket
|
|
%
|
|
% #1 = the bucket
|
|
% #2 = the code
|
|
%
|
|
\def\pgfsortinginsert#1#2{
|
|
\expandafter\let\expandafter\pgf@temp\csname pgf@lib@sort@#1\endcsname%
|
|
\expandafter\def\expandafter\pgf@temp\expandafter{\pgf@temp#2}%
|
|
\expandafter\global\expandafter\let\csname pgf@lib@sort@\the\c@pgf@counta\endcsname\pgf@temp%
|
|
}%
|
|
|
|
|
|
% After all code has been inserted into the buckets, you can call
|
|
% this method to execute the code in the order of the buckets.
|
|
\def\pgfsortingexecute{
|
|
\c@pgf@countb=\pgfoovalueof{buckets}\relax
|
|
\c@pgf@counta=0\relax
|
|
\pgfutil@loop
|
|
\ifnum\c@pgf@counta<\c@pgf@countb\relax%
|
|
\csname pgf@lib@sort@\the\c@pgf@counta\endcsname%
|
|
\advance\c@pgf@counta by1\relax%
|
|
\pgfutil@repeat
|
|
}%
|
|
|
|
|
|
\endinput
|
|
|