%%
%% This is file `tikz-timing-nicetabs.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% tikz-timing.dtx  (with options: `tikz-timing-nicetabs.sty')
%% 
%% IMPORTANT NOTICE:
%% 
%% For the copyright see the source file.
%% 
%% Any modified versions of this file must be renamed
%% with new filenames distinct from tikz-timing-nicetabs.sty.
%% 
%% For distribution of the original source see the terms
%% for copying and modification in the file tikz-timing.dtx.
%% 
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% Copyright (C) 2009-2012 by Martin Scharrer <martin@scharrer-online.de>
%% ----------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is Martin Scharrer.
%%
%% This work consists of the files tikz-timing.dtx and tikz-timing.ins
%% and the derived filebase tikz-timing*.sty.
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{tikz-timing-nicetabs}[%
    2017/12/20
    v0.7f
    tikz-timing library for nice timing tables]
\RequirePackage{array}
\RequirePackage{booktabs}

\newcommand*\tikztiming@nicetabs@tableheader[1][]{%
  \path [timing/table/midrules] [/utils/exec=\xdef\@gtempa{\the\pgflinewidth}];
  \path [timing/table/header,#1]
    let \p1 = (0,\belowrulesep + \aboverulesep + \@gtempa
            + \arraystretch\ht\strutbox + \arraystretch*\extrarowheight
            + \arraystretch\dp\strutbox)
    in
      coordinate (diagram@header) at (0,\y1)
      coordinate (label@header)   at ($ -1*(\tikztiming@coldist,0) + (0,\y1) $)
    ;
  \tikztiming@normal@tableheader[#1]%
}
\newcommand*\tikztiming@nicetabs@tablerules[1][]{%
  \begin{scope}[#1]
    \coordinate (NW) at (current bounding box.north west);
    \coordinate (SE) at (current bounding box.south east);
    %
    \draw [timing/table/rules]
    let
      \p1 = (NW),
      \p2 = (SE),
      \p3 = (last label.base),
      \p4 = ($ (0,\y3) - (0,\arraystretch\dp\strutbox + \aboverulesep +
        .5\pgflinewidth) $)
    in
      (\x1-\tabcolsep,\y4) -- (\x2+\tabcolsep,\y4)
     \iftikztiming@tablehead
      let
        \p5 = (diagram@header.base),
        \p6 = ($ (0,\y5) + (0,\arraystretch\ht\strutbox + \arraystretch*\extrarowheight
        + \belowrulesep + .5\pgflinewidth) $)
      in
        (\x1-\tabcolsep,\y6) -- (\x2+\tabcolsep,\y6)
     \fi
    ;
    \draw
     \iftikztiming@tablehead [timing/table/midrules] \else [timing/table/rules] \fi
    let
      \p1 = (NW),
      \p2 = (SE),
      \p3 = (0, \arraystretch\ht\strutbox + \arraystretch*\extrarowheight +
        \belowrulesep + .5\pgflinewidth)
    in
      (\x1-\tabcolsep, \y3)
       --
      (\x2+\tabcolsep, \y3)
    ;
  \end{scope}
}
\let\tikztiming@normal@tableheader\tikztiming@tableheader
\let\tikztiming@normal@tablerules\tikztiming@tablerules
\let\tikztiming@normal@coldist\tikztiming@coldist
\let\tikztiming@normal@rowdist\tikztiming@rowdist

\tikzset{%
  timing/no nice tabs/.code={%
    \let\tikztiming@coldist\tikztiming@normal@coldist
    \let\tikztiming@rowdist\tikztiming@normal@rowdist
    \let\tikztiming@tableheader\tikztiming@normal@tableheader
    \let\tikztiming@tablerules\tikztiming@normal@tablerules
  },
  timing/nice tabs/.code={%
    \ifx\tikztiming@tableheader\tikztiming@nicetabs@tableheader\else
      \let\tikztiming@normal@coldist\tikztiming@coldist
      \let\tikztiming@normal@rowdist\tikztiming@rowdist
    \fi
    \def\tikztiming@rowdist{%
       \arraystretch\ht\strutbox
      +\arraystretch*\extrarowheight
      +\arraystretch\dp\strutbox
    }%
    \def\tikztiming@coldist{2\tabcolsep}%
    \let\tikztiming@tableheader\tikztiming@nicetabs@tableheader
    \let\tikztiming@tablerules\tikztiming@nicetabs@tablerules
  },
  timing/nicetabs/no nice tabs/.style={/tikz/timing/no nice tabs},
  timing/nicetabs/off/.style={/tikz/timing/no nice tabs},
  timing/nicetabs/nice tabs/.style={/tikz/timing/nice tabs},
  timing/nicetabs/on/.style={/tikz/timing/nice tabs},
}
\tikzset{timing/nice tabs}%
\RequirePackage{pgfopts}
\ProcessPgfOptions{/tikz/timing/nicetabs}
\endinput
%%
%% End of file `tikz-timing-nicetabs.sty'.
