Files
2018-10-24 18:28:18 +01:00

122 lines
5.1 KiB
Plaintext

\usetikzlibrary{matrix}
\usetikzlibrary{decorations.text}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{shapes.arrows}
\makeatletter
\pgfdeclareradialshading[tikz@ball]{cloud}{\pgfpoint{-0.275cm}{0.4cm}}{%
color(0cm)=(tikz@ball!75!white);
color(0.1cm)=(tikz@ball!85!white);
color(0.2cm)=(tikz@ball!95!white);
color(0.7cm)=(tikz@ball!89!black);
color(1cm)=(tikz@ball!75!black)
}
\tikzoption{cloud color}{\pgfutil@colorlet{tikz@ball}{#1}%
\def\tikz@shading{cloud}\tikz@addmode{\tikz@mode@shadetrue}}
\makeatother
\tikzset{my cloud/.style={
cloud, draw, aspect=2,
cloud color={TikZColorFill}
}
}
% for double arrows a la chef
% adapt line thickness and line width, if needed
\tikzstyle{vecArrow} = [thick, decoration={markings,mark=at position
1 with {\arrow[semithick]{open triangle 60}}},
double distance=1cm, shorten >= 5.5pt,
preaction = {decorate},
postaction = {draw,line width=2cm, white,shorten >= 4.5pt}]
\tikzstyle{innerWhite} = [semithick, white,line width=1.4pt, shorten >= 4.5pt]
\begin{tikzpicture}[
template/.style={centered, text centered, inner sep=1pt, text width=2.3cm},
label/.style={centered, text centered, inner sep=1pt},
block/.style={template, draw, minimum size=1cm, thick},
arrow/.style={template, draw,-latex,thick},
point/.style={template, draw, fill=black, circle,inner sep=1pt},
node distance=1.2cm,
font=\footnotesize,
node distance=1.2cm]
\tikzstyle{coders}=[block, ellipse, font=\small, inner sep=0]
\definecolor{colorAuxiliary}{RGB}{245,238,197}
\definecolor{colorVideo}{RGB}{241,231,163}
\tikzset{
arrowMatrix/.style={
matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={rectangle,text width=1.5cm,align=center},
text depth=1mm,
minimum height=1mm,
nodes in empty cells
}
}
\matrix (arrow) [arrowMatrix] {
|[fill=TikZColorFillProp] | & |[fill=TikZColorFillProp]| & |[fill=TikZColorFillProp]| & |[fill=TikZColorFillProp] (last1)| \\
|[fill=TikZColorFill] | & |[fill=TikZColorFill]| & |[fill=TikZColorFill]| & |[fill=TikZColorFill] (last2)| \\
|[fill=TikZColorFill] | & |[fill=TikZColorFill]| & |[fill=TikZColorFill]| & |[fill=TikZColorFill] (last3)| \\
};
% The labels
\node[text centered, xshift=1cm] at (arrow-1-1) {\scriptsize SEI};
\node[text centered, xshift=1cm, text width=2.2cm] at (arrow-2-1.south) {\footnotesize VCL};
\fill[white] (last1.north) -- (last2.east) -- (last1.north east) -- cycle;
\fill[white] (last3.south) -- (last3.south east) -- (last2.east) -- cycle;
\fill[white] (arrow-1-1.north west) -- ($(arrow-2-1.center)+(-.4,0)$) -- (arrow-3-1.south west) -- cycle;
\coordinate (div0) at (-.8,-1.1);
\coordinate (div1) at ($(div0)+(-20:.2cm)+(-20:.2cm)+(60:2.5cm)$);
\fill[fill=white] ($(div0)+(-20:-.2cm)$) -- ++(60:1.8cm) -- ++(-30:.4cm) -- ($(div1)+(-20:-.2cm)$) -- ++(-30:.4cm) -- ++(60:-1.85cm) -- ++(-30:-.4cm) -- ($(div0)+(-20:.2cm)$);
\path[decoration={markings, mark=at position .5 with \node[transform shape] {\scriptsize Error-prone};}, postaction={decorate}]
( $(div0)$ ) -- ( $(div0)+(60:1.7cm)$ );
\path[decoration={markings, mark=at position .5 with \node[transform shape] {\scriptsize Transmission};}, postaction={decorate}]
($(div1)+(60:-1.8cm)$) -- ($(div1)$);
% Draw the arrow tip
\shade[top color=TikZColorFillProp, bottom color=TikZColorFill,
middle color=TikZColorFill, draw=white, ultra thick]
(last1.north west) -- (last2.center) -- (last3.south west) --
(last3.south) -- (last2.east) -- (last1.north) -- cycle;
\path[decoration={markings, mark=at position .5 with \node[transform shape] {\tiny Video};}, postaction={decorate}]
( $ (last1.north west)!0.5!(last1.north) $ ) -- ( $ (last2.center)!0.5!(last2.east) $ );
\path[decoration={markings, mark=at position .5 with \node[transform shape] {\tiny Stream};}, postaction={decorate}]
( $ (last2.center)!0.5!(last2.east) $ ) -- ( $ (last3.south west)!0.6!(last3.south) $ );
%% Encoding
\node[fill=TikZColorFillProp, coders, minimum height=3.1cm, text width=2.6cm, left=0 of arrow] (SideInformation) {};
\node[fill=TikZColorFillProp, coders, minimum height=2.1cm, text width=2.2cm, yshift=-7] (RobustEncoding) at (SideInformation) {};
\node[fill=TikZColorFill, coders, minimum height=1.1cm, text width=1.5cm, yshift=-13] (Encoding) at (SideInformation) {Encoding};
\path [postaction={decorate,decoration={text along path, text align=center,text={|\small|Robust encoding}}}]
($(RobustEncoding.west)+(.3,0)$) to [bend left=50] ($(RobustEncoding.east)+(-.3,0)$);
\path [postaction={decorate,decoration={text along path, text align=center,text={|\small|Side-information}}}]
($(SideInformation.west)+(.3,.3)$) to [bend left=50] ($(SideInformation.east)+(-.3,.3)$);
%% Decoding
\node[fill=TikZColorFillProp, coders, minimum height=2.1cm, text width=2.2cm, right=.1 of arrow] (RobustDecoding) {};
\node[fill=TikZColorFill, coders, minimum height=1.1cm, text width=1.5cm, yshift=-7] (Decoding) at (RobustDecoding) {Decoding};
\path[postaction={decorate,decoration={text along path,text align=center,text={|\small|Robust Decoding}}}]
($(RobustDecoding.west)+(.3,0)$) to [bend left=50] ($(RobustDecoding.east)+(-.3,0)$);
\end{tikzpicture}