From 59787354be5ea176e69f6415b4cdd7ec63f911c9 Mon Sep 17 00:00:00 2001
From: Alessandro Rubini <rubini@gnudd.com>
Date: Mon, 6 Feb 2012 21:39:38 +0100
Subject: [PATCH] doc/img: figures by alessandro

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Acked-by: Federico Vaga <federico.vaga@gmail.com>
---
 doc/img/zio-block.png   | Bin 0 -> 2573 bytes
 doc/img/zio-block.ps    | 114 +++++++++++++++++++++++++++++++
 doc/img/zio-control.png | Bin 0 -> 12907 bytes
 doc/img/zio-control.ps  | 147 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 261 insertions(+)
 create mode 100644 doc/img/zio-block.png
 create mode 100644 doc/img/zio-block.ps
 create mode 100644 doc/img/zio-control.png
 create mode 100644 doc/img/zio-control.ps

diff --git a/doc/img/zio-block.png b/doc/img/zio-block.png
new file mode 100644
index 0000000000000000000000000000000000000000..f2b6bd06ec239ec75470d487ca41cbb982bf1e86
GIT binary patch
literal 2573
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
WzR@R#x8rpE9SCy->s#whxczs&J9+*9

literal 0
HcmV?d00001

diff --git a/doc/img/zio-block.ps b/doc/img/zio-block.ps
new file mode 100644
index 0000000..53d157d
--- /dev/null
+++ b/doc/img/zio-block.ps
@@ -0,0 +1,114 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: Alessandro Rubini
+%%Title: crap
+%%BoundingBox: 0 0 200 200
+%%EndComments
+
+0 0 moveto
+
+/minx 0 def
+/miny 0 def
+/maxx 600 def
+/maxy 600 def
+
+3 3 scale
+0 setlinecap 1 setlinejoin
+
+/grid {
+	gsave
+	.8 .8 .8 setrgbcolor
+	.2 setlinewidth
+	% vertical lines
+	minx 10 maxx {
+		dup
+		miny moveto maxy lineto stroke
+	} for
+	% horizontal lines
+	miny 10 maxy {
+		dup
+		minx exch moveto maxx exch lineto stroke
+	} for
+} def
+
+
+/centerstring { % fontname width string -- fontsize
+    gsave
+    3 2 roll findfont setfont          % width string
+    dup 3 1 roll                       % string width string
+    stringwidth pop div dup 3 1 roll   % scale string scale
+    dup neg 0 exch rmoveto             % scale string scale
+    currentfont exch scalefont setfont % scale string
+    show
+    grestore
+} def
+
+/centeratsize { % x y string --
+	gsave
+	3 1 roll moveto 
+	dup stringwidth pop 2 div neg 0 rmoveto show
+	grestore
+} def
+
+
+
+/rect {  %  x y wid hei --
+	4 copy
+	gsave .8 .8 .8 setrgbcolor rectfill grestore
+	/hei exch def
+	/wid exch def
+	moveto
+	wid 0 rlineto 0 hei rlineto
+	wid neg 0 rlineto closepath
+	stroke
+} def
+
+/colrect { % r g b r g b x y wid hei --
+    newpath
+    /rhei exch def
+    /rwid exch def
+    moveto
+    rwid 0 rlineto 0 rhei rlineto
+    rwid neg 0 rlineto closepath
+    gsave setrgbcolor fill grestore
+    setrgbcolor stroke
+} def
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%grid
+
+0 0 0 setrgbcolor
+.5 setlinewidth
+
+/Helvetica-Bold findfont 20 scalefont setfont
+
+%1 1 1 .99 .99 .99  0 0 210 80 colrect 
+/bluforrect {.2 .2 .5    .8 .8 1} def
+/greforrect {.2 .5 .2    .8 1 .8} def
+/redforrect {.5 .2 .2    1 .8 .8} def
+
+/Helvetica-Bold findfont 7 scalefont setfont
+
+% righe di controllo
+.5 setlinewidth 0 0 0 setrgbcolor
+60 140 moveto 10 0 rlineto 20 20 rlineto 10 0 rlineto stroke
+60 130 moveto 80 0 rlineto stroke
+
+% arrowhead
+100 160 moveto -6 1.5 rlineto 0 -3 rlineto closepath fill
+140 130 moveto -6 1.5 rlineto 0 -3 rlineto closepath fill
+
+%block
+redforrect    30 120 30 30 colrect
+	      45 140 (Block) centeratsize
+
+greforrect    100 140 30 30 colrect
+	      115 160 (Control) centeratsize
+	      115 145 (512 b) centeratsize
+
+bluforrect    140 40 30 100 colrect
+	      155 130 (Data) centeratsize
+
+      
+
+
+showpage
diff --git a/doc/img/zio-control.png b/doc/img/zio-control.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce4dc91f7903b86279f959693bd6889ec77107fd
GIT binary patch
literal 12907
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

literal 0
HcmV?d00001

diff --git a/doc/img/zio-control.ps b/doc/img/zio-control.ps
new file mode 100644
index 0000000..957f4aa
--- /dev/null
+++ b/doc/img/zio-control.ps
@@ -0,0 +1,147 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: Alessandro Rubini
+%%Title: crap
+%%BoundingBox: 0 0 600 600
+%%EndComments
+
+2 2 scale
+0 0 moveto
+
+/minx 0 def
+/miny 0 def
+/maxx 300 def
+/maxy 300 def
+
+0 setlinecap 1 setlinejoin
+
+/grid {
+	gsave
+	.8 .8 .8 setrgbcolor
+	.2 setlinewidth
+	% vertical lines
+	minx 10 maxx {
+		dup
+		miny moveto maxy lineto stroke
+	} for
+	% horizontal lines
+	miny 10 maxy {
+		dup
+		minx exch moveto maxx exch lineto stroke
+	} for
+} def
+
+
+/centerstring { % fontname width string -- fontsize
+    gsave
+    3 2 roll findfont setfont          % width string
+    dup 3 1 roll                       % string width string
+    stringwidth pop div dup 3 1 roll   % scale string scale
+    dup neg 0 exch rmoveto             % scale string scale
+    currentfont exch scalefont setfont % scale string
+    show
+    grestore
+} def
+
+/centeratsize { % x y string --
+	gsave
+	3 1 roll moveto 
+	dup stringwidth pop 2 div neg 0 rmoveto show
+	grestore
+} def
+
+
+
+/rect {  %  x y wid hei --
+	4 copy
+	gsave .8 .8 .8 setrgbcolor rectfill grestore
+	/hei exch def
+	/wid exch def
+	moveto
+	wid 0 rlineto 0 hei rlineto
+	wid neg 0 rlineto closepath
+	stroke
+} def
+
+/colrect { % r g b r g b x y wid hei --
+    newpath
+    /rhei exch def
+    /rwid exch def
+    moveto
+    rwid 0 rlineto 0 rhei rlineto
+    rwid neg 0 rlineto closepath
+    gsave setrgbcolor fill grestore
+    setrgbcolor stroke
+} def
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%grid
+
+0 0 0 setrgbcolor
+.5 setlinewidth
+
+/Helvetica-Bold findfont 20 scalefont setfont
+
+%1 1 1 .99 .99 .99  0 0 210 80 colrect 
+/bluforrect {.2 .2 .5    .8 .8 1} def
+/greforrect {.2 .5 .2    .8 1 .8} def
+/redforrect {.5 .2 .2    1 .8 .8} def
+
+
+%block
+greforrect    30 10 240 280 colrect
+
+150 267 (Control Structure) centeratsize
+
+/Courier findfont 5 scalefont setfont
+0 0 0 setrgbcolor 
+/line { %string --
+	gsave show grestore
+	0 -5.85 rmoveto
+} def
+
+43 260 moveto
+
+() line
+(/* byte 0 */) line
+(uint8_t major_version;) line
+(uint8_t minor_version;) line
+(uint8_t more_ctrl;      /* number of further ctrl, for interleaved    */) line
+(uint8_t alarms;         /* set by channel, persistent, write 1 to clr */) line
+() line
+(/* byte 4*/) line
+(uint32_t seq_num;       /* block sequence number                      */) line
+(uint32_t flags;         /* endianness etc, see below                  */) line
+(uint32_t nsamples;      /* number of samples in this data block       */) line
+() line
+(/* byte 16 */) line
+(uint16_t ssize;         /* sample-size for each of them, in bytes     */) line
+(uint16_t sbits;         /* sample-bits: number of valid bits          */) line
+(uint16_t cset_i;        /* index of channel-set within device         */) line
+(uint16_t chan_i;        /* index of channel within cset               */) line
+() line
+(/* byte 24 */) line
+(uint8_t hostid[8];      /* Macaddress or whatever unique              */) line
+() line
+(/* byte 32 */) line
+(struct zio_timestamp tstamp;) line
+() line
+(/* byte 56 */) line
+(uint32_t mem_offset;    /* position in mmap buffer of this block      */) line
+(uint32_t reserved;      /* possibly another offset, or space for 64b  */) line
+() line
+(/* byte 64 */) line
+(/* The control block includes what device the data belongs to         */) line
+(char devname[ZIO_OBJ_NAME_LEN];) line
+() line
+(/* byte 76 */) line
+(/* Each data block is associated with a trigger and its features      */) line
+(char triggername[ZIO_OBJ_NAME_LEN];) line
+() line
+(/* byte 88 */) line
+(struct zio_ctrl_attr attr_channel;) line
+(struct zio_ctrl_attr attr_trigger;) line
+() line
+(/* byte 488 */) line
+(uint8_t __fill_end[ZIO_CONTROL_SIZE - 488];) line
+
+showpage
-- 
GitLab