% Copyright (C) 2020-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
%
%% This LaTeX source is free software: you can redistribute it and/or
%% modify it under the terms of the GNU General Public License as published
%% by the Free Software Foundation, either version 3 of the License, or (at
%% your option) any later version.
%
%% This LaTeX source is distributed in the hope that it will be useful, but
%% WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%% General Public License for more details.
%
%% You should have received a copy of the GNU General Public License along
%% with this LaTeX source.  If not, see <https://www.gnu.org/licenses/>.





%% Basic definitions to facilitate the plot code.
\newcommand{\branchcommit}[4]{
  \draw [fill=#1, opacity=0.8] (#2,#3) circle [x radius=5.5mm, y radius=2.1mm];
  \draw [anchor=center] (#2,#3) node {\textcolor{white}{\scriptsize\texttt{#4}}};
}
\definecolor{maneagebranchcolor}{HTML}{46211A}
\definecolor{projectbranchcolor}{HTML}{9A3324}
\definecolor{derivedbranchcolor}{HTML}{C28556}









\begin{tikzpicture}

  %% Just for a reference (so the image size always remains fixed). It also
  %% helps in defining easy coordinates for all the other elements.
  \draw [white] (0,0) -- (0,8cm);
  \draw [white] (0,0) -- (\linewidth,0);

  %% Collaboration icon, which should be under the commit ellipses.
  \node[inner sep=0pt] at (3.885cm,5.51cm)
       {\includegraphics[width=6.6mm]{tex/img/icon-collaboration.eps}};

  %% Maneage branch line.
  \draw [black!40!white, dashed, line width=2mm] (1.5cm,0) -- (1.5cm,0.6cm);
  \draw [->, black!40!white, line width=2mm] (1.5cm,0.6cm) -- (1.5cm,7.9cm);
  \draw [anchor=north, black!40!white] (1.5cm,0.1cm) node [scale=1.5]
        {\bf Maneage};

  %% Project branch line.
  \draw [->, black!40!white, rounded corners, line width=2mm]
        (1.5cm,2cm) -- (3cm,2.5cm) -- (3cm,7.9cm);
  \draw [black!40!white, line width=2mm] (1.5cm,5cm) -- (3cm,5.5cm);
  \draw [anchor=north, black!40!white] (3cm,2.3cm) node [scale=1.5]
        {\bf Project};

  %% Derivative project
  \draw [black!40!white, rounded corners, line width=2mm]
        (3cm,4.5cm) -- (4.5cm,5cm) -- (4.5cm,6cm) -- (3cm,6.5cm);

  %% Maneage commits.
  \branchcommit{maneagebranchcolor}{1.5cm}{1cm}{1d72e26}
  \branchcommit{maneagebranchcolor}{1.5cm}{2cm}{0c120cb}
  \branchcommit{maneagebranchcolor}{1.5cm}{3cm}{5781173}
  \branchcommit{maneagebranchcolor}{1.5cm}{4cm}{0774aac}
  \branchcommit{maneagebranchcolor}{1.5cm}{5cm}{3c05235}
  \branchcommit{maneagebranchcolor}{1.5cm}{6cm}{6ec4881}
  \branchcommit{maneagebranchcolor}{1.5cm}{7cm}{852d996}

  %% Project commits.
  \branchcommit{projectbranchcolor}{3cm}{2.5cm}{4483a81}
  \branchcommit{projectbranchcolor}{3cm}{3.5cm}{5e830f5}
  \branchcommit{projectbranchcolor}{3cm}{4.5cm}{01dd812}
  \branchcommit{projectbranchcolor}{3cm}{5.5cm}{2ed0c82}
  \branchcommit{projectbranchcolor}{3cm}{6.5cm}{f62596e}

  %% Derivate project commits.
  \branchcommit{projectbranchcolor}{4.5cm}{5cm}{f69e1f4}
  \branchcommit{projectbranchcolor}{4.5cm}{6cm}{716b56b}

  %% Paper being processed icon. The white rectangle over it is to blend it
  %% into the background.
  \node[anchor=south,inner sep=0pt] at (4.2cm,6.5cm)
       {\includegraphics[width=1cm]{tex/img/icon-processing.eps}};
%  \draw[white, fill=white, opacity=0.7] (3.42cm,6.7) rectangle (5cm,7.8cm);

  %% Description of this scenario:
  \draw [rounded corners, fill=black!10!white] (3.1cm,0) rectangle (7.5cm,1.25cm);
  \draw [anchor=west, black] (3.1cm,1.0cm) node {\textbf{(a)} pre-publication:};
  \draw [anchor=west, black] (3.3cm,0.6cm) node {\footnotesize Collaborating on a project while};
  \draw [anchor=west, black] (3.3cm,0.2cm) node {\footnotesize working in parallel, then merging.};










  %% Maneage branch line.
  \draw [black!40!white, dashed, line width=2mm] (9.5cm,0) -- (9.5cm,0.6cm);
  \draw [black!40!white, line width=2mm] (9.5cm,0.6cm) -- (9.5cm,2.5cm);
  \draw [black!40!white, line width=2mm, dashed] (9.5cm,2.5cm) -- (9.5cm,3.5cm);
  \draw [->,black!40!white, line width=2mm] (9.5cm,3.5cm) -- (9.5cm,7.9cm);
  \draw [anchor=north, black!40!white] (9.5cm,0.1cm) node [scale=1.5]
        {\bf Maneage};

  %% Project branch line.
  \draw [black!40!white, rounded corners, line width=2mm]
        (9.5cm,2cm) -- (11cm,2.5cm) -- (11cm,3cm);
  \draw [black!40!white, line width=2mm, dashed] (11cm,3cm) -- (11cm,4cm);
  \draw [black!40!white, line width=2mm, dashed] (9.5cm,3cm) -- (11cm,3.5cm);
  \draw [black!40!white, line width=2mm] (11cm,4cm) -- (11cm,4.9cm);
  \draw [anchor=north, black!40!white] (11cm,2.3cm) node [scale=1.5]
        {\bf Project};

  %% Derivative project
  \draw [->, black!40!white, rounded corners, line width=2mm]
        (11cm,4.5cm) -- (12.5cm,5cm) -- (12.5cm,7.9cm);
  \draw [black!40!white, line width=2mm] (9.5cm,6cm) -- (12.5cm,7cm);
  \draw [anchor=north, black!40!white] (12.6cm,4.8cm) node [scale=1.5]
        {\bf Derived};
  \draw [anchor=north, black!40!white] (12.6cm,4.4cm) node [scale=1.5]
        {\bf project};

  %% Maneage commits.
  \branchcommit{maneagebranchcolor}{9.5cm}{1cm}{1d72e26}
  \branchcommit{maneagebranchcolor}{9.5cm}{2cm}{0c120cb}
  \branchcommit{maneagebranchcolor}{9.5cm}{4cm}{b47b2a3}
  \branchcommit{maneagebranchcolor}{9.5cm}{5cm}{340a7ec}
  \branchcommit{maneagebranchcolor}{9.5cm}{6cm}{a92b25a}
  \branchcommit{maneagebranchcolor}{9.5cm}{7cm}{6e1e3ff}

  %% Project commits.
  \branchcommit{projectbranchcolor}{11cm}{2.5cm}{4483a81}
  \branchcommit{projectbranchcolor}{11cm}{4.5cm}{\projectversion}
  \node[anchor=south, inner sep=0pt, color=white] at (11cm,4.8cm)
       {\includegraphics[width=1cm]{tex/img/icon-complete.eps}};

  %% Derivate project commits.
  \branchcommit{derivedbranchcolor}{12.5cm}{5cm}{b177c7e}
  \branchcommit{derivedbranchcolor}{12.5cm}{6cm}{5ae1fdc}
  \branchcommit{derivedbranchcolor}{12.5cm}{7cm}{bcf4512}

  %% Description of this scenario:
  \draw [rounded corners, fill=black!10!white] (11.1cm,0) rectangle (15.3cm,1.25cm);
  \draw [anchor=west, black] (11.1cm,1.0cm) node {\textbf{(b)} post-publication:};
  \draw [anchor=west, black] (11.3cm,0.6cm) node {\footnotesize Other researchers building upon};
  \draw [anchor=west, black] (11.3cm,0.2cm) node {\footnotesize previously published work.};
\end{tikzpicture}
