122 lines
2.7 KiB
TeX
122 lines
2.7 KiB
TeX
|
|
% We define 2 IO Registers to communicate from AVR to the Drawing
|
|
% mechanism
|
|
|
|
\usepackage{tikz}
|
|
|
|
% TWAR
|
|
\newcount\avr@draw@argc
|
|
\csdef{avr@io@000010@set}#1{%
|
|
\avr@bin@tocount{#1}{\avr@accA}%
|
|
\avr@log{DRAW CMD: \the\avr@accA}%
|
|
\avr@draw@command{\the\avr@accA}%
|
|
\avr@draw@argc = 0\relax
|
|
}
|
|
|
|
\csdef{avr@io@000011@set}#1{%
|
|
\avr@bin@tocount{#1}{\avr@accA}%
|
|
\avr@debug{AVR DRAW PUSH: \the\avr@accA}%
|
|
\csxdef{avr@draw@stack@\the\avr@draw@argc}{\the\avr@accA}%
|
|
\advance\avr@draw@argc by 1\relax
|
|
}
|
|
|
|
\def\avr@draw@stack#1{\csuse{avr@draw@stack@#1}}
|
|
|
|
|
|
\def\avr@draw@command#1{%
|
|
\ifcsdef{avr@draw@command@#1}{%
|
|
\csuse{avr@draw@command@#1}%
|
|
}{%
|
|
\avr@error{AVR DRAW: Unkown Command #1}%
|
|
}%
|
|
}
|
|
|
|
|
|
\def\avr@draw@canvas{}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Draw Commands
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\csdef{avr@draw@command@0}{} % NOP
|
|
|
|
% Set Draw Color
|
|
\definecolor{avrdraw}{rgb}{255,255,255}
|
|
\csdef{avr@draw@command@1}{%
|
|
\ifnum \avr@draw@argc < 3%
|
|
\avr@debug{DRAW: Set Draw COLOR, Not enough arguments}%
|
|
\fi%
|
|
\edef\@@append{%
|
|
\detokenize{\definecolor{avrdraw}}%
|
|
{rgb}{\avr@draw@stack{0},\avr@draw@stack{1},\avr@draw@stack{2}}%
|
|
}
|
|
\eappto\avr@draw@canvas{\@@append}
|
|
}
|
|
|
|
% Set Fill Color
|
|
\definecolor{avrfill}{rgb}{255,255,255}
|
|
\csdef{avr@draw@command@2}{%
|
|
\ifnum \avr@draw@argc < 3%
|
|
\avr@debug{DRAW: Set Fill COLOR, Not enough arguments}%
|
|
\fi%
|
|
\edef\@@append{%
|
|
\detokenize{\definecolor{avrfill}}%
|
|
{rgb}{\avr@draw@stack{0},\avr@draw@stack{1},\avr@draw@stack{2}}%
|
|
}
|
|
\eappto\avr@draw@canvas{\@@append}
|
|
}
|
|
|
|
\csdef{avr@draw@command@3}{%
|
|
\avr@draw@command{1}% Set Draw Color
|
|
\avr@draw@command{2}% Set Fill Color
|
|
}
|
|
|
|
|
|
|
|
% Rectangle
|
|
\csdef{avr@draw@command@4}{%
|
|
\ifnum \avr@draw@argc < 4%
|
|
\avr@debug{DRAW: Rectangle, Not enough arguments (4 required)}
|
|
\fi%
|
|
\edef\@@append{%
|
|
\detokenize{\node}%
|
|
[minimum height = \avr@draw@stack{2}mm,%
|
|
minimum width = \avr@draw@stack{3}mm,%
|
|
inner sep=0,%
|
|
anchor=north west,
|
|
draw=avrdraw,fill=avrfill]
|
|
at (\avr@draw@stack{0}mm,\avr@draw@stack{1}mm) {};%
|
|
}%
|
|
\eappto\avr@draw@canvas{\@@append}%
|
|
}
|
|
|
|
% Small Rectangle
|
|
\csdef{avr@draw@command@5}{%
|
|
\ifnum \avr@draw@argc < 2%
|
|
\avr@debug{DRAW: Short Rectangle, Not enough arguments (2 required)}
|
|
\fi%
|
|
\edef\@@append{%
|
|
\detokenize{\node}%
|
|
[minimum size = 1mm,%
|
|
inner sep=0,%
|
|
anchor=north west,
|
|
draw=avrdraw,fill=avrfill]
|
|
at (\avr@draw@stack{0}mm,\avr@draw@stack{1}mm) {};%
|
|
}%
|
|
\eappto\avr@draw@canvas{\@@append}%
|
|
}
|
|
|
|
|
|
\newcommand{\avrdrawcanvas}{%
|
|
\begin{tikzpicture}
|
|
\scantokens\expandafter{\avr@draw@canvas}%
|
|
\end{tikzpicture}
|
|
|
|
}
|
|
|
|
|
|
|
|
%%% Local Variables:
|
|
%%% mode: latex
|
|
%%% TeX-master: "avr.tex"
|
|
%%% End:
|