From f9e025ad81da2560378ddade020025fb88163826 Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Fri, 23 May 2008 15:50:00 -0700 Subject: [PATCH] add dia to the supported figure generation tools for the tutorial; clean up --- doc/tutorial/Makefile | 15 ++++++++------- doc/tutorial/dumbbell.png | Bin 8155 -> 0 bytes doc/tutorial/figures/README | 12 ++++++++---- doc/tutorial/figures/dumbbell.dia | Bin 0 -> 1995 bytes doc/tutorial/{ => figures}/oneobj.png | Bin doc/tutorial/figures/pp.dia | Bin 0 -> 1080 bytes doc/tutorial/figures/star.dia | Bin 0 -> 1632 bytes doc/tutorial/{ => figures}/threeobj.png | Bin doc/tutorial/other.texi | 6 +++--- doc/tutorial/pp.png | Bin 2658 -> 0 bytes doc/tutorial/star.png | Bin 7803 -> 0 bytes 11 files changed, 19 insertions(+), 14 deletions(-) delete mode 100644 doc/tutorial/dumbbell.png create mode 100644 doc/tutorial/figures/dumbbell.dia rename doc/tutorial/{ => figures}/oneobj.png (100%) create mode 100644 doc/tutorial/figures/pp.dia create mode 100644 doc/tutorial/figures/star.dia rename doc/tutorial/{ => figures}/threeobj.png (100%) delete mode 100644 doc/tutorial/pp.png delete mode 100644 doc/tutorial/star.png diff --git a/doc/tutorial/Makefile b/doc/tutorial/Makefile index 234ddf558..b229ba74c 100644 --- a/doc/tutorial/Makefile +++ b/doc/tutorial/Makefile @@ -7,15 +7,16 @@ CONVERT = convert CSS = --css-include=tutorial.css SPLIT = --split section +DIA_SOURCES = buffer.dia pp.dia dumbbell.dia star.dia TGIF_SOURCES = packet.obj helpers.obj -DIA_SOURCES = buffer.dia + +DIA_EPS = ${DIA_SOURCES:.dia=.eps} +DIA_PNG = ${DIA_SOURCES:.dia=.png} +DIA_PDF = ${DIA_SOURCES:.dia=.pdf} TGIF_EPS = ${TGIF_SOURCES:.obj=.eps} TGIF_PNG = ${TGIF_SOURCES:.obj=.png} TGIF_PDF = ${TGIF_SOURCES:.obj=.pdf} -DIA_EPS = ${DIA_SOURCES:.dia=.eps} -DIA_PNG = ${DIA_SOURCES:.dia=.png} -DIA_PDF = ${DIA_SOURCES:.dia=.pdf} all: images html split-html pdf @@ -24,12 +25,12 @@ all: images html split-html pdf # buffer may be needed (xorg-x11-server-Xvfb) to provide a "fake" # display images: - cd figures/; $(TGIF) -print -png $(TGIF_SOURCES) - cd figures/; $(TGIF) -print -eps $(TGIF_SOURCES) - cd figures/; $(foreach FILE,$(TGIF_EPS),$(EPSTOPDF) $(FILE);) cd figures/; $(DIA) -t png $(DIA_SOURCES) cd figures/; $(DIA) -t eps $(DIA_SOURCES) cd figures/; $(foreach FILE,$(DIA_EPS),$(EPSTOPDF) $(FILE);) + cd figures/; $(TGIF) -print -png $(TGIF_SOURCES) + cd figures/; $(TGIF) -print -eps $(TGIF_SOURCES) + cd figures/; $(foreach FILE,$(TGIF_EPS),$(EPSTOPDF) $(FILE);) html: images $(TEXI2HTML) ${CSS} tutorial.texi diff --git a/doc/tutorial/dumbbell.png b/doc/tutorial/dumbbell.png deleted file mode 100644 index 0fc3d8c9e040ec281338b50c4ade95b1037a17e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8155 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 diff --git a/doc/tutorial/figures/README b/doc/tutorial/figures/README index 1f7e2f84d..4f63268dc 100644 --- a/doc/tutorial/figures/README +++ b/doc/tutorial/figures/README @@ -1,10 +1,14 @@ Please write image files in a vector graphics format, when possible, and generate the .png and .pdf versions on the fly (see ../Makefile). -Recommended tools are dia, tgif, and xfig. Store the .dia, .obj, or .fig -versions in mercurial, but not the .png or .pdfs. If the figure is -not available in a vector graphics format, store a .png and a .pdf version -here. +Currently supported tools are dia and tgif. xfig could be added similarly +if someone wants to add it. The main requirement for adding another format +is that the tool to edit it is freely available and that a cron script can +autogenerate the pdf and png from the figure source. + +Store the .dia, or .obj versions in mercurial, but not the .png or .pdfs. +If the figure is not available in a vector graphics format, store both +a .png and a .pdf version in this directory. If you add a source (.dia, .obj) file here, remember to add it to the list of figure sources in the Makefile in the directory above diff --git a/doc/tutorial/figures/dumbbell.dia b/doc/tutorial/figures/dumbbell.dia new file mode 100644 index 0000000000000000000000000000000000000000..91af27577a0764acdae22badd8ee8d6a8b691b18 GIT binary patch literal 1995 zcmV;+2Q>H}iwFP!000001MQt#Z`(E$$KUfQ1oveF5?Q1!q}nFMHelOB(G6Jl(w9KC z8C$C?8M55ed)Q~+(Zv_Zl5Z5%X*mf})C$ET-u~xzNRfH_?(00zzKD3~N8$Z|=*B=3 z;W(Q3;q-p+=f|J#_~6~c&D)9Zy@sD@?9DZ}BV4AR?gz6ZS-c(&pP!%gV7>H`DAogi zr7y+sA1?^JAtV|O9&R*kKZA*vc5=V=_R!pR^{Riqn7 zK@@9Wyx@ND>M8pg42x`rrF@R$z3`@D6btWjbJhlYx$ZStFGO6;cD{&~J|s!ji-RN$ z`K15ur72P^AyGJec=dzzDu1Nn!Y;462W>Qx%)NN(hlh5cZi2ibsLm;+P#Lz%U4vPS zZ0h84bE9s}1>Ks9yEW%89~V)a#GaoVnjA$@AiOZQn#3z{y`AOQ3!sY~E0#nlp8O<< zPCWmU7c9>yKz?~U+AbZr)7YOJAGoCy4Y@q~lVtYzRZ(^2xvv%F{>5MVqd?R>y&op6 zWxsAG`)ccC>b<*NvNz>jaZ(iTgGipE__KDW{USmUL%;nAo&}7?+IJtL zXAyrt*pUcuh(Ea>{AQG^tXfDg0BU$pXNzdtvCLbmS_Ov!(v6~Pyg_+xLsDldP6gW*~`jCf@j zS#n0p3SOsomTrI|*&wZESz50#S9bAdj@@ev0YFc~xu|c`UGFDnTB&v57ph9&FCJ%6 z?Eeit$_tJT`3intYzBOJ+8^bOxm{6R7PXjkuCj6d3mKlXItJ%C7! zE?Bah{@A>_(9k8ui>m3m zWk`j-z?N-u0u`jN%^`cE@CIqP2i}16!yEjbR?%G&-DUqluh23DmwFw#g^s7C99h+H zluk(5`%B?`yA;lep>`?U!KHAVi^91moQrxPb5RVJ!f`IDb+};CAqiDV7Z7!(cu_2O zSs7k*K^NB-3-JQ+0`UUzqHjxGX2utY7l;=v;suw+3s)^(@IAbsq&vKD5ibxg5HAof zUI<=L1Mvd!qHVlzW$}WloxPy@vlq0x*$axZ7l;>#7l;=x1}|{-0`a1Cydcu25Ky(7 zfdDD?_=0uE7dG+*@&)n*^2JNx3kUfE`J#2ckUpD$a!EWKGF;nSE*Y+%YtADSkm?#b{ABaTp9hJ_s!D-=~ zAf?){{W}@7hkqx-LTzYS8}JWhbf*ohg+o3}r4tBSZLoBk^-LRV)P|OW3gm|Fw1Ky< zL0_ph*jsI2{o@7)wV`Eguu&U2(+0PN&9$cD&9&)kFoi&vhVJxA9T=)Z%j&>U9WGag d{Bz)~Mf`A+e}JE9?9Cr;{sn>|U*+eJ000iE*vbF^ literal 0 HcmV?d00001 diff --git a/doc/tutorial/oneobj.png b/doc/tutorial/figures/oneobj.png similarity index 100% rename from doc/tutorial/oneobj.png rename to doc/tutorial/figures/oneobj.png diff --git a/doc/tutorial/figures/pp.dia b/doc/tutorial/figures/pp.dia new file mode 100644 index 0000000000000000000000000000000000000000..2c81980a5fa5123d62b1ea5e9a488475f81ddb47 GIT binary patch literal 1080 zcmV-81jqXyiwFP!000001MOK|kLorMecxXZWnWr}4RJn5a_@z!wo==N>b6q1&&Wwk zaM!VsW0s{4{p~eL_CmgZBxKcX!)g&&lR2L8_{GMlWlxM^f%;;PNnyxB{1}wxh znyY_2{`lakpBHzZLJU91|A@m_kx$U%@NKTHh1h(UPItSVM)nC5jB5mMwFFK7hJ?VW zG@7c5J4HEl5JCYDYxyb^f@6OxkV0XM=Bf{ar--vH4b{vlw+k3yTzQ6MuHLWGmpaYe zObdR__};(>`5eKgX4krWd0rRS8^p_Q;|)u&G!gqv#iYT{;r+xWw@RcDjTZOcS@+qN z@`ae-yWhZ z4pDNU%!)P*p4Pe9^itN#cGo5*TPii{6oSA#;<@|pk8N7X4>)I>lPoa*PZWqeye~-X z7=Kb8l%EhqT-NOmaxW5;E8je_9pc}rMs= zf+~SDx%U0CXD;J`G$QDg*gX$;U}9?C?4zxLnPXTJS95`G&bq-Og5qVsIIT*BTSS$* zPuZjz*|A#z+i^Y1F=wu20NplwV6733)}k5A)EwjVZ`LtyvR9!?f$191i!aav>_7|K z$|04tq^@^^SYbl0fG8^Ab`Z&$?Upri`?8j3ovTFb2`U31x{dRLsjyjXUuy#^(2Gzn zbdHiuQ<_q#U9c;u@&-+Qrja!rI-{Zv=&-J=V2sIL?g!FDRnm;6JefWEGa}DO-~gVc zvi%M!*R}QASs|D8l(C%Jyt)s z5~a3*w`3K9H_J8S_%B&eket2pCHdVNM)vYUJ@yC57Bel;BrblJT{(n2lmEJTX_KO;aeG~E?S?Y}^A`T!Jn4J~w< zIgGwc0gOS14gk`rBO5w^l};URF?4hfYn(d9sbicv#;N0-O&!2Y$BuF87^jY|Q-^s2 zEivTS0gTtVLkfv^H+X~f`eXUxuJCL6;_e@|hG@ZYCjbCg5fk75 literal 0 HcmV?d00001 diff --git a/doc/tutorial/figures/star.dia b/doc/tutorial/figures/star.dia new file mode 100644 index 0000000000000000000000000000000000000000..6b826b3138831e484cec18f0053e94f75712e64b GIT binary patch literal 1632 zcmV-m2A}yKiwFP!000001MOYibE7s8f6rgRke7DGhmrWy<&vAWGi@I_*N3Lh9@!{1 z4F(U$@%bM5w^w{PHW=a<5EnP=Ou`t;yGSej^wVlr`SkhgGEkmaocK|At0GNT6&B7S z&kyIf>fiUjesI;#cUPZ0pMDg-^O!Cb@r^J^-`%PU&Q~AD1!3DAodhttD*y zFAV}Z7KO&@-Ibyo3h*eW>Am7EFBu$`cK4 z)$51srH%_Rv5MMxXbD;8J9E>}_Fiz0lxIx5m2C;fX+rYMz& zLgD=G`X}=`f288ZURK?MHY(vu8qfXkSdVC%Aa4k)xfo;77#4Af?wAhRwaNMFro*ZW zhE*32tIkg*t0?9%_4%>NX%q#FhPhTAuUUIN$&3b~i@j8>4z+mjIgd^}{{sz@*Hj?C z{XE*v9l7(^_g)^jr4kKNHonIfldqDRE0?~NB>l-x{As}Ip5706Z{oN8h_6~FL+}09 zJNAZLTI2NKxy)kL`P0LE?RzXa(ap+b8YC@>V&hY-UM=_9hRJVLChJT^K({O|#Q(gX zrj^3L1>zjELNxt{&3IA0FN|-Z_)+ zk6g_~x?#6d%L2BX%%V6v<_f)3E0dq$$#K>8^A)ljmza)WyCz1uWpvQBVE%l;o0S=w zgAae~mJKInD|V`4x`y=f3w2PI0>k>qN>w(g>+MuL_(AXr6=g1bo{D4vKGydGXLuDEO=tvpV7mnJpT!fhHLFGax25g?54Dg;kAHgXu5zT zfvtvP9b#)6b>&I^m1DP!B0-_&;gZ$cbl>~YE49>4;b)>s;IAf&DE7aJ9z}x}hkS*A zpRGpB=4pTIt|Y&ivxz2p@t2sEJsNw0U)-mo`j|_g&RoJ8AxkEi5b{k8JC1dO9L>f! z)u&me_4WbqOXM*{e`hd=q=R0$!~GwiPL}|6{lEk63J(~KY>DU~#9KKyU?T?y`+~3m z12*)F4dvbj(9j+lS~(_+KFEYFlT4VoXM$v&2`BeVh?_3bO{t!V_VohS1h^)^H36=P zOLI-wxobjztKnECxF*0gaqil~?7a36vo4mo_z?0@vHIA#Ch!F-6i;N5)h;@T3P0zqVZ;1`FC=4eo^s>i4qf#{m^wzZ&onp4C z>aL4ckZ5(gv(?GSmAS&SHG+vTa?%SXH;4!xq&s5ymtAFBzf`%J&z;um(6?ZGr?c@5 zxyHv8<6DCo-#B4>>oSbrKnLBf#wSue(PZa{7Kndwj%WjzV82X|fFF9OEh^F#7bMd_ zQzHTvo>z)up?F!VL=&)~Uu=Ly;&UAf`2&O!Jr)`tt9bs>Bf_NZWw3ihbp z%N`Yh@LAZS>YZP74ykqJ2EpX?0u@0p`d~pYF2uk9zW{y#{Nlavi=19q5Ca4JqECK- zdr1F9&H(wp>0anQ0T?6sVYcln1{4D*22c#37#ErWEWi~g22hN?D2CC)7KvPn;T%$o z-6qKp6vG9I0Tcr$22hOmwo3vO11Lt16r+1~50<-4g3&>)Fg6FLwKfMEc` zxG;u+4agM+hSBX9Gpl=c2qIF`Ly-HNA7VLarYO0fAaDzU!23=RIqYr_1TGaE>>f@r zlZp&>t?VgJslqv-%JC69YUH*@>zW_p?g zGF>aTKe1)o-#KOfVr$_0bb{yUEDS}f3Cku&lxO#evJibCB@0MZc$DvOEBlX2lhbbg esYtDMx%_?h-#_lIO8*|@?&?3wLpMr7YybdF=^h6F literal 0 HcmV?d00001 diff --git a/doc/tutorial/threeobj.png b/doc/tutorial/figures/threeobj.png similarity index 100% rename from doc/tutorial/threeobj.png rename to doc/tutorial/figures/threeobj.png diff --git a/doc/tutorial/other.texi b/doc/tutorial/other.texi index efa83a083..3e4a63a7b 100644 --- a/doc/tutorial/other.texi +++ b/doc/tutorial/other.texi @@ -34,7 +34,7 @@ see this point-to-point network, you can think of an RS-422 (or RS-232 for you old-timers) cable. This topology is shown below. @sp 1 -@center @image{pp,,,,png} +@center @image{figures/pp,,,,png} @cindex CreateObject @cindex InternetNode @@ -173,7 +173,7 @@ a file for you in the @code{tutorial} directory called @code{tutorial-star.cc} that implements a simple star network as seen below. @sp 1 -@center @image{star,,,,png} +@center @image{figures/star,,,,png} In order to create a star network, we need to be able to instantiate some number (greater than one) of net devices on a node. In the name of simplicity @@ -506,7 +506,7 @@ configured with a lower bandwidth than the bus elements to provide a The following is a representation of the topology. @sp 1 -@center @image{dumbbell,,,,png} +@center @image{figures/dumbbell,,,,png} We have provided a file that constructs this dumbbell network and creates enough data flowing across the choke point that some packets will be dropped. diff --git a/doc/tutorial/pp.png b/doc/tutorial/pp.png deleted file mode 100644 index 84b76d6df2163bcc264f6728f4ebd87244493bb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2658 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