How can I draw a cake using TikZ?

It is always someone's birthday. I would like to use TikZ to draw a birthday cake. There are all sorts of cakes. What I would like is a cake that looks nice and tasty. Preferably a cake with lots of chocolate and vanilla custard. How can I draw this with TikZ?

\documentclass{article}

\usepackage{tikz}

\usetikzlibrary{shapes}

\newsavebox{\mycandle}% From http://tex.stackexchange.com/a/39211/5701
\savebox{\mycandle}{
\begin{tikzpicture}[scale=.1]
\shade[top color=yellow,bottom color=red] (0,0) .. controls (1,.15)
and (1,.3) .. (0,2.5) .. controls (-1,.3) and (-1,.15) .. (0,0);
\fill[red!70!blue] (.4,0) rectangle (-.4,-5);
\end{tikzpicture} }

\begin{document}

\begin{tikzpicture}[>=stealth, shape aspect=.5]
\node [cylinder,cylinder uses custom fill, cylinder end fill=yellow!6,
cylinder body fill=yellow!12, shape border rotate=90, minimum width=3cm, minimum
height=1.2cm, aspect=2.5, overlay, draw] {};
\foreach \candle in {(-0.32,1.05), (0.32,1.05), (1.2,0.9), (-1.2,0.9), (0.65,0.7), (-0.65,0.7)} \node at \candle {\usebox{\mycandle}};
\end{tikzpicture}

\end{document}


Oh, and apparently someone already made a pink cake but without providing a recipe.

-
I would start calling it as a birthday KX where X as in LaTeX. –  percusse Jan 28 '12 at 16:43
There has been a community blog post about this question, see tex.blogoverflow.com/2012/01/the-cake-is-a-lie. –  N.N. Feb 1 '12 at 9:04

I'm not sure that this will win any prizes for elegance ...

This is the pink cake referred to in the question:

And here's the recipe:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\begin{scope}
\foreach \k in {0,...,60} {
\pgfmathparse{Mod(\k,2) ? "pink" : "purple!50"}
\let\linecol=\pgfmathresult
\draw[line width=1mm,\linecol] (\k mm,2) -- ++(0,-3);
}
\end{scope}
\fill[pink] (-.25,2) .. controls +(0,-.5) and +(-2,0) .. ++(3.25,-1.25) .. controls +(2,0) and +(0,-.5) .. ++(3.25,1.25) -- ++(0,1) .. controls +(0,.5) and +(2,0) .. ++(-3.25,1.25) .. controls +(-2,0) and +(0,.5) .. ++(-3.25,-1.25);
\draw[pink!80!black] (-.25,3) .. controls +(0,-.5) and +(-2,0) .. ++(3.25,-1.25) .. controls +(2,0) and +(0,-.5) .. ++(3.25,1.25)  .. controls +(0,.5) and +(2,0) .. ++(-3.25,1.25) .. controls +(-2,0) and +(0,.5) .. ++(-3.25,-1.25);
\fill[pink!80!black] (.75,3) .. controls +(0,-.25) and +(-2,0) .. ++(2.25,-.75) .. controls +(2,0) and +(0,-.25) .. ++(2.25,.75)  .. controls +(0,.25) and +(2,0) .. ++(-2.25,.75) .. controls +(-2,0) and +(0,.25) .. ++(-2.25,-.75);
\foreach \i in {0,...,5} {
\pgfmathsetmacro{\yshift}{-\i * (5 - \i) * .07cm}
\begin{scope}[xshift=\i * .5cm,yshift = \yshift]
\fill[yellow] (1.5,7.5) ++(5pt,0) .. controls +(0,-1) and +(.5,0) .. ++(0,-2.5) .. controls +(-.5,0) and +(0,-1) .. ++(0,2.5);
\end{scope}
}
\end{tikzpicture}
\end{document}

-
Fantastic code, Andrew! :) –  Paulo Cereda Jan 29 '12 at 9:47
Great recipe! I posted it in the TikZ example gallery. –  Stefan Kottwitz Feb 25 '12 at 23:26

Here's another cake :)

\documentclass{minimal}
\usepackage{tikz}
\begin{document}
{4cm}{rgb(0cm)=(.9,.9,.9); rgb(2cm)=(1,1,1); rgb(4cm)=(.9,.9,.9)}
\tikzpicture[
cake/.style={text=white, draw=white, ultra thick,
outer color=black!5, inner color=white},
decoration={markings,mark=between positions 0 and 1 step 1cm with {\shade[
pattern=crosshatch dots, pattern color=red!80!black, ball color=red,
xscale=-.8, path fading=south] (0,0) circle (.3);}}]

% "artsy" perspective skew
svg "M24,150 l-10,-70 c10,-50 150,-50 160,0 l-10,70 c-10,35 -130,35 -140,0"
node {the cake is a lie};
\shadedraw[cake] (-3.3,-2.8) ellipse (2.7 and 1.25);
\path[postaction={decorate}] (-3.3,-2.5) ellipse (2 and .7);

Oh no, the cake is a lie! :) Awesome code! –  Paulo Cereda Jan 30 '12 at 13:43
@Paulo: thanks :) I just noticed that to make the candle light prettier, one could change its \fill into a \shade. –  morbusg Feb 3 '12 at 11:34