diff options
author | Karl Berry <karl@freefriends.org> | 2014-10-14 22:25:31 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-10-14 22:25:31 +0000 |
commit | 0db489324b44568fc4fdd9d194ce6d17203fae88 (patch) | |
tree | d14c24184a6da8bdbbb2886ac268350ce77fe1e5 /Master/texmf-dist/tex/latex/avremu/avr.draw.tex | |
parent | 0f77752d377a5492ac8d36d73cb08ef7098dee64 (diff) |
avremu (14oct14)
git-svn-id: svn://tug.org/texlive/trunk@35373 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/avremu/avr.draw.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/avremu/avr.draw.tex | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/avremu/avr.draw.tex b/Master/texmf-dist/tex/latex/avremu/avr.draw.tex new file mode 100644 index 00000000000..5a2a7800761 --- /dev/null +++ b/Master/texmf-dist/tex/latex/avremu/avr.draw.tex @@ -0,0 +1,145 @@ +%% Copyright (C) 2014 Christian Dietrich <stettberger@dokucode.de> +%% ------------------------------------------------------- +%% +%% This package may be distributed and/or modified under the conditions +%% of the LaTeX Project Public License, either version 1.3c of this +%% license or (at your option) any later version. The latest version of +%% this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008/05/04 or later. +% +% This library can be used to draw graphics through IO ports +% + +\newcount\avr@draw@x +\newcount\avr@draw@y +\newcount\avr@draw@maxx +\newcount\avr@draw@maxy + +\def\avr@draw@init{% + \avr@draw@maxx = 0% + \avr@draw@maxy = 0% +} + + +% 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}% + }% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Draw Commands +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\csdef{avr@draw@command@0}{} % NOP + +% Set Color +\def\avr@draw@color{0,0,0} +\csdef{avr@draw@command@1}{% + \ifnum \avr@draw@argc < 3% + \avr@debug{DRAW: Set Draw COLOR, Not enough arguments}% + \fi% + \xdef\avr@draw@color{\avr@draw@stack{0},\avr@draw@stack{1},\avr@draw@stack{2}}% +} + +% Small Rectangle +\csdef{avr@draw@command@2}{% + \ifnum \avr@draw@argc < 2% + \avr@debug{DRAW: Dot, Not enough arguments (2 required)}% + \fi% + \edef\@@X{\avr@draw@stack{0}}% + \edef\@@Y{\avr@draw@stack{1}}% + \ifnum \@@X > \avr@draw@maxx% + \avr@draw@maxx=\@@X% + \fi% + \ifnum \@@Y > \avr@draw@maxy% + \avr@draw@maxy=\@@Y% + \fi% + \csxdef{avr@draw@\@@X @\@@Y}{\avr@draw@color}% +} + + +\newcommand{\avrdrawiter}[1]{% + \avr@draw@x=0% + \def\avr@iter@yloop{% + \avr@draw@x=0% + \ifnum \avr@draw@y > \avr@draw@maxy% + \let\avr@iter@yloop=\relax% + \else% + \let\avr@iter@xloop@rec=\avr@iter@xloop% + \avr@iter@xloop\relax% + \advance \avr@draw@y by 1\relax% + \fi% + \avr@iter@yloop% + }% + \def\avr@iter@xloop{% + \ifnum \avr@draw@x > \avr@draw@maxx% + \let\avr@iter@xloop@rec=\relax% + \else% + \ifcsdef{avr@draw@\the\avr@draw@x @\the\avr@draw@y}{% + #1 {\the\avr@draw@x}{\the\avr@draw@y}{\csuse{avr@draw@\the\avr@draw@x @\the\avr@draw@y}}% + }{% Dot not defined + }% + \advance \avr@draw@x by 1\relax% + \fi% + \avr@iter@xloop@rec% + }% + \avr@iter@yloop% +} + +\newcommand{\avrdrawSize}[2]{% + \avr@count@tmpa=\avr@draw@maxx% + \advance \avr@count@tmpa by 1\relax% + \edef#1{\the\avr@count@tmpa}% + \avr@count@tmpa=\avr@draw@maxy% + \advance \avr@count@tmpa by 1\relax% + \edef#2{\the\avr@count@tmpa}% +} + +\newwrite\avr@file% + +\newcommand{\avrdrawppm}[1]{% + % Dump to .ppm file + \immediate\openout\avr@file=#1% + \immediate\write\avr@file{P3}% + \avrdrawSize{\x}{\y}% + \immediate\write\avr@file{\x \space \y \space 255}% + \def\removecomma##1,##2,##3,{##1 ##2 ##3}% + \newcommand{\avr@draw@ppm}[3]{% + \edef\@tempa{##3}% + \edef\@tempa{\expandafter \removecomma \@tempa,}% + \expandafter\immediate\expandafter\write\expandafter\avr@file\expandafter{\@tempa}% + }% + \avrdrawiter{\avr@draw@ppm}% + \immediate\closeout\avr@file% +} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "avr.tex" +%%% End: |