\let\pgf@sh@openrectangle@full\pgf@sh@bg@rectangle
\let\pgf@sh@openrectangle@\pgf@sh@openrectangle@full
\def\pgf@sh@openrectangle@e    {\pgfsetrectcap\pgfpathmoveto{\SE}\pgfpathlineto{\NE}}
\def\pgf@sh@openrectangle@n    {\pgfsetrectcap\pgfpathmoveto{\NW}\pgfpathlineto{\NE}}
\def\pgf@sh@openrectangle@w    {\pgfsetrectcap\pgfpathmoveto{\SW}\pgfpathlineto{\NW}}
\def\pgf@sh@openrectangle@s    {\pgfsetrectcap\pgfpathmoveto{\SW}\pgfpathlineto{\SE}}
\def\pgf@sh@openrectangle@en{\pgfsetrectcap\pgfpathmoveto{\SE}\pgfpathlineto{\NE}\pgfpathlineto{\NW}}
\def\pgf@sh@openrectangle@ew{\pgfsetrectcap\pgfpathmoveto{\NW}\pgfpathlineto{\SW}\pgfpathmoveto{\SE}\pgfpathlineto{\NE}}
\def\pgf@sh@openrectangle@es{\pgfsetrectcap\pgfpathmoveto{\SW}\pgfpathlineto{\SE}\pgfpathlineto{\NE}}
\def\pgf@sh@openrectangle@enw{\pgfsetbuttcap
  \pgfpathmoveto{\pgfpointadd{\SE}{\pgfpointscale{-1}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
  \pgfpathlineto{\NE}\pgfpathlineto{\NW}\pgfpathlineto{\pgfpointadd{\SW}{\pgfpointscale{-1}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}}
\def\pgf@sh@openrectangle@ens{\pgfsetbuttcap
  \pgfpathmoveto{\pgfpointadd{\SW}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}
  \pgfpathlineto{\SE}\pgfpathlineto{\NE}\pgfpathlineto{\pgfpointadd{\NW}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}}
\def\pgf@sh@openrectangle@ews{\pgfsetbuttcap
  \pgfpathmoveto{\pgfpointadd{\NE}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}
  \pgfpathlineto{\SE}\pgfpathlineto{\SW}\pgfpathlineto{\pgfpointadd{\NW}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
\def\pgf@sh@openrectangle@nw{\pgfsetrectcap\pgfpathmoveto{\NE}\pgfpathlineto{\NW}\pgfpathlineto{\SW}}
\def\pgf@sh@openrectangle@ns{\pgfsetrectcap\pgfpathmoveto{\NE}\pgfpathlineto{\NW}\pgfpathmoveto{\SW}\pgfpathlineto{\SE}}
\def\pgf@sh@openrectangle@nws{\pgfsetbuttcap
  \pgfpathmoveto{\pgfpointadd{\NE}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}
  \pgfpathlineto{\NW}\pgfpathlineto{\SW}\pgfpathlineto{\pgfpointadd{\SE}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}
\def\pgf@sh@openrectangle@ws{\pgfsetrectcap\pgfpathmoveto{\NW}\pgfpathlineto{\SW}\pgfpathlineto{\SE}}
\def\pgf@sh@openrectangle@bbg@e{\pgfsetcornersarced{\pgfpointorigin}\pgfpathrectanglecorners{\southwest}{\northeast}}
\let\pgf@sh@openrectangle@bbg@n\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@s\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@w\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@ns\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@ew\pgf@sh@openrectangle@bbg@e
\let\pgf@sh@openrectangle@bbg@full\pgf@sh@openrectangle@full
\let\pgf@sh@openrectangle@bbg@\pgf@sh@openrectangle@
\let\pgf@sh@openrectangle@bbg@enw\pgf@sh@openrectangle@enw
\let\pgf@sh@openrectangle@bbg@ens\pgf@sh@openrectangle@ens
\let\pgf@sh@openrectangle@bbg@ews\pgf@sh@openrectangle@ews
\let\pgf@sh@openrectangle@bbg@nws\pgf@sh@openrectangle@nws
\def\pgf@sh@openrectangle@bbg@en{%
  \pgfpathmoveto{\pgfpointadd{\SE}{\pgfpointscale{-1}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}%
  \pgfpathlineto{\NE}%
  \pgfsetcornersarced{\pgfpointorigin}%
  \pgfpathlineto{\pgfpointadd{\NW}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}%
  \pgfpathlineto{\southwest}}
\def\pgf@sh@openrectangle@bbg@nw{%
  \pgfpathmoveto{\pgfpointadd{\NE}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}%
  \pgfpathlineto{\NW}%
  \pgfsetcornersarced{\pgfpointorigin}%
  \pgfpathlineto{\pgfpointadd{\SW}{\pgfpointscale{-1}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}}%
  \pgfpathlineto{\southwest\pgf@ya\pgf@y\northeast\pgf@y\pgf@ya}}
\def\pgf@sh@openrectangle@bbg@ws{%
  \pgfpathmoveto{\pgfpointadd{\NW}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}%
  \pgfpathlineto{\SW}%
  \pgfsetcornersarced{\pgfpointorigin}%
  \pgfpathlineto{\pgfpointadd{\SE}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}%
  \pgfpathlineto{\northeast}}
\def\pgf@sh@openrectangle@bbg@es{%
  \pgfpathmoveto{\pgfpointadd{\SW}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{+0pt}}}}%
  \pgfpathlineto{\SE}%
  \pgfsetcornersarced{\pgfpointorigin}%
  \pgfpathlineto{\pgfpointadd{\NE}{\pgfpoint{+0pt}{\pgfkeysvalueof{/pgf/outer ysep}}}}%
  \pgfpathlineto{\southwest\pgf@xa\pgf@x\northeast\pgf@x\pgf@xa}}
\pgfset{open rectangle sides/.initial=ns, open rectangle fill/.initial=}
\pgfdeclareshape{open rectangle}{%
  \inheritsavedanchors[from=rectangle]
  \inheritanchorborder[from=rectangle]
  \inheritanchor[from=rectangle]{north}     \inheritanchor[from=rectangle]{south}
  \inheritanchor[from=rectangle]{north west}\inheritanchor[from=rectangle]{south west}
  \inheritanchor[from=rectangle]{north east}\inheritanchor[from=rectangle]{south east}
  \inheritanchor[from=rectangle]{center}
  \inheritanchor[from=rectangle]{west}      \inheritanchor[from=rectangle]{east}
  \inheritanchor[from=rectangle]{base}      \inheritanchor[from=rectangle]{mid}
  \inheritanchor[from=rectangle]{base west} \inheritanchor[from=rectangle]{mid west}
  \inheritanchor[from=rectangle]{base east} \inheritanchor[from=rectangle]{mid east}
  \behindbackgroundpath{%
    \pgfkeysgetvalue{/pgf/open rectangle fill}\pgf@temp
    \ifx\pgf@temp\pgfutil@empty
    \else
      \pgfextract@process\SW{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}%
      \pgf@xa\pgf@x\pgf@ya\pgf@y
      \pgfextract@process\NE{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}%
      \pgf@xb\pgf@x\pgf@yb\pgf@y
      \pgfextract@process\NW{\pgf@x\pgf@xa\pgf@y\pgf@yb}%
      \pgfextract@process\SE{\pgf@x\pgf@xb\pgf@y\pgf@ya}%
      \csname pgf@sh@openrectangle@bbg@\pgfkeysvalueof{/pgf/open rectangle sides}\endcsname
      \pgfsetfillcolor{\pgfkeysvalueof{/pgf/open rectangle fill}}%
      \pgfusepath{fill}
    \fi
  }%
  \backgroundpath{%
    \pgfextract@process\SW{\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}%
    \pgf@xa\pgf@x\pgf@ya\pgf@y
    \pgfextract@process\NE{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}%
    \pgf@xb\pgf@x\pgf@yb\pgf@y
    \pgfextract@process\NW{\pgf@x\pgf@xa\pgf@y\pgf@yb}%
    \pgfextract@process\SE{\pgf@x\pgf@xb\pgf@y\pgf@ya}%
    \csname pgf@sh@openrectangle@\pgfkeysvalueof{/pgf/open rectangle sides}\endcsname}}
\endinput