%!PS % A Universal .BMP Image Manipulator #56 % ===================================== % by Don Lancaster /ggnum 56 store % Copyright c 2005 by Don Lancaster & Synergetics, Box 809, Thatcher, AZ, 85552 % (928) 428-4073 Email: don@tinaja.com Website: http://www.tinaja.com % Consulting services available http://www.tinaja.com/info01.html % Linking welcome. Reposting expressly forbidden. % All commercial rights and all electronic media rights ~fully~ reserved. % Linking usually welcome. Reposting expressly forbidden. Version 1.1 % IMPORTANT NOTE: Don Lancaster's file gonzo.ps is required for this program. % After obvious location mods, uncomment ONE of the following two lines: (C:\\Documents and Settings\\don\\Desktop\\gonzo\\gonzo.ps) run % use internal gonzo % (A:\\gonzo.ps) run % use external gonzo % NOTE THAT ALL PS FILENAME STRINGS !!!DEMAND!!! DOUBLE REVERSE SLASHES. % GONZO20A Guru Gonzo PostScript power tools (Interim release) % Includes gonzo justification and layout utilities. % Copyright c 1990, 1996, 2001 by Don Lancaster and Synergetics, Box 809, % Thatcher Arizona, 5552 (928) 428-4073 don@tinaja.com support % via http://www.tinaja.com All commercial rights and all electronic % media rights **FULLY** reserved. Reposting is expressly forbidden. %%%%%%%%%%% links menu directory %%%%%%%%%%%% % This code locks pdfmark commands out of a PostScript printer. /pdfmark where {pop}{userdict /pdfmark /cleartomark load put} ifelse % /surl "start url" marks the beginning of a text sequence to be urled. % It also paints the text blue... /surl {mark /blue cvx 0.33 /setgray cvx % change text to blue /currentpoint cvx % remember box start /urly /exch cvx /store cvx /urlx /exch cvx /store cvx ] cvx % complete deferred command printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def % /eurl "end url" unmarks the end of a text sequence and sets up % the pdfmark needed to define the Acrobat web link. /eurl {mark % start deferred proc exch % position url string % /black cvx 0 /setgray cvx % turn blue marker off % maintextcolor /setrgbcolor cvx % reset to main text color??? /aqua cvx /black cvx /makeurl cvx % defer call of url builder ] cvx % complete deferred proc printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } def % /makeurl generates the pdfmark, receiving a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /urlover 0.2 def % fraction of hot area over bounds /makeurl { /cururlname exch store % save the url string mark % start pdfmark currentfont /ScaleMatrix get 3 get /fsize exch store % guess height /Rect [ urlx fsize urlover mul sub % set box left x urly fsize urlover mul sub % set box left y currentpoint exch fsize urlover mul add exch fsize add ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def % /makeurlx generates the box specific pdfmark, receiving % a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /makeurlx { /cururlnamex exch store % save the url string mark % start pdfmark /Rect [ xpos % set box left x ypos 0.9 sub % set box left y xpos 2.8 add % box right x ypos 0.9 sub 2.8 add % box right y ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def /maintextcolor {0 0 0 } def % text link specific data -- use dictionary instead below { /cubic01 {(http://www.tinaja.com/cubic01.asp) eurl} def /hack62 {(http://www.tinaja.com/glib/hack62.pdf) eurl} def /increment {(http://www.tinaja.com/text/bezgen3.html) eurl} def /interpolate {(http://members.bellatlantic.net/~vze2vrva/design.html) eurl } def /bezmath {(http://www.tinaja.com/text/bezmath.html) eurl } def /table {(http://www.tinaja.com/psutils/imtable.psl) eurl } def } pop % dictionary method << % zzzzzzzzzzzzzzzzzz /imxytab.psl (http://www.tinaja.com/psutils/imxytab.psl) /nonlingr.pdf (http://www.tinaja.com/glib/nonlingr.pdf) /unibmm01.psl (http://www.tinaja.com/psutils/unibm01.psl) /webimage.pdf (http://www.tinaja.com/glib/webimage.pdf) /keycor01.pdf (http://www.tinaja.com/glib/keycor01.pdf) /nubkg01.psl (http://www.tinaja.com/psutils/nubkg01.psl) /basis.pdf (http://www.tinaja.com/glib/basis.pdf) /fixtlt01.psl (http://www.tinaja.com/psutils/fixtlt01.psl) /swingt01.psl (http://www.tinaja.com/psutils/swingt01.psl) /perspec1.pdf (http://www.tinaja.com/glib/perspec1.pdf) /starwars.psl (http://www.tinaja.com/psutils/starwars.psl) /video901.jpg (http://www.tinaja.com/images/bargs/finalc9.jpg) /video901.bmp (http://www.tinaja.com/images/bargs/finalc9.bmp) /autobmf1.psl (http://www.tinaja.com/psutils/autobmf1.psl) /bmfauto1.pdf (http://www.tinaja.com/glib/bmfauto1.pdf) /autobm1.psl (http://www.tinaja.com/psutils/autobmf1.psl) /bmdemo1.bmp (http://www.tinaja.com/psutils/bmdemo1.bmp) /adobeifilter (http://www.adobe.com/support/downloads/product.jsp?product=1&platform=Windows) /myriadfont (http://store.adobe.com/type/browser/P/P_1706.html) /stonefont (http://store.adobe.com/type/browser/F/STAQ/F_STAQ-11705000.html) /cleartype (http://grc.com/cleartype.htm) /adobeacrobat (http://www.adobe.com/products/acrobat/main.html) /acroread (http://www.adobe.com/products/acrobat/readstep2.html) /dutchdare (http://www.darenet.nl/page/language.view/home) /sedn (news:///sci.electronics.design) /sern (news:///sci.electronics.repair) /mcmaster (http://www.mcmaster.com/ ) /smallparts (http://www.smallparts.com/ ) /grainger (http://www.grainger.com/Grainger/ ) /mouser (http://www.mouser.com/ ) /digikey (http://www.digikey.com/ ) /allied (http://www.alliedelec.com/ ) /newark (http://www.newark.com/) /thomasreg (http://www.thomasregister.com/) /whtnu05 (http://www.tinaja.com/whtnu05.asp) /refurblg.pdf (http://www.tinaja.com/glib/refurblg.pdf) /refurb.pdf (http://www.tinaja.com/glib/refurb.pdf) /advetorl.pdf (http://www.tinaja.com/glib/advetorl.pdf) /sotofamilia (http://cgi6.ebay.com/ws/eBayISAPI.dll?MfcISAPICommand=ViewListedItems&userid=sotofamilia&include=0&since=7&sort=3&rows=100) /marcia.pdf (http://www.tinaja.com/glib/marcia.pdf) /auctscne.pdf (http://www.tinaja.com/glib/auctscne.pdf) /ebaysell.pdf (http://www.tinaja.com/glib/ebaysell.pdf) /ebayspoof (mailto:spoof@ebay.com) /auct01links (http://www.tinaja.com/auct01.asp#links) /enhebay2.pdf (http://www.tinaja.com/glib/enhebay2.pdf) /enhebay1.pdf (http://www.tinaja.com/glib/enhebay1.pdf) /pdfflash.pdf(http://www.tinaja.com/glib/pdfflash.pdf) /adobejava (http://partners.adobe.com/public/developer/pdf/topic_js.html) /p3anim01.pdf (http://www.tinaja.com/glib/p3anim01.pdf) /xpdf (http://www.foolabs.com/xpdf/) /heapsort.pdf (http://www.tinaja.com/glib/heapsort.pdf) /strconv.pdf (http://www.tinaja.com/glib/strconv.pdf) /pdfrefman (http://partners.adobe.com/public/developer/pdf/index_reference.html) /uncompresspdf.api (http://www.tinaja.com/plugins/uncompressPDF.api) /adobeebooks (http://www.adobe.com/epaper/ebooks/main.html) /viewpdf1.psl (http://www.tinaja.com/psutils/viewpdf1.psl) /adobeacrobatsdk (http://partners.adobe.com/public/developer/acrobat/sdk/index_doc.html) /adobejavascriptguide (http://partners.adobe.com/public/developer/acrobat/sdk/index_doc.html#js) /wordfreq.pdf (http://www.tinaja.com/glib/wordfreq.pdf) /azauct01.pdf (http://www.tinaja.com/glib/azauct01.pdf) /startsdk.pdf (http://www.tinaja.com/glib/startsdk.pdf) /flatevue.pdf (http://www.tinaja.com/glib/flatvue.pdf) /wordfrq1.psl (http://www.tinaja.com/psutils/wordfrq1.psl) /otherwf (http://www.mytranslate.com/wordfrequency.htm) /homonyms (http://www.cooper.com/alan/homonym_list.html) /wrightauct (http://www.wrightbrosauctioneers.com/) /a1auct (http://www.a1auctionz.com/) /auctbroke (http://www.auctionbrokers.us/) /ronbrunk (http://www.brunksauction.com/) /americawest (http://www.yellowpages-ads.com/01231827) /azauctioneers (http://www.arizonaauctioneers.com/) /dickerson (http://www.cfdauction.com/) /wsmauct (http://www.westernsalesmanagement.com/) /asustore (http://property.asu.edu/) /uaauct (http://pacs.web.arizona.edu/pacs_home.html) /schoolauct (http://web.archive.org/web/20040229230404/http://www.dist.maricopa.edu/surplus/other.html) /haynieauct (http://www.chuckhaynieauctions.com/pages/1/index.htm) /crawfordauct (http://www.tumbleweedauction.com/) /mangold (http://www.azauctioneers.org/members/8402_OCMangold.asp) /tingle (http://brucetingleauctioneering.com/) /countass (http://www.soldyourway.com/) /southwestliq (http://www.swliquidators.com/) /maricopacoll (http://www.dist.maricopa.edu/surplus/) /sierraauct (http://www.sierraauction.com/) /cunninghamauct (http://www.auctionaz.com/) /auctappr (http://www.auctionandappraise.com/) /azauctionassn (http://www.azauctioneers.org/home.asp) /natauctionassn (http://www.auctioneers.org/) /azclassifieds (http://www.arizclassified.com/classifieds/index.inn) /azrepublic (http://www.azcentral.com/class/merch/) /tudailystar (http://classified.tucson.com/index.php?site_name=citizen) /enhebay1.pdf (http://www.tinaja.com/glib/enhebay1.pdf) /busonly.psl (http://www.tinaja.com/psutils/busonly.psl) /rebound1.psl (http://www.tinaja.com/glib/rebound1.pdf) /rebound1.pdf (http://www.tinaja.com/glib/rebound1.psl) /funfield.pdf (http://www.tinaja.com/glib/funfield.pdf) /psar2img.pdf (http://www.tinaja.com/glib/psar2img.pdf) /dovebid (http://www.dovebid.com) /michaelfox (http://www.michaelfox.com) /mjauctions (http://www.mjauctions.com) /ucc (http://www.law.cornell.edu/ucc/) /arizlaw (http://www.azleg.state.az.us/ArizonaRevisedStatutes.asp) /vickrey (http://www.vanderbilt.edu/econ/reiley/papers/VickreyHistory.pdf) /whtnu04 (http://www.tinaja.com/whtnu04.asp) /logrpt01.psl (http://www.tinaja.com/psutils/logrpt01.psl) /nutilt01.psl (http://www.tinaja.com/psutils/nutilt01.psl) /nubkg01.psl (http://www.tinaja.com/psutils/nubkg01.psl) /dodbur01.psl (http://www.tinaja.com/psutils/dodbur01.psl) /ebayphen.pdf (http://www.tinaja.com/glib/ebayphen.pdf) /gallery.pdf (http://www.tinaja.com/glib/gallery.pdf) /histolog (http://www.tinaja.com/glib/histolog.pdf) /bmfonts (http://www.tinaja.com/glib/bmfonts.pdf) /dodbur (http://www.tinaja.com/glib/dodgebur.pdf) /ebayphoto (http://www.tinaja.com/glib/ebayfoto.pdf) /auctscne (http://www.tinaja.com/glib/auctscne.pdf) /stepprep (http://www.tinaja.com/glib/stepprep.pdf) /phonenums (http://www.switchboard.com/bin/cgiqa.dll?MG=) /reversephone (http://www.reversephonedirectory.com/) /scholar (http://www.scholar.google.com/) /shieldsup (https://grc.com/x/ne.dll?bh0bkyd2) /sotofamilia (http://cgi6.ebay.com/ws/eBayISAPI.dll?MfcISAPICommand=ViewListedItems&userid=sotofamilia&include=0&since=7&sort=3&rows=100) /topozone (http://www.topozone.com/) /thomasreg (http://www.thomasregister.com/) /uhaul (http://www.uhaul.com/) /ups (http://www.ups.com/) /usps (http://www.usps.com/) /vrane (http://www.vrane.com) /wayback (http://web.archive.org/) /whois (http://www.networksolutions.com/cgi-bin/whois/whois) /grainger (http://www.grainger.com/) /zipcodes (http://www.usps.com/ncsc/lookups/lookup_zip+4.html) /mcmaster (http://www.mcmaster.com/) /mscsupply (http://www.mscdirect.com/) /natauctioneers (http://www.auctioneers.org/) /newspapers (http://www.usnpl.com/) /norfolk (http://www.norfolkandwaay.com) /quickphrase (http://www.typingmaster.com/index.asp?go=quickphrase) /myebays (http://www.tinaja.com/glib/myebays.pdf) /moreebay (http://www.tinaja.com/glib/moreebay.pdf) /mapsonus (http://www6.mapsonus.com/) /aafont01 (http://www.tinaja.com/aafont01.asp) /froogle (http://www.froogle.com) /govliquidation (http://www.govliquidation.com) /intershipper (http://www.intershipper.com) /kelly (http://www.kbb.com) /paypal (https://www.paypal.com/refer/pal=don%40tinaja.com) /ebaysell (http://www.tinaja.com/glib/ebaysell.pdf) /ebaybuy (http://www.tinaja.com/glib/ebaybuy.pdf) /deja (http://groups.google.com/googlegroups/deja_announcement.html) /drhtml (http://www2.imagiware.com/RxHTML/) /fedex (http://www.fedex.com/us/) /currency (http://www.xe.net/ucc/) /terraserver (http://terraserver-usa.com/) /areacode (http://decoder.americom.com/cgi-bin/decoder.cgi) /asiansources (http://www.asia.globalsources.com/HOMEPAGES/ASOL/HOME) /ebaystore (http://stores.ebay.com/synergeticsabeja) /amazon (http://www.amazon.com/exec/obidos/redirect-home/donlancastersgur/) /aucres01 (http://www.tinaja.com/aucres01.asp) /auctlinks (http://www.tinaja.com/auct01.asp#links) /wayback (http://www.archive.org/web/web.php) /agilent (http://www.agilent.com) /fields01.psl (http://www.tinaja.com/glib/fields01.psl) /fields01.pdf (http://www.tinaja.com/glib/fields01.pdf) /maxwells (http://hyperphysics.phy-astr.gsu.edu/hbase/electric/maxeq.html#c3) /muse121 (http://www.tinaja.com/glib/muse121.pdf) /maxwellbook (http://www.amazon.com/exec/obidos/ISBN=0486606368/donlancastersgurA) /transtronics (http://www.transtronics.com) /sigview.pdf (http://www.tinaja.com/glib/sigview.pdf) /mscal28nd.asp (http://www.tinaja.com/mscal28nd.asp) /microchip (http://www.microchip.com) /numschip.pdf (http://www.tinaja.com/glib/numschip.pdf) /numschip.psl (http://www.tinaja.com/glib/numschip.psl) /msd28a.asm (http://www.tinaja.com/glib/msd28a.asm) /lineartechnology (http://www.lineartechnology.com) /bmtypewr (http://www.tinaja/com/psutils/bmtypewr.psl) /distlang.pdf (http://www.tinaja.com/glib/distlang.pdf) /muse141 (http://www.tinaja.com/glib/muse141.pdf) /screenthief (http://www.keyscreen.com/KeyScreen(s)5/scrnthf.htm) /giffont (http://www.tinaja.com/bmfonts/giffont1.bmp) /f507bg.txt (http://www.tinaja.com/bmfonts/f507bg.txt) /f507bg.psl (http://www.tinaja.com/bmfonts/f507bg.psl) /f507bg.pdf (http://www.tinaja.com/bmfonts/f507bg.pdf) /f607bg.txt (http://www.tinaja.com/bmfonts/f607bg.txt) /f707bg.txt (http://www.tinaja.com/bmfonts/f707bg.txt) /imgwrds1.psl (http://www.tinaja.com/psutils/imgwrds1.psl) /bmfont01 (http://www.tinaja.com/bmfont01.asp) /expbmp.psl (http://www.tinaja.com/glib/expbmp.psl) /kikisu (http://www.tinaja.com/images/bargs/ki710101.jpg) /hp3336a (http://www.tinaja.com/images/bargs/hp333601.jpg) /bmtransfer (http://www.tinaja.com/bmfonts/lettex01.bmp) /histolog.pdf (http://www.tinaja.com/glib/histolog.pdf) /histolog.psl (http://www.tinaja.com/glib/histolog.psl) /site01 (http://www.tinaja.com/site01.asp) /dayproc1.psl (http://www.tinaja.com/psutils/dayproc1.psl) /trail30.psl (http://www.tinaja.com/psutils/trail30.psl) /logrptm1.psl (http://www.tinaja.com/psutils/logrptm1.psl) /logrpt01.psl (http://www.tinaja.com/psutils/logrpt01.psl) /powerfit (http://www.tinaja.com/glib/powerfit.pdf) /pssort (http://www.tinaja.com/glib/pssort.pdf) /heapsort (http://www.tinaja.com/glib/heapsort.pdf) /bashpseu (http://www.tinaja.com/glib/bashpseu.pdf) /pseudo01 (http://www.tinaja.com/pseudo01.asp) /muse112 (http://www.tinaja.com/glib/muse112.pdf) /muse113 (http://www.tinaja.com/glib/muse113.pdf) /muse89 (http://www.tinaja.com/glib/muse89.pdf) /muse151 (http://www.tinaja.com/glib/muse151.pdf) /pssecrets (http://www.tinaja.com/glib/pssecrets.pdf) /bouncy (http://www.tinaja.com/glib/bouncy.pdf) /vectstep (http://www.tinaja.com/glib/vectstep.pdf) /muse102 (http://www.tinaja.com/glib/muse102.pdf) /onesword (http://www.tinaja.com/text/onesword.html) /emergop2 (http://www.tinaja.com/glib/emergop2.pdf) /wave01 (http://www.tinaja.com/wave01.asp) /chaincode (http://www.tinaja.com/text/chain01.html) /muse152 (http://www.tinaja.com/glib/muse152.pdf) /atg1 (http://www.tinaja.com/glib/atg1.pdf) /hack62 (http://www.tinaja.com/glib/hack62.pdf) /psinscrt (http://www.tinaja.com/glib/psinscrt.pdf) /fern2img (http://www.tinaja.com/psutils/fern2img.psl) /thefern (http://www.tinaja.com/psutils/fern2img.pdf) /cmoscb (http://www.amazon.com/exec/obidos/ISBN%3D0750699434/donlancastersgurA/002-0496817-3688016) /activecb (http://www.amazon.com/exec/obidos/ISBN%3D075062986X/donlancastersgurA/002-0496817-3688016) /hack64 (http://www.tinaja.com/glib/hack64.pdf) /nss (http://www.caves.org) /sinquest (http://www.tinaja.com/glib/sinquest.pdf) /askguru (http://www.tinaja.com/glair01.asp) /assycb (http://www.amazon.com/exec/obidos/ISBN%3D0672223317/donlancastersgurA/002-3338585-9572047) /muse105 (http://www.tinaja.com/glib/muse105.pdf) /muse107 (http://www.tinaja.com/glib/muse107.pdf) /resbn90 (http://www.tinaja.com/glib/resbn90.pdf) /hackar3 (http://www.tinaja.com/glib/hackar3.pdf) /testdemo (http://www.tinaja.com/glib/FULL60-1.ASC) /mschips (http://www.tinaja.com/glib/mschips.pdf) /sigview (http://www.sigview.com) /ggsigview (http://www.tinaja.com/glib/sigview.pdf) /mock (http://www.technicalworks.com) /xtronics (http://www.xtronics.com/) /oshen (http://www.oshonsoft.com/pic.html) /heapps01 (http://www.tinaja.com/psutils/heapps01.psl) /distlangpdf (http://www.tinaja.com/glib/distlang.pdf) /strconv (http://www.tinaja.com/glib/strconv.pdf) /fancysort (http://linux.wku.edu/~lamonml/algor/sort) /presort (http://www.tinaja.com/psutils/presort1.psl) /psnt (http://www.tinaja.com/glib/psnt.pdf) /insort (http://www.tinaja.com/psutils/insort.ps) /bublsort (http://www.tinaja.com/psutils/bublsort.ps) /oldstrconv (http://www.tinaja.com/psutils/strconv.html) /psdisk03 (http://www.tinaja.com/glib/psdisk03.pdf) /muse01 (http://www.tinaja.com/muse01.asp) /gonzopow (http://www.tinaja.com/glib/gonzopow.pdf) /analogeb (http://www.tinaja.com/glib/analogeb.pdf) /psdisk03 (http://www.tinaja.com/glib/psdisk03.pdf) /flut01 (http://www.tinaja.com/flut01.asp) /clpng (news:///comp.lang.postscript) /ctpng (news:///comp.text.pdf) /yahoo (http://www.yahoo.com) /google (http://www.google.com) /scodes (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) /whois (http://www.networksolutions.com/en_US/whois/index.jhtml) /zekes (http://www.zekes.com) /logfileformat (http://www.microsoft.com/windows2000/en/server/iis/default.asp?url=/windows2000/en/server/iis/htm/core/iicnvlg.htm) /logrpt01.psl (http://www.tinaja.com/psutils/logrpt01.psl) /logrpt01.log (http://www.tinaja.com/psutils/logrpt01.log) /ex031126 (http://www.tinaja.com/psutils/ex031126.log) /picup01 (http://www.tinaja.com/picup01.asp) /webwb01 (http://www.tinaja.com/webwb01.asp) /muse90 (http://www.tinaja.com/glib/muse90.pdf) /vismagsn (http://www.tinaja.com/glib/vismagsn.psl) /vismagsn.pdf (http://www.tinaja.com/glib/vismagsn.pdf) /msquant (http://www.tinaja.com/glib/msquant.psl) /optjit01 (http://www.tinaja.com/psutils/optjit01.psl) /optjit01demo (http://www.tinaja.com/psutils/optjit01.pdf) /qall01 (http://www.tinaja.com/psutils/qall01.psl) /deltapat (http://www.tinaja.com/psutils/deltapat.pdf) /deltapat.pdf (http://www.tinaja.com/psutils/deltapat.pdf) /deltapat.psl (http://www.tinaja.com/psutils/deltapat.psl) /mindist1 (http://www.tinaja.com/glib/mindist1.pdf) /deltams1 (http://www.tinaja.com/glib/deltams1.pdf) /grabjpg (http://www.tinaja.com/psutils/grabjpg.psl) /gallery (http://www.tinaja.com/glib/gallery.pdf) /nutour01 (http://wwww.tinaja.com/nutour01.pdf) /linkpdf1 (http://www.tinaja.com/glib/linkpdf1.html) /ebayfoto (http://www.tinaja.com/glib/ebayfoto.pdf) /jpeg2pdf.html (http://www.tinaja.com/text/jpeg2pdf.html) /pdf2bmp (http://www.tinaja.com/psutils/pdf2bmp.psl) /bitmfont (http://www.tinaja.com/psutils/bitmfont.txt) /antifontpsl (http://www.tinaja.com/psutils/antifont.psl) /antifonttxt (http://www.tinaja.com/psutils/antifont.txt) /histog01 (http://www.tinaja.com/psutils/histog01.psl) /swingtlt (http://www.tinaja.com/glib/swingtlt.pdf) /newsamoe (news:///alt.marketing/online.ebay) /webtrends (http://www.netiq.com/webtrends/default.asp) /stegan (http://63.140.207.28/books/bkwater.asp) /nodi (http://www.pages.ebay.com/help/community/notice-infringe2.pdf) /ebayvero (http://www.pages.ebay.com/help/community/vero-program.html) /aboutme (http://members.ebay.com/aboutme/abeja/) /magfill2 (http://www.tinaja.com/psutils/magfill2.psl) /bmprpt01 (http://www.tinaja.com/psutils/bmprpt01.psl) /waywere (http://www.tinaja.com/glib/waywere.pdf) /nikon (http://www.nikon.com) /bayer (http://www.coreco.com/Web/wbtools3.nsf/0/87fce126f109ea3a05256c7100591c9a?OpenDocument) /hewpack (http://www.hp.com) /auct01 (http://www.tinaja.com/auct01.asp) /blat01 (http://www.tinaja.com/auct01.asp) /moreebay (http://www.tinaja.com/glib/moreebay.pdf) /auctscne (http://www.tinaja.com/glib/auctscne.pdf) /autourl (http://www.tinaja.com/glib/autourl.pdf) /msintro1 (http://www.tinaja.com/glib/msintro1.pdf) /msintrosource (http://www.tinaja.com/glib/msintro1.psl) /knockout (http://www.tinaja.com/glib/knockout.bmp) /stepsynt (http://www.tinaja.com/glib/stepsynt.pdf) /msintro1 (http://www.tinaja.com/glib/msintro1.pdf) /msinprop (http://www.tinaja.com/glib/msinprop.pdf) /muse106 (http://www.tinaja.com/glib/muse106.pdf) /muse142 (http://www.tinaja.com/glib/muse142.pdf) /math01 (http://www.tinaja.com/math01.asp) /cubic01 (http://www.tinaja.com/cubic01.asp) /bez4pts (http://www.tinaja.com/glib/bez4pts.pdf) /muse145 (http://www.tinaja.com/glib/muse145.pdf) /muse148 (http://www.tinaja.com/glib/muse148.pdf) /curveft3 (http://www.tinaja.com/psutils/curveft3.psl) /fuzzybez (http://www.tinaja.com/glib/fuzzybez.pdf) /bmprpt01 (http://www.tinaja.com/psutils/bmprpt01.psl) /nowhit01 (http://www.tinaja.com/psutils/nowhit01.psl) /blender (http://www.tinaja.com/psutils/blender.psl) /speedup2 (http://www.tinaja.com/glib/speedup2.pdf) /histog01 (http://www.tinaja.com/psutils/histog01.psl) /imgviewer32 (http://www.arcatapet.net/imgv32.cfm) /basis (http://www.tinaja.com/glib/basis.pdf) /expbmp (http://www.tinaja.com/glib/expbmp.pdf) /dodbur01 (http://www.tinaja.com/psutils/dodbur01.psl) /dodgebur (http://www.tinaja.com/glib/dodgebur.pdf) /magfill1 (http://www.tinaja.com/psutils/magfill1.psl) /swingt01 (http://www.tinaja.com/psutils/swingt01.psl) /before01 (http://www.tinaja.com/images/bargs/marcon01.jpg) /during01 (http://www.tinaja.com/images/bargs/marcon01.bmp) /after01 (http://www.tinaja.com/images/bargs/marconz1.jpg) /repobmp (http://www.tinaja.com/glib/repobmp.pdf) /basis01 (http://www.tinaja.com/glib/basis.pdf) /arcata (http://www.arcatapet.net/imgv32.cfm) /comparebmp (http://www.designer-info.com/Writing/bmp_tiff_jpeg_gif.htm) /imagimag (http://www.tinaja.com/glib/imagimag.pdf) /myebays (http://www.tinaja.com/glib/myebays.pdf) /stepprep (http://www.tinaja.com/glib/stepprep.pdf) /aafont01 (http://www.tinaja.com/aafont01.asp) /here1 (http://village.infoweb.ne.jp/~fwhw1257/study/bmpform.htm) /here2 (http://www.daubnet.com/formats/BMP.html) /bittype (http://www.tinaja.com/psutils/pdf2bmp.psl) /photocombine (http://www.tinaja.com/psutils/blender.psl) /psl (http://www.tinaja.com/psutils/) % dummy temp /psl1 (http://www.tinaja.com/psutils/pdf2bmp.psl) /psl2 (http://www.tinaja.com/psutils/acatdata.psl) /psl3 (http://www.tinaja.com/psutils/catwords.psl) /psl4 (http://www.tinaja.com/psutils/graburls.psl) /psl5 (http://www.tinaja.com/psutils/blender.psl) /psl6 (http://www.tinaja.com/psutils/catools1.psl) /psl7 (http://www.tinaja.com/psutils/strconv.html) /psl8 (http://www.tinaja.com/psutils/bodcat.psl) /psl9 (http://www.tinaja.com/psutils/flatvue1.psl) /psl10 (http://www.tinaja.com/psutils/fern2img.psl) /psl11 (http://www.tinaja.com/psutils/flutools.psl) /psl12 (http://www.tinaja.com/psutils/mscal156q.psl) /psl13 (http://www.tinaja.com/psutils/weblogu2.psl) /psl14 (http://www.tinaja.com/psutils/pfa2pfb.psl) /psl15 (http://www.tinaja.com/psutils/pfb2pfa.psl) /psl16 (http://www.tinaja.com/glib/psdisk03.psl) /psl17 (http://www.tinaja.com/psutils/disktool.psl) /psl18 (http://www.tinaja.com/glib/psinscrt.psl) /psl19 (http://www.tinaja.com/glib/pssearch.psl) /psl20 (http://www.tinaja.com/text/refsum1.html) /psl21 (http://www.tinaja.com/text/reflog1.html) /psl22 (http://www.tinaja.com/psutils/reflog1.psl) /psl23 (http://www.tinaja.com/psutils/refsum1.psl) /psl24 (http://www.tinaja.com/psutils/searepl.psl) /psl25 (http://www.tinaja.com/psutils/weberru2.psl) /psl26 (http://www.tinaja.com/psutils/grabsrch.psl) /psl27 (http://www.tinaja.com/psutils/grabrefs.psl) /magsn01 (http://www.tinaja.com/magsn01.asp) /gonzoutils (http://www.tinaja.com/post01.asp#gonzo) /disktool (http://www.tinaja.com/psutils/disktool.ps) /elesimp (http://www.tinaja.com/glib/elesimp.pdf) /tn5603 (http://partners.adobe.com/asn/developer/pdfs/tn/TN5603.Filters.pdf) /fern2img (http://www.tinaja.com/psutils/fern2img.psl) /fern (http://www.tinaja.com/psutils/fern2img.pdf) /oldfern (http://www.tinaja.com/psutils/fernx1.pdf) /acrosdk (http://partners.adobe.com/asn/developer/acrosdk/main.html) /refman2 (http://partners.adobe.com/asn/developer/pdfs/tn/psrefman.pdf) /refman3 (http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf) /s3011 (http://partners.adobe.com/asn/developer/pdfs/tn/PS3010and3011.Supplement.pdf) /s2011 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2011.supplement.pdf) /s2012 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2012.supplement.pdf) /s2013 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2013.supplement.pdf) /s2014 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2014.supplement.pdf) /s2015 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2015.supplement.pdf) /s2016 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2016.supplement.pdf) /ghost (http://www.cs.wisc.edu/~ghost/) /distlang (http://www.tinaja.com/psutils/distlang.html) /adobepst (http://partners.adobe.com/asn/developer/technotes/) /maildon (mailto:don@tinaja.com) /tinaja (http://www.tinaja.com) /adobe (http://www.adobe.com) /adobesdk (http://partners.adobe.com/asn/developer/acrosdk/main.html) /pstrans (http://www.tinaja.com/glib/pstrans.pdf) /borland (http://www.borland.com/products/downloads/download_cbuilder.html) /ebay (http://cgi6.ebay.com/ws/eBayISAPI.dll?ViewSellersOtherItems&userid=abeja&completed=0&sort=2&since=-1&include=0&page=1&rows=100) /searepl (http://www.tinaja.com/psutils/searepl.psl) /aasdk (http://www.tinaja.com/plugins/AboutAcrobatSDK.api) /uncomp (http://www.tinaja.com/plugins/UncompressPDF.api) /addimage (http://www.tinaja.com/plugins/AddImage.api) /samplejpg (http://www.tinaja.com/plugins/sample.jpg) /transparency (http://www.tinaja.com/plugins/Transparency.api) /threerects (http://www.tinaja.com/plugins/threerects.pdf) /watermark (http://www.tinaja.com/plugins/Watermark.api) /verifyurls (http://www.tinaja.com/plugins/VerifyURLS.api) /flate (http://www.tinaja.com/glib/flatvue.pdf) /pstrans (http://www.tinaja.com/glib/pstrans.pdf) /advt01 (http://www.tinaja.com/advt01.asp) /amlink01 (http://www.tinaja.com/amlink01.asp) /ng1 (news:///comp.text.pdf) /ng2 (news:///comp.lang.postscript) /msc++ (http://msdn.microsoft.com/visualc/productinfo/default.asp) /degub (http://www.tinaja.com/glib/degub.pdf) /ghostscript (http://www.artifex.com/pressreleases/GS70.htm) /demox.psl (http://www.tinaja.com/glib/g9demox.psl) /demox.pdf (http://www.tinaja.com/glib/g9demox.pdf) /demo.pdf (http://www.tinaja.com/glib/g9demo.pdf) /flatvue (http://www.tinaja.com/glib/flatvue.psl) /pdfrefman (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /psrefman (http://partners.adobe.com/asn/developer/technotes/postscript.html) /pdfmrm (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /tipdf (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /asdk (http://partners.adobe.com/asn/developer/acrosdk) /mtcr (http://support.adobe.com/devsup/devsup.nsf/docs/51864.htm) /flatvue1 (http://www.tinaja.com/psutils/flatvue1.psl) /acrob01 (http://www.tinaja.com/acrob01.asp) /post01 (http://www.tinaja.com/post01.asp) /info01 (http://www.tinaja.com/info01.asp) /gurgrm01 (http://www.tinaja.com/gurgrm01.asp) /energfun (http://www.tinaja.com/glib/energfun.pdf) { /tilley (http://www.tilleyfoundation.com) /mnglobal (http://www.mnglobal.com/energy/pg2.htm) /keely (http://www.keelynet.com) /evolve (http://www.evolvedtechnology.com) /hack64 (http://www.tinaja.com/glib/hack64.pdf) /hackar3 (http://www.tinaja.com/glib/hackar3.pdf) /resbn58 (http://www.tinaja.com/glib/resbn58.pdf) /bppt (http://www.batterypoweronline.com) /muse112 (http://www.tinaja.com/glib/muse112.pdf) /muse113 (http://www.tinaja.com/glib/muse113.pdf) /energfun (http://www.tinaja.com/glib/energfun.pdf) /bashpseu (http://www.tinaja.com/glib/bashpseu.pdf) /adobe (http://www.adobe.com) /netscape (http://www.netscape.com) /gallypsl (http://www.tinaja.com/galley1.psl) /gallypdf (http://www.tinaja.com/galley1.pdf) /atn5150 (http://partners.adobe.com/asn/developer/acrosdk/docs/createpdfapi/pdfmarkReference.pdf) /nutour (http://www.tinaja.com/bargains/nutour02.pdf) /nutoursource (http://www.tinaja.com/bargains/nutour02.psl) /bwhistle (http://www.tinaja.com/glib/bwhistle.pdf) /gonzo1 (http://www.tinaja.com/post01.asp#gonzo) /barg01 (http://www.tinaja.com/barg01.asp) /weblib01 (http://www.tinaja.com/weblib01.asp) /gurgrm01 (http://www.tinaja.com/gurgrm01.asp) /z1 (http://www.tinaja.com/bargains/thumb/albradz2.jpg) /z2 (http://www.tinaja.com/bargains/sbtesteq.asp) /z3 (http://www.tinaja.com/images/bargs/albrad02.jpg) /z4 (http://www.tinaja.com/bargains/thumb/tutenaz2.jpg) /z5 (http://www.tinaja.com/bargains/sbphone.asp) /z6 (http://www.tinaja.com/images/bargs/tutena02.jpg) /sourceme (http://www.tinaja.com/glib/gallery.psl) /sourceme2 (http://www.tinaja.com/glib/autourl.psl) } pop >> {mark exch /eurl cvx ] cvx def} forall %%%%%%%%%%%%%%%% New colorizer patches %%%%%%%%%%%%%%%%%% /boxgrays 0.899 def /grayshade boxgrays def /mastergray boxgrays def /staytint {0.33 setgray} def /staytint1 {0.25 setgray} def /showadgrays true def /red {0 settint} def /Zmacro {staytint /ypos ypos 2 add def 72 300 div setlinewidth xpos ypos moveto txtwide 0 rlineto stroke /ypos ypos -2 add def tintoff} def % hair rule /amacro {(zy0) stringmacro /ypos ypos ypara add def 0.33 setgray } def % start drop cap /bmacro {(iFy1) stringmacro /ypos ypos ypara add def black} def % finish drop cap % Gonzo character colorizer /blueon {mark /blue cvx 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /blueoff {mark /beige cvx 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton {mark 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1 {mark 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1b {mark beige cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1a {mark /aqua cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1p {mark /burple cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1r {mark /red cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1a {mark /aqua cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1b {mark /beige cvx % try for beige after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tintoff {mark 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def %%%%%%%%%%%%%% COMPACT VERSION OF COLORIZER II %%%%%%%%%%%%%%%%%%%%%% /settint {dup /currenttint exch store 5.999 mul dup floor cvi /&cbar exch store dup floor sub /&cwt exch store [ {/setgray [ /dup cvx 0.3 &cwt 0.59 mul add /ge cvx [1 /exch cvx &cwt 0.59 mul 0.30 add /sub cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx ] cvx [ &cwt 0.59 mul 0.3 add /div cvx /dup cvx &cwt /mul cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub 0.3 mul add /ge cvx [1 &cwt sub 0.3 mul 0.59 add /sub cvx &cwt 0.3 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx /exch cvx 1 /exch cvx] cvx [1 &cwt sub 0.3 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 &cwt 0.11 mul add /ge cvx [&cwt 0.11 mul 0.59 add /sub cvx 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx 1 /exch cvx] cvx [0 /exch cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub mul 0.11 add /ge cvx [1 &cwt sub 0.59 mul 0.11 add /sub cvx &cwt 0.59 mul 0.30 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx 1] cvx [0 /exch cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.11 &cwt 0.30 mul add /ge cvx[&cwt 0.30 mul 0.11 add /sub cvx 1 &cwt sub 0.30 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx 1] cvx [ &cwt 0.30 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx /exch cvx 0 /exch cvx ] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} {/setgray [ /dup cvx 0.30 1 &cwt sub 0.11 mul add /ge cvx[ 1 /exch cvx 1 &cwt sub 0.11 mul 0.30 add /sub cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx ] cvx [ 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx 0 /exch cvx] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} ] &cbar get exec exec} bind def /beige {0.10 settint} def % examples of convenience operators /aqua {0.52 settint} def /blue {0.67 settint} def /lime {0.44 settint} def /burple {0.75 settint} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /guru { gonzo begin ps.util.1 begin printerror nuisance begin} def % guru % activate gonzo utilities 50 50 10 setgrid % create grid % 56 61 showgrid /setpagefonts { /cstretch 0.015 def /sstretch 0.015 def /font0 /StoneSans-Bold 1.6 gonzofont /font1 /StoneSans 0.95 gonzofont /font2 /StoneSans [0.95 0 0.25 0.95 0 0 ] gonzofont /font4 /StoneSans 0.85 gonzofont /font3 /StoneSans-Bold 0.85 gonzofont /font6 /StoneSans-Bold 0.85 gonzofont /font7 /StoneSans-Bold 1.05 gonzofont % subheaders /font8 /StoneSans-Bold [0.65 0 0 0.65 0 0.4] gonzofont /txtwide 36 store /yinc 1.2 store /kern 0.1 store /pm 1.5 store aqua 0.33 setgray font1 black /amacro { mark /aqua cvx 0.33 /setgray cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch } def /bmacro { mark /black cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch } def /shiftin {xpos /xposhold exch store /xpos xpos 3 add store} def /shiftout {/xpos xposhold store} def /texttop 51 store /textleft 3 store /cmacro {aqua 0.25 setgray (znhL7) stringmacro /xpos xpos 1.7 sub store /ypos ypos .1 sub def } def % left title /dmacro {black (pL1hz) stringmacro /xpos xpos 1.7 add store /ypos ypos .1 add def} def % normal text after centered title /fmacro % try and fake | {mark /gsave cvx /currentpoint cvx /moveto cvx 0.1 /setlinewidth cvx 0 0.65 /rlineto cvx /stroke cvx /grestore cvx ] cvx printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def } def setpagefonts % -2 50.5 (optional header here \274) cl %% Set document opening conventions. Note DOCVIEW limited. [/CropBox [0 0 520 620] % set the wierd size /PAGES pdfmark [ {Catalog} << /ViewerPreferences << /FitWindow true /CenterWindow true >> /PageLayout /OneColumn % continous /Pagemode /UseNone % no thumbs /View [/XYZ null null 1 ] % force 100% >> /PUT pdfmark %%%%%%%%%%%%%%%%% START DEMO ART (not in use) %%%%%%%%%%%%%%%% %%% Hand patching Info: % next available variable is /GS3 % transparency gstate is object 2 % contents stream is object 18 gets q /GS3 gs (xstuff) Q % be sure to q Q bracket to localize % resources stream is object 19 gets /GS3 2 0 R /transoverlay { % make a new graphics state [ /_objdef {newgsstate} /type /dict /OBJ pdfmark % fill the new overlay graphics state - See PDF manual for details [ {newgsstate} << /Type /ExtGState /ca 0.5 % fill transparency is 0.5 /CA 0.5 % stroke transparency is 0.5 /BM /Normal /AIS false /OP false /OPM 1 /op true >> /PUT pdfmark % start a Begin Picture graphics overlay subroutine... [ /BBox [0 0 1000 1000 ] /_objdef {overlaypix} /BP pdfmark % fill the Begin Picture graphics overlay Xobject subroutine... 0 0.5 1 setrgbcolor % on the aqua side of blue 4 4 6 6 rectfill % complete the Begin Picture graphics overlay Xobject... [ /EP pdfmark } def % Write a two squares program... /twosquares { gsave translate 1 0.5 0 setrgbcolor % red side of orange 2 2 6 6 rectfill % do background opaque box [ {overlaypix} /SP pdfmark % show foreground transparent box grestore} def % Distill the two squares program. Initially use a BARE Distiller Job % Options that has no compression, no embedded fonts, and little else save /snap1 exch store %%% transoverlay % create new objects %%% 14 17.5 twosquares snap1 restore %%%%%%%%%%%% END DEMO %%%%%%% %%%%%%%%%%%% PHOTO INSERTS %%%%%%%%%% % When photos are needed, they are inserted here. Comment out otherwise. %%%%%%%%% photo links %%%%%%%%% % combined autopos jpeg conversion and hotlink: /autofigure1 {save /af1 exch store xpos ypos yinc add translate 8.5 0.65 683 794 .025 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/hpexcb01.jpg) % url first (C:\\Documents and Settings\\don\\Desktop\\aarawpix\\hpexcb01.jpg) jpegimageprocwithlink af1 restore} store /autofigure2 {save /af2 exch store xpos ypos yinc add translate 8.5 -2 790 672 .020 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/tek40841.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\tek40841.jpg) jpegimageprocwithlink af2 restore} store /autofigure3 {save /af3 exch store xpos ypos yinc add translate 12 0.6 530 816 .018 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/sencri01.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\sencri01.jpg) jpegimageprocwithlink af3 restore} store /autofigure4 {save /af4 exch store xpos ypos yinc add translate 12 -0.4 422 612 .024 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/abspar01.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\abspar01.jpg) jpegimageprocwithlink af4 restore} store /jpegimageprocwithlink { % hoffset voffset hres vres save /snap2 exch def /infilename exch store % grab passed pix file /inurllink exch store % grab link filename /photoscale exch store /vpixels exch store /hpixels exch store translate % adjust position for final figure ??? inurllink setareaurl % autolink sizing /DeviceRGB setcolorspace % pick color model 0 0 translate % set page position hpixels vpixels scale % magnify unit square photoscale dup scale /infile infilename (r) file def % establish input read file /Data {infile /DCTDecode filter} def % define a data source << % start image dicationary /ImageType 1 % always one /Width hpixels % JPEG width in pixels /Height vpixels % JPEG height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource Data % proc to get filtered JPEG /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image operator ypos snap2 restore /ypos exch def } def /setareaurl { % for auto include routine /cururlname exch store mark % start pdfmark /Rect [ 0 0 hpixels photoscale mul vpixels photoscale mul ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def %%%%%%%%%%% data for quantization figures %%%%%%% /raw [0.0198613 3.75812 0.0300583 0.968559 0.0400088 0.625545 0.0500071 0.473332 0.0598378 0.508493 0.0701048 0.618866 0.080067 0.574973 0.0900779 0.328987 0.0999211 0.358846 0.109939 0.13398 0.119912 0.183206 0.129936 0.374792 0.14006 0.286128 0.150091 0.206733 0.160075 0.190605 0.169949 0.196913 0.17999 0.136811 0.189984 0.223428 0.200178 0.130515 0.209919 0.279305 0.21986 0.179522 0.230087 0.167779 0.239816 0.127177 0.250051 0.18394 0.260079 0.22457 0.269779 0.120137 0.279989 0.142624 0.290027 0.124499 0.299737 0.111797 0.309994 0.123014 0.319982 0.268029 0.329976 0.207562 0.339971 0.0887317 0.349912 0.141557 0.359975 0.0943557 0.369923 0.0895733 0.379933 0.198241 0.389968 0.204985 0.399985 0.107935 0.409949 0.0945179 0.419974 0.125101 0.429965 0.0976423 0.440214 0.0904647 0.449999 0.108261 0.459981 0.0657491 0.470024 0.206909 0.479727 0.0390659 0.489996 0.0464662 0.50005 0.208427 0.509765 0.0436721 0.520046 0.0589122 0.53008 0.0933284 0.540058 0.122129 0.550131 0.108932 0.55981 0.0608129 0.570111 0.0552627 0.579854 0.0621947 0.590107 0.139442 0.59986 0.0498109 0.610232 0.103161 0.619883 0.129033 0.630016 0.0849617 0.640199 0.0601919 0.649749 0.0799222 0.660031 0.0541167 0.669983 0.113527 0.679712 0.0480973 0.690061 0.089419 0.700078 0.107595 0.709859 0.0710718 0.720131 0.041575 0.730196 0.123105 0.740089 0.0584097 0.749848 0.0861482 0.75993 0.0515622 0.769942 0.0761598 0.779974 0.118253 0.789996 0.0481484 0.799986 0.0874933 0.809957 0.0973124 0.820064 0.0534035 0.830362 0.025697 0.83973 0.0399598 0.850034 0.049165 0.859829 0.0851767 0.869827 0.0404494 0.880229 0.0435597 0.889938 0.0723645 0.899933 0.0190775 0.910168 0.0616833 0.919942 0.0725692 0.929991 0.0399983 0.940013 0.102806 0.950018 0.0518368 0.960034 0.0318331 0.970059 0.0823362 0.980036 0.0436783 0.989837 0.0463608 1.00013 0.0562829 ] def /ex54 [ 5.87906 19.9758 5.38078 23.2179 6.61461 22.45 6.48865 23.8991 7.79373 21.6975 7.66747 18.3412 7.16927 15.7147 7.0433 23.5588 7.89268 23.6885 6.44363 24.0582 6.31744 20.4902 5.81917 24.1383 7.16713 21.0382 6.66901 18.9723 6.54259 11.4618 6.04431 22.422 6.99837 23.9206 7.72186 17.6438 7.22366 19.559 7.0974 19.865 8.16101 21.0954 7.66296 21.6132 8.38593 23.3011 8.45734 21.8227 8.33099 20.4936 7.83295 23.6901 9.12148 21.6428 8.99521 24.1041 9.0123 22.5552 10.0761 24.016 9.94987 23.6423 9.4516 18.8 10.3011 18.3618 10.175 15.7533 9.67651 15.8403 10.7406 22.2248 11.2952 23.4363 8.38531 18.1067 9.44916 24.1021 8.95065 19.521 8.82462 16.3613 8.32649 22.8011 9.67415 22.9247 9.1758 23.1169 9.04961 18.7033 10.0041 21.3686 9.50554 20.3098 9.37965 23.1915 10.229 20.7535 9.73083 24.3928 10.7951 23.4553 10.6687 20.0753 10.1704 22.7069 10.9646 20.4496 10.8385 20.1683 11.4042 19.4907 12.0175 23.4256 11.5192 22.1005 12.5835 16.0818 12.4572 16.8864 11.9588 13.1062 12.809 19.7136 12.6826 18.5011 12.1842 20.9156 13.2483 19.5923 13.1218 24.0439 13.8034 21.8302 10.6676 23.761 10.8927 22.8588 11.957 21.8607 11.4587 19.2204 11.3322 17.3188 12.5117 19.7264 12.0132 20.9341 13.1763 23.3152 13.2472 20.7672 13.1206 23.1287 13.4724 23.3126 13.3461 23.9651 13.9117 18.537 13.8022 22.5502 14.2414 20.9416 14.4669 13.1742 13.1752 23.9257 13.6145 24.4108 13.8398 22.6699 ] store /ex54good [ 6.54259 11.4618 11.9588 13.1062 14.4669 13.1742 10.175 15.7533 9.67651 15.8403 10.0041 21.3686 ] store /ex54orig [ 9.88396 24.4257 ] store /ex54want [ 10 0 ] store /shook [ 0.00934937 1.51076 0.0210324 0.978672 0.0312886 0.477679 0.0406482 0.318167 0.0493669 0.337353 0.0617085 0.203131 0.0692016 0.259957 0.0798052 0.229666 0.0885358 0.271299 0.100559 0.1726 0.109939 0.13398 0.118677 0.119296 0.131049 0.187404 0.140698 0.134313 0.149444 0.129195 0.158846 0.106101 0.170589 0.0965049 0.179351 0.0914561 0.189653 0.129042 0.201417 0.0546426 0.210828 0.108576 0.218951 0.100261 0.230727 0.120773 0.241057 0.103841 0.24984 0.0973585 0.259094 0.114175 0.268537 0.0808775 0.281232 0.051974 0.289386 0.0641827 0.301193 0.0942731 0.310907 0.0954356 0.31907 0.0730116 0.330889 0.0677774 0.339699 0.0797174 0.350554 0.0727672 0.360616 0.0859002 0.369923 0.0895733 0.379679 0.0823565 0.391137 0.0758395 0.399965 0.0916116 0.411197 0.0716472 0.419389 0.052739 0.430883 0.0744991 0.441523 0.0643956 0.450642 0.0651337 0.461231 0.0500311 0.470357 0.0682797 0.479727 0.0390659 0.491163 0.0464662 0.500383 0.0701265 0.509765 0.0436721 0.520046 0.0589122 0.529436 0.0621049 0.540979 0.065531 0.549818 0.0659652 0.55981 0.0608129 0.570111 0.0552627 0.579854 0.0621947 0.589296 0.0497526 0.59986 0.0498109 0.610207 0.0454799 0.620493 0.0516502 0.630849 0.0588497 0.639051 0.034206 0.649639 0.0456603 0.660009 0.0522574 0.670628 0.0426991 0.679712 0.0480973 0.69034 0.0477716 0.699467 0.0308037 0.711012 0.0686215 0.720131 0.041575 0.729513 0.0498212 0.739846 0.0430787 0.750499 0.0405623 0.76086 0.0438831 0.770257 0.0497878 0.780553 0.0441616 0.789662 0.0457397 0.800267 0.0325654 0.809451 0.0440074 0.820078 0.0403837 0.830362 0.025697 0.840997 0.0332166 0.85014 0.0337785 0.860449 0.0360605 0.869889 0.015046 0.880467 0.0360463 0.890767 0.0317396 0.899933 0.0190775 0.910273 0.0316686 0.919661 0.0263476 0.929956 0.0388174 0.939357 0.032368 0.949701 0.027215 0.960034 0.0318331 0.970334 0.0351219 0.979745 0.0379512 0.990337 0.0386641 1.00065 0.0439439 ] store %%%%%%%%%%%%% ordinary tracking figures /figureoneauto { /figadvance 13 store save /snap2 exch store xpos 2 add ypos figadvance sub translate % /linestring 20000 string def figure1 snap2 restore /ypos ypos figadvance sub yinc sub % 7 add store % temp bug removal? } store /figure1aaa { save /snap1aaa exch store 11 32.6 translate % huh? % BIG GREEN A % ================================================================= % (C:\\windows\\desktop\\gonzo\\gonzo.ps) run % use internal gonzo % (A:\\gonzo.ps) run % use external gonzo % gonzo begin % ps.util.1 begin % nuisance begin gsave aqua 0.3 setgray font6 -3 5 (desired\ncharacter) cc 20.2 5 (best\npixel fit) cc grestore /font1 /Helvetica-Bold 60 gonzofont % 100 100 2 setgrid 0.12 dup scale 0 0 mt 80 pu 60 pr 80 pd closepath 0.75 1 0.75 setrgbcolor fill newpath 0 1 0 setrgbcolor 0 0 mt 80 pu 60 pr 80 pd closepath 0.8 setlinewidth stroke newpath line1 [{0 0 mt 80 u}10 6 ] xrpt [{0 0 mt 60 r}10 8 ] yrpt 0.4 dup dup setrgbcolor /font2 /Helvetica-Bold [90 0 0 112 0 0] gonzofont font2 30 0 (A) cc %%% second figure 85 0 translate % was 90 % character is 0.4 0.4 0.4 hardwired % background is 0.75 1 0.75 /adjgam { 4 mul floor cvi [0 0.33 0.66 1] exch get } store /makeshade { %adjgam /val exch store 1 val sub -0.35 mul 0.75 add 1 val sub -0.6 mul 1 add 1 val sub -0.35 mul 0.75 add setrgbcolor 0 0 mt 10 pu 10 pr 10 pd closepath fill 10 0 translate } store gsave 0 70 translate [ 0.999 0.999 0.100 0.100 0.999 0.999 ] { makeshade} forall -60 -10 translate [ 0.999 0.800 0.007 0.007 0.800 0.999 ] {makeshade} forall -60 -10 translate [ 0.999 0.559 0.189 0.189 0.559 0.999 ] {makeshade} forall -60 -10 translate [ 0.999 0.282 0.432 0.432 0.282 0.999 ]{makeshade} forall -60 -10 translate [ 0.969 0.037 0.632 0.632 0.037 0.969 ]{makeshade} forall -60 -10 translate [ 0.779 0.000 0.000 0.000 0.000 0.779 ]{makeshade} forall -60 -10 translate [ 0.464 0.144 0.649 0.649 0.144 0.464 ]{makeshade} forall -60 -10 translate [ 0.182 0.439 0.999 0.999 0.439 0.182 ]{makeshade} forall grestore 0 1 0 setrgbcolor 0 0 mt 80 pu 60 pr 80 pd closepath 0.8 setlinewidth stroke newpath line1 [{0 0 mt 80 u}10 6 ] xrpt [{0 0 mt 60 r}10 8 ] yrpt snap1aaa restore } store /figure1x { /circproc {gsave /arraynum exch store /circvalue exch store /circshade exch store translate newpath 0 0 0.8 0 360 arc /font1 /StoneSans-Bold 0.9 gonzofont /font2 /Helvetica-Bold 0.7 gonzofont gsave circshade setgray fill grestore line2 0.33 setgray stroke font1 0 -0.3 circvalue cc newpath black font2 0 -1.5 arraynum cc 0 0 ( ) cc % eliminate strange string reuse bug? grestore } store % 32 9 showgrid line1 [{0 0 mt 1 2 rlineto 1 -2 rlineto stroke} 4 8 ] xrpt [{1 2 mt 2 2 rlineto 2 -2 rlineto stroke} 8 4 ] xrpt [{3 4 mt 4 2 rlineto 4 -2 rlineto stroke} 16 2 ] xrpt 7 6 mt 8 2 rlineto 8 -2 rlineto stroke { [-null- (52) (51) (41) (50) (30) (31) (40) (21) (42) (10) (22) (02) (00) (20) (32) (01) (12) (11) (21)] } pop 0 8 0.85 ( ) (00) circproc 15 8 0.7 (52)(01) circproc 7 6 0.7 (51) (02) circproc 23 6 0.7 (41) (03) circproc 3 4 0.75 (50) (04) circproc 11 4 0.75 (30) (05) circproc 19 4 0.75 (31) (06) circproc 27 4 0.75 (40) (07) circproc 1 2 0.75 (21) (08) circproc 5 2 0.75 (42) (09) circproc 9 2 0.75 (10) (10) circproc 13 2 0.75 (22) (11) circproc 17 2 0.75 (02) (12) circproc 21 2 0.75 (00) (13) circproc 25 2 0.75 (20) (14) circproc 29 2 0.75 (32) (15) circproc 0 -.3 0.75 (01) (16) circproc 2 -.3 0.75 (12) (17) circproc 4 -.3 0.75 (11) (18) circproc 6 -.3 0.75 (21) (19) circproc 8 -.3 0.85 ( ) (20) circproc 10 -.3 0.85 ( ) (21) circproc 12 -.3 0.85 ( ) (22) circproc 14 -.3 0.85 ( ) (23) circproc 16 -.3 0.85 ( ) (24) circproc 18 -.3 0.85 ( ) (25) circproc 20 -.3 0.85 ( ) (26) circproc 22 -.3 0.85 ( ) (27) circproc 24 -.3 0.85 ( ) (28) circproc 26 -.3 0.85 ( ) (29) circproc 28 -.3 0.85 ( ) (30) circproc 30 -.3 0.85 ( ) (31) circproc font2 0 5.85 ((reserved)) cc 26.5 7.6 (xx = array address)cc 0 0 ( ) cc % get rid of string bug } store /figure1f { save /snap3 exch def /linestring 1000 string store 9 1 translate % position on page %%%%%%%%%%%%%%%%%%% /sdat [ 11.98 10.02 11.38 10.47 10.7 10.13 11.65 10.41 11.68 10.1 11.82 10.38 11.07 10.13 11.13 10.16 10.95 10.44 9.97 10.1 11.53 10.04 12.0 10.28 11.35 10.49 11.2 9.47 9.24 9.75 10.3 10.03 11.42 9.65 9.91 9.41 8.61 9.69 11.01 9.62 12.3 9.38 11.13 9.74 9.76 9.4 8.93 9.68 9.77 9.72 10.33 10.0 9.66 9.34 9.69 9.62 8.33 9.66 9.83 9.93 11.37 9.69 11.07 9.97 9.71 9.55 9.49 9.82 9.94 9.58 7.78 9.86 9.1 10.14 10.73 9.9 10.17 10.17 10.74 9.76 8.24 9.52 6.75 9.8 9.16 10.08 7.76 9.83 8.03 10.11 11.37 10.15 9.75 9.46 9.43 9.74 7.95 9.77 9.14 10.05 11.05 9.81 10.8 9.48 11.96 9.24 8.28 9.52 7.41 9.8 7.55 9.83 8.36 10.11 7.94 9.45 8.08 9.73 7.69 9.49 5.22 9.77 7.5 10.05 8.58 9.8 8.27 10.08 8.46 9.43 7.47 9.71 7.87 9.74 8.53 10.02 11.58 9.76 11.4 9.7 11.83 9.66 11.44 9.7 9.71 9.97 10.87 10.25 11.64 10.01 9.81 9.63 8.69 9.91 8.75 9.95 9.08 10.22 12.21 10.5 11.57 10.26 10.94 9.57 10.73 9.85 8.71 9.88 9.89 10.16 11.86 9.97 9.43 9.91 8.8 9.94 9.59 10.22 9.57 9.57 9.77 9.85 8.6 9.6 6.62 9.88 8.63 10.16 8.75 9.92 8.55 10.19 11.42 10.47 9.09 9.54 8.28 9.82 7.82 9.85 8.58 10.13 11.75 9.89 12.49 10.44 11.69 9.79 11.75 10.03 12.35 9.65 10.9 9.97 12.31 8.99 12.23 9.24 12.49 9.13 11.21 9.44 11.38 8.83 8.94 9.1 9.54 9.38 9.94 9.14 8.7 9.42 12.04 9.45 11.01 8.76 9.37 9.04 10.72 9.32 8.15 9.08 7.71 9.35 9.4 9.39 9.61 9.01 9.49 9.33 11.21 9.6 11.11 9.1 9.92 9.04 8.03 9.07 8.13 9.35 11.33 9.63 9.08 9.39 11.48 8.97 7.58 9.01 8.67 9.29 8.24 9.05 7.17 9.32 9.78 9.6 11.66 8.67 10.44 8.95 11.85 8.71 8.89 8.98 8.86 9.26 11.78 9.54 9.95 9.3 11.03 9.28 12.11 9.18 8.21 9.22 8.95 9.49 12.44 8.97 8.52 9.25 7.16 9.53 9.52 9.81 10.33 9.57 10.16 8.88 8.46 9.15 6.04 9.19 5.59 9.47 9.3 9.74 9.28 9.23 6.83 9.5 8.24 9.78 12.24 10.06 11.58 9.09 10.43 8.85 7.67 9.13 8.34 9.4 8.25 9.16 6.68 9.44 9.05 9.72 11.67 9.49 9.74 9.53 11.95 9.8 12.31 9.84 9.26 9.15 9.79 8.91 6.2 9.19 6.45 9.46 10.28 9.74 8.69 9.22 6.67 9.5 8.63 9.78 11.48 9.54 8.31 8.85 5.26 9.12 6.86 9.4 11.27 9.68 10.02 8.88 4.95 9.16 3.11 9.44 7.46 9.71 10.29 9.2 7.54 9.47 8.28 9.75 11.89 10.03 8.69 9.06 10.53 9.34 9.57 8.82 5.65 9.1 5.75 9.37 9.75 9.65 8.54 9.13 6.32 9.41 8.24 9.69 11.18 9.72 9.94 9.09 11.48 9.03 10.96 9.07 9.26 9.64 12.02 9.54 8.09 9.3 7.86 9.58 7.97 9.62 9.3 9.89 12.24 9.65 9.16 9.24 9.82 9.52 8.92 9.28 7.6 9.55 9.84 9.83 11.54 9.64 8.44 9.3 8.73 9.58 9.73 9.33 8.09 9.61 9.85 9.89 9.83 8.96 7.54 9.24 8.82 9.51 6.32 9.27 5.18 9.55 8.63 9.83 7.76 9.59 8.59 9.86 10.04 9.17 6.6 9.21 6.82 9.49 8.43 9.25 6.3 9.52 8.32 9.8 10.84 9.56 11.78 9.55 10.32 9.52 11.98 9.14 12.38 9.41 11.8 9.73 12.24 9.39 10.69 9.38 12.33 9.94 9.9 9.64 11.25 8.43 10.49 8.71 9.45 8.74 9.96 9.02 11.36 9.06 11.21 9.0 11.02 8.71 9.4 8.74 10.34 9.02 11.9 8.37 12.24 8.64 8.73 8.68 10.53 8.96 9.35 8.71 9.37 8.99 11.52 8.34 9.66 8.65 11.45 8.97 12.43 8.95 11.22 8.61 9.75 8.88 11.17 9.16 10.05 8.92 9.83 9.2 12.36 9.47 10.43 8.54 9.7 8.82 7.73 8.86 8.45 9.13 10.5 8.89 9.35 9.17 12.32 8.76 8.77 8.79 9.33 8.83 8.97 9.11 10.16 8.58 7.91 8.85 9.1 9.13 10.02 8.89 9.3 9.17 8.44 8.51 6.84 8.79 9.12 9.07 6.66 8.83 6.81 9.1 9.71 9.14 9.89 8.45 9.46 8.73 9.45 8.49 6.83 8.76 8.05 9.04 9.41 8.8 8.51 9.08 11.68 9.07 11.94 8.7 11.47 8.73 11.83 9.01 11.46 9.31 11.69 8.69 9.44 8.97 10.24 9.28 9.95 8.94 9.7 9.22 12.25 9.5 9.8 8.97 10.86 9.24 9.96 8.63 8.74 8.9 7.76 8.94 8.0 9.22 9.91 9.25 11.05 8.56 10.74 8.84 9.99 8.6 7.67 8.88 8.87 9.16 9.33 8.91 8.52 9.19 10.92 9.47 11.41 8.85 11.84 9.13 11.39 8.99 12.23 8.46 10.76 8.43 % patch dots follow 4.3 9.3 5 9.4 6.3 8.8 6.5 9.7 5.8 9.7 6 9.2 6 9.6 7.2 8.8 7.2 9 7.2 9.7 7.3 9.9 8 8.6 9 8.5 10.5 9.6 10.7 10 11 10.3 ] store % Actual dots plotted = 334 + patches. % 100 100 10 setgrid % only standalone 1.15 dup scale 10 10 showgrid 0.4 0.8 0.8 setrgbcolor 1 setlinecap 1 setlinejoin line3 0 0 mt 10 u 10 r 10 d 10 l 0.25 0.25 0.25 setrgbcolor gsave 0 0 mt 0 10 rlineto 10 0 rlineto 0 -10 rlineto closepath clip gsave -3.2 -0.8 translate 0.87 dup scale 0 2 sdat length 2 sub {/cposn exch store sdat cposn 1 add get sdat cposn get 1 0 0 setrgbcolor 0.2 setgray 0.9 settint 0.40 setgray mt dot } for grestore grestore /cstretch 0 store /sstretch 0.015 store black /font1 /Helvetica-Bold 0.9 gonzofont font1 5 -1.3 (amplitude) cc gsave -0.8 5 translate 90 rotate 0 0 (distortion) cc grestore ypos snap3 restore /ypos exch def } def %%%%%% /figure1 { /figadvance 10 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray -0.0 -2.6 translate % reposition on page % 0 0 10 setgrid already there % 33 14 showgrid /cstretch 0.02 def /sstretch 0.0 def /kern 0.1 def /yinc 1.0 def /red {0 settint} def /blue {0.67 settint} def /purple {0.75 settint} def /font0 /Helvetica-Bold [1.2 0 0 1 0 -0.2] gonzofont /font0 /Helvetica-bold [1 0 0 0.8 0 0 ] gonzofont /font1 /Helvetica 0.75 gonzofont /font4 /Helvetica 0.6 gonzofont /font3 /Helvetica-Bold 0.75 gonzofont /font2 /Helvetica-Oblique 0.75 gonzofont /font5 /Helvetica-Bold 1.1 gonzofont /font6 /Helvetica [2 0 0 1.4 0 0] gonzofont /font7 /Helvetica-Oblique 0.75 gonzofont /font8 /Symbol 0.75 gonzofont /font9 /Helvetica [.6 0 0 .6 -.15 .4] gonzofont /font- /Helvetica-Bold [0.4 0 0 0.55 0 0] gonzofont /kern 0.15 def /tabs [16.5] def /txtwide 29 def font1 /tabs [17.5] def font1 /yinc 0.9 def line1 bestgray black 22 6 mt 3 d 5 rx circ1 26 3 mt rarrow 21 6 mt 1 d 6 rx circ1 26 5 mt rarrow 20 6 mt 1.5 d 4 rx 2 ux 3 r circ1 26 6.5 mt rarrow 19 6 mt 2 d 5.5 rx 4 ux 2.5 r circ1 26 8 mt rarrow 17 10 mt 1 u 5 l 8 d 4 l circ1 9.5 3 mt rarrow % low priority 18 6 mt 1.5 d ground 17 6 mt 2.5 d 7 lx 1 u 2 l circ1 9.5 4.5 mt rarrow 16 6 mt 2 d 5.5 lx 2 u 2.5 l circ1 9.5 6 mt rarrow 15 6 mt 1.5 d 4 lx 3 u 3 l circ1 9.5 7.5 mt rarrow 14 6 mt 1 d 2.5 lx 4 u 3.5 l circ1 9.5 9 mt rarrow 21 10 mt 2 ux 3 r 2 d 3 r circ1 26 13 mt rarrow 20 10 mt 2.5 u 4.5 r 1 d 2.5 r circ1 26 11.5 mt rarrow 19 10 mt 3 u 8 r circ1 26 10 mt rarrow 18 10 mt 1.5 u circ1 % +5v 16 10 mt 3 ux circ1 16 12.3 mt darrow 15 10 mt 2 ux 7 l circ1 9.5 12 mt rarrow 14 10 mt 1.5 ux 2.5 l 1 d 3.5 l circ1 9.5 10.5 mt rarrow beige 14 6 moveto 18 (MS28D-05X) (IN1 IN0 XIN IN6 +5V /DA /DB /DC NC) (IN2 IN3 IN4 IN5 GND DA DB DC SYNC) dipdraw font4 22 10.65 (NC) cc font1 18 12 (+5V) cc font1 /overstrikeht 0.55 store 27.7 13 0.3 sub (Delta "A" complement) cl 27.7 11.5 0.3 sub (Delta "B" complement) cl 27.7 10 0.3 sub (Delta "C" complement) cl 27.7 8 0.3 sub (Delta "A" true output) cl 27.7 6.5 0.3 sub (Delta "B" true output) cl 27.7 5 0.3 sub (Delta "C" true output) cl 27.7 3 0.3 sub (Zero degrees sync) cl 16 14.7 (10 MHz per 60 Hz) cc 16 13.8 (input clock ref) cc 7.3 2.7 (high ~|jOR|j~ 0-100 amp bit 6) cr 7.3 4.2 (high ~|jOR|j~ 0-100 amp bit 5) cr 7.3 5.7 (high ~|jOR|j~ 0-100 amp bit 4) cr 7.3 7.2 (slew up ~|jOR|j~ 0-100 amp bit 3) cr 7.3 8.7 (slew down ~|jOR|j~ 0-100 amp bit 2) cr 7.3 10.2 (step up ~|jOR|j~ 0-100 amp bit 1) cr 7.3 11.7 (step down ~|jOR|j~ 0-100 amp bit 0) cr end ypos snap3 restore /ypos exch def } def %%%%%%%%%%%%%% /figure2 { /figadvance 18 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray line1 0 -1 translate % reposition on page % 0 0 10 setgrid already there % 33 14 showgrid /onecoil { 0 0 mt 1 pr 8 hcoil 0.9 r} store /delta {gsave translate gsave onecoil grestore gsave 60 rotate onecoil grestore gsave 4 6.928 translate -60 rotate onecoil grestore 0 0 mt circ1 4 7 mt circ1 8 0 mt circ1 grestore } store /box35 {gsave /callout exch store translate 0 -1.5 mt 2.5 pl 3 pu 5 pr 3 pd closepath gsave 0.8 setgray fill grestore gsave 0.33 setgray line3 stroke grestore black 0 0.1 callout cc grestore} store /font1 /Helvetica 0.8 gonzofont /font2 /Helvetica-Bold 1 gonzofont /hbd {gsave translate 0 2.5 mt 5 d ground 0 2.5 mt circ1 /yinc 0.9 store 0 0 mt 3 l 6 r 0 0 (half bridge\ndriver) box35 grestore }store font1 2 3 mt 3 l circ1 1 3 mt rarrow 4 3 mt 5 r 2 d 13 r 2 u 6 7 mt 7 l circ1 1 7 mt rarrow 10 11 mt 11 l circ1 1 11 mt rarrow 14 11 mt 4 r 1 d 11 7 mt 1 r 4 d 2 r 14 3 delta 4.5 3 hbd 8 7 hbd 11.5 11 hbd font2 -2.3 2.6 (DC) cc -2.3 6.6 (DA) cc -2.3 10.6 (DB) cc 14.5 7 (a) cc 21.4 7 (b) cc 18 1.7 (c) cc 3.5 5.3 (+v) cc 6.8 9.3 (+v) cc 10.4 13.3 (+v) cc 13.5 1.7 (TA) cc 23.3 1.7 (TC) cc 18 11.5 (TB) cc end ypos snap3 restore /ypos exch def } def %%%%%%% core defs for magsin plots %%%%%%% core defs for magsin plots /coredefs { /shakendelta28 [ [ [868 0 0 1730 0 0 0 868] 0.000000 0.0000000 3472 ] % shortened [ [103 1242 151 63 211 1001 698 3] 0.0439439 1.000650 3472 ] ] def /aa mark shakendelta28 {0 get 0 get 2 mul} forall ] store % double a /bb mark shakendelta28 {0 get 1 get} forall ] store /cc mark shakendelta28 {0 get 2 get} forall ] store /dd mark shakendelta28 {0 get 3 get} forall ] store /ee mark shakendelta28 {0 get 4 get} forall ] store /ff mark shakendelta28 {0 get 5 get} forall ] store /gg mark shakendelta28 {0 get 6 get} forall ] store /hh mark shakendelta28 {0 get 7 get 2 mul } forall ] store % double h % aa == bb == cc == dd == ee == ff == gg == hh == /amplitude 53 store /delaypattern [ (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) ] store /portpattern [ <2B> <07> <2B><2B> <2B> <2B> pop <07> <2B><69> <69><2B><69> <2B><69><2B> <07> <2B><69> <69><45> <07> <45><69><45> <69><45><69> <69><45> pop <07> <45> <45> <45><45> <07> <45> <64> <07> <86><86> <86> <86> pop <07> <86> <86> <86><86> <07> <86> ] store % 100 100 10 setgrid % 30 60 showgrid /hscale 30 3472 12 mul div store /vscale 4 store /phasea {gsave translate /port 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (10000000) exch mergestr 100 string cvs % dereference? dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store %%%%%%%%% /phaseb {gsave translate /port 1 store /prev false store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store %%%%%%%%% /phasec {gsave translate /port 2 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store /halfwave {gsave translate /port 3 store line1 1 0 0 setrgbcolor 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub cvi /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store % state == % nowat == % stall == nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%%% /AminusC {gsave translate /Cport 2 store /Aport 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Cport sub get 48 sub cvi 2 div /Cstate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Aport sub get 48 sub cvi 2 div /Astate exch store /nustate Astate Cstate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%% /BminusA {gsave translate /Bport 1 store /Aport 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Aport sub get 48 sub cvi 2 div /Astate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Bport sub get 48 sub cvi 2 div /Bstate exch store /nustate Bstate Astate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%% /CminusB {gsave translate /Cport 2 store /Bport 1 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Bport sub get 48 sub cvi 2 div /Bstate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Cport sub get 48 sub cvi 2 div /Cstate exch store /nustate Cstate Bstate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto } for stroke grestore} store } def %%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% /figure3 {/figadvance 10 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray line1 coredefs -3.8 -1.8 translate % position on page % 30 12 showgrid /vscale 3 store 1 0 1 setrgbcolor 1 1 1 setrgbcolor % nasty bug dont know why dribbles down 0 10.3 phaseb 1 0 1 setrgbcolor 0 9 phasea 0 0 phaseb 0 4.5 phasec 30 0 mt 3 u % patch end black /font2 /Helvetica-Bold 1 gonzofont -1 1 (DC) cr % we have a cc conflict!!!! -1 5.5 (DB) cr -1 10 (DA) cr % halfwave % AminusC % BminusA % CminusB end ypos snap3 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%% /figure4 {/figadvance 15 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray line1 coredefs -3 -0.5 translate % position on page % 30 12 showgrid /vscale 4 store %0 9 phasea 1 0 0 setrgbcolor 30 0 mt 3 u % patch end %0 0 phaseb %0 4.5 phasec 1 0 1 setrgbcolor 0 9.2 2 add AminusC 0 0.2 BminusA 0 4.7 1 add CminusB black /font2 /Helvetica-Bold 1 gonzofont /overstrikeht 0.85 store -1 0 (DC - DA) cr % we have a cc conflict!!!! -1 4.5 1 add (DB - DC) cr -1 9 2 add (DA - DB) cr % halfwave % AminusC % BminusA % CminusB end ypos snap3 restore /ypos exch def } def /figure5 { save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin /circ1b {gsave currentpoint newpath 0.20 0 360 arc % whitefill gsave beige 0.88 setgray fill grestore black line1 stroke grestore} def %for circle bestgray line1 coredefs -4.5 -1 translate % position on page % 30 12 showgrid /font2 /Helvetica-Bold 1 gonzofont /overstrikeht 0.70 store /yinc 1.2 store /anet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DA) cr % no cc here! -0.7 -0.5 (D|oB|o) cr font1 3.8 3.5 (phase a\noutput) cl grestore } store /bnet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DB) cr % no cc here! -0.7 -0.5 (D|oC|o) cr font1 3.8 3.5 (phase b\noutput) cl grestore } store /cnet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DC) cr % no cc here! -0.7 -0.5 (D|oA|o) cr font1 3.8 3.5 (phase c\noutput) cl grestore } store -2 0 mt 10.7 pu 33.2 pr 10.7 pd closepath 0.88 setgray fill black 1.5 3 anet 12 3 bnet 22.5 3 cnet font1 9.5 0.8 (All resistors 2.2K.) cl end ypos snap3 restore /ypos exch def } def /figureoneauto { /figadvance 13 store save /snap1a exch store xpos 8 add ypos figadvance sub translate beige figure1 snap1a restore /ypos ypos figadvance sub yinc sub store } store /figuretwoauto { /figadvance 13.5 store save /snap2a exch store xpos 8 add ypos figadvance sub translate beige figure2 snap2a restore /ypos ypos figadvance sub yinc sub store } store /figurethreeauto { /figadvance 11 store save /snap3a exch store xpos 8 add ypos figadvance sub translate beige figure3 snap3a restore /ypos ypos figadvance sub yinc sub store } store /figurethreeautox { save /snap3ax exch store beige 0 1000 translate figure3 snap3ax restore } store /figurefourauto { /figadvance 13 store save /snap4a exch store xpos 8 add ypos figadvance sub translate beige figure4 snap4a restore /ypos ypos figadvance sub yinc sub store } store /figurefiveauto { /figadvance 10 store save /snap5a exch store xpos 8 add ypos figadvance sub translate beige figure5 snap5a restore /ypos ypos figadvance sub yinc sub store } store /figure2x { 0.50 settint /font0 /StoneSans-Bold 6 gonzofont font0 0 1 1 setrgbcolor 10 3 (54) cc 20 25 showgrid line3 0 1 1 setrgbcolor [{-0.5 0 mt 20.5 r} 10 3] yrpt [{0 -0.5 mt 25.5 u} 10 3] xrpt 0 25 mt 20 r black 0 0 0 setrgbcolor 0 2 ex54 length 2 sub {/posn2 exch store ex54 posn2 get ex54 posn2 1 add get moveto dot} for 1 0 1 setrgbcolor 0 2 ex54good length 2 sub {/posn2 exch store ex54good posn2 get ex54good posn2 1 add get moveto dot} for 1 0.5 0 setrgbcolor ex54want 0 get ex54want 1 get mt dot 1 0 0 setrgbcolor ex54orig 0 get ex54orig 1 get mt dot /font1 /StoneSans-Bold 0.9 gonzofont font1 0.3 0.3 0.3 setrgbcolor 0 -1.5 (0.535) cc 10 -1.5 (0.540) cc 20 -1.5 (0.545) cc -0.9 0 0.3 sub (0.00%) cr -0.9 10 0.3 sub(0.05%) cr -0.9 20 0.3 sub (0.10%) cr % 11.55 18.2 (= raw quant) cl % 11.55 17.2 (= best neighbor) cl /font2 /StoneSans-Bold 1.1 gonzofont font1 10 -2.7 (Amplitude) cc gsave -5.2 10 translate 90 rotate 0 0 (Unfiltered THD 2|j-|j22)cc grestore /yinc 1.2 store 24.3 11.5 (Nearby\nquantized\nAmplitude 54\noptions) cc } store %%%%%%%%% figures for fun with fields %%%%% /emptyfield {save /mtsnap exch store gsave translate showblank { 0 0 mt fieldhi pu fieldwi pr fieldhi pd closepath aqua 0.85 setgray fill} if black 0.3 setlinewidth 0 -3.5 mt fieldhi 3 add u -0.5 0 mt fieldwi 1 add r fieldwi -3.5 mt fieldhi 3 add u /cstretch 0 store /sstretch 0 store /kern 1 store /font- /Symbol 8.5 gonzofont /font1 /Helvetica 8.5 gonzofont font- black 0 -13(|1(|jx|j=|-|j0|j)) cc fieldwi -13 (|1(|jx|j=|j|-p|j)) cc fieldwi 2 div fieldhi 4 add (|-f|1|j=|j1000|j|jsin|j(|jx|j) volts) cc fieldwi 2 div -13 (|1zero volts) cc gsave -5 fieldhi 2 div translate 90 rotate 0 0 (|1zero volts) cc grestore gsave fieldwi 12 add fieldhi 2 div translate 90 rotate 0 0 (|1zero volts) cc grestore grestore mtsnap restore} store /field [ [0 0.0 % shortened .0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 3.06152e-14 6.12303e-14 9.18455e-14 1.22461e-13] ] store /adjtint { 1000 sub abs 1000 div 0.66667 mul } store /plotfield {/sf exch store gsave translate sf dup scale field length /vsize exch store field 0 get length /hsize exch store 0 1 vsize 1 sub { /vpos exch store 0 1 hsize 1 sub { /hpos exch store vpos hpos moveto 1 pd 1 pr 1 pu closepath field vpos get hpos get adjtint 0.7 1 sethsbcolor fill } for % each horizontal pixel } for % each row grestore } store /w {setlinewidth} store /n {newpath} store /m {moveto} store /l {lineto} store /S {stroke} store /sc {setrgbcolor} store /equipot { 0.149994 w n 100 216 m 107 216 l 108 212.951 l 109 204.968 l { % shortened 104.988 208.47 l 103.99 208.411 l 102.991 208.366 l 101.991 208.337 l 100.991 208.322 l } pop S } store /grad { % shortened n 140 215 m 337.619 193.998 l 338.618 193.951 l 339.617 193.919 l S } store /figure1 { /fieldhi 117 store /fieldwi 241 store /showblank true store gsave 0.1 dup scale -35 5 emptyfield grestore} store /figure2 { -.5 -12 translate % adjust to page /showgrid {gsave ggray /vblocks exch def /hblocks exch def thingridlines setlinewidth aqua 0 1 1 setrgbcolor [{0 0 moveto 0 vblocks rlineto stroke} 1 hblocks 1 add] xrpt [{0 0 moveto hblocks 0 rlineto stroke} 1 vblocks 1 add] yrpt fatterborder { gsave newpath 0 0.96 blocksize div dtransform round idtransform setlinewidth pop 2 setlinecap 0 0 moveto hblocks 0 rlineto 0 vblocks rlineto hblocks neg 0 rlineto closepath stroke grestore} if fat5 { gsave newpath 0 0.48 blocksize div dtransform round idtransform setlinewidth pop mark {5 0 moveto 0 vblocks rlineto stroke} 5 hblocks 5 div cvi] xrpt mark {0 5 moveto hblocks 0 rlineto stroke} 5 vblocks 5 div cvi] yrpt grestore} if fatter10 { gsave newpath 0 0.96 blocksize div dtransform round idtransform setlinewidth pop mark {10 0 moveto 0 vblocks rlineto stroke} 10 hblocks 10 div cvi] xrpt mark {0 10 moveto hblocks 0 rlineto stroke} 10 vblocks 10 div cvi] yrpt grestore} if grestore} def 0 0 mt 20 pu 20 pr 20 pd closepath 0.5 1 1 setrgbcolor fill 0 1 0 setrgbcolor black 20 20 showgrid line3 0 0 1 setrgbcolor { 6 3 mt -2 10 rlineto 5 4 3 rlineto 4 -3 rlineto -2 -8 rlineto -2 -4 rlineto closepath stroke} pop line1 black -1 10 mt 22 r 12 -1 mt 22 u { line1 12 2 mt 12 u 12 14 mt 5 2.5 rlineto % right side -1 -11 rlineto 12 2 lineto stroke 12 14 mt -10 1.5 rlineto % left side 2 -10 rlineto 12 2 lineto stroke 2 15.5 mt % rear top 6 1.5 rlineto 17 16.5 lineto stroke } pop % by the panel 4 5.5 mt 2 15.5 lineto 12 14 lineto 12 2 lineto closepath 0.8 0.8 1 setrgbcolor fill 12 2 mt 12 14 lineto 17 16.5 lineto 16 5.5 lineto closepath 0.65 0.65 1 setrgbcolor fill 2 15.5 mt % top panel 8 17 lineto 17 16.5 lineto 12 14 lineto closepath 0.53 0.53 1 setrgbcolor fill 1 0 0 setrgbcolor % red vectors line1 3.1 10 mt 1.22 20 lineto stroke 3.1 10 mt 3.1 20 lineto stroke 16.45 10 mt 16.42 20 lineto stroke 16.45 10 mt 17.3 20 lineto stroke black /cstretch 0 store /sstretch 0 store /font1 /StoneSans 0.9 gonzofont font1 /yinc 1 store -2.5 10.3 (tilt\naxis) cc 17.7 0.7 (image) cc 9.7 4.5(subject) cc 3.1 20 mt dot 1.22 20 mt dot gsave 3.1 0.3 add 20.8 translate gsave 90 rotate 0 0 (newtopleft) cl grestore grestore gsave 1.2 0.3 add 20.8 translate gsave 90 rotate 0 0 (oldtopleft) cl grestore grestore 17.3 20 mt dot 16.42 20 mt dot gsave 17.5 0.3 add 20.8 translate gsave 90 rotate 0 0 (oldtopright) cl grestore grestore gsave 16.25 0.3 add 20.8 translate gsave 90 rotate 0 0 (newtopright) cl grestore grestore 12 22.5 (neutral\naxis) cc } store /figure3 { /fieldhi 117 store /fieldwi 241 store gsave 0.1 dup scale -35 5 1 plotfield -100 -100 translate -35 5 translate equipot grestore /showblank false store gsave 0.1 dup scale -35 5 emptyfield grestore} store /figure4 { /fieldhi 117 store /fieldwi 241 store gsave 0.1 dup scale -35 5 1 plotfield -100 -100 translate -35 5 translate equipot grad grestore /showblank false store gsave 0.1 dup scale -35 5 emptyfield grestore} store %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /burpwide 29.5 store /burplebox3 {save /burp1 exch store xpos ypos translate -1 .2 mt 3.5 yinc mul .4 add pd burpwide pr 3.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox2 {save /burp1 exch store xpos ypos translate -1 .2 mt 2.5 yinc mul .4 add pd burpwide pr 2.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox2.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 3 yinc mul .4 add pd burpwide pr 3 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox4 {save /burp1 exch store xpos ypos translate -1 .2 mt 4.5 yinc mul .4 add pd burpwide pr 4.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox4.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 5 yinc mul .4 add pd burpwide pr 5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox5w {save /burp1 exch store xpos ypos translate -1 .2 mt 5.5 yinc mul .4 add pd burpwide pr 5.5 yinc mul .4 add pu closepath 0.9 setgray fill true {special5 } if burp1 restore } def /burpcom {save /burpx exch store /bht exch store save /burp1 exch store xpos ypos translate -1 .2 mt bht yinc mul .4 add pd burpwide pr bht yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore} store /burpwidew 32 store /burpcomw {save /burpx exch store /bht exch store save /burp1 exch store xpos 1 sub ypos translate 0 .2 mt bht yinc mul .4 add pd burpwidew pr bht yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore} store /burplebox3.5 {4 burpcom} store /burplebox5 {5.5 burpcom} store /burplebox5.5 {6 burpcom} store /burplebox6 {6.5 burpcom} store /burplebox6.5 {7 burpcom} store /burplebox7 {7.5 burpcom} store /burplebox7.5 {8 burpcom} store /burplebox8 {8.5 burpcom} store /burplebox8.5 {9 burpcom} store /burplebox9 {9.5 burpcom} store /burplebox9.5 {10 burpcom} store /burplebox10 {10.5 burpcom} store /burplebox10.5 {11 burpcom} store /burplebox11 {11.5 burpcom} store /burplebox11.5 {12 burpcom} store /burplebox12 {12.5 burpcom} store /burplebox11w {11.5 burpcomw} store /burplebox12.5 {13 burpcom} store /burplebox13 {13.5 burpcom} store /burplebox13.5 {14 burpcom} store /burplebox14 {14.5 burpcom} store /burplebox14.5 {15 burpcom} store /burplebox15{15.5 burpcom} store /burplebox15.5{16 burpcom} store /burplebox16 {16.5 burpcom} store /burplebox16.5 {17 burpcom} store /burplebox18 {18.5 burpcom} store /burplebox18.5 {19 burpcom} store /burplebox19 {19.5 burpcom} store /burplebox21.5 {22 burpcom} store /burplebox22{22.5 burpcom} store /burplebox24{24.5 burpcom} store /burplebox25{25.5 burpcom} store /burplebox25.5{26 burpcom} store /burplebox27{27.5 burpcom} store /burplebox28 {28.5 burpcom} store /burplebox28.5 {29 burpcom} store /burplebox34 {34.5 burpcom} store /burplebox38 {38.5 burpcom} store /burplebox38.5{39 burpcom} store /burplebox40{40.5 burpcom} store /burplebox40.5{41 burpcom} store /burplebox41.5{42 burpcom} store /burplebox42 {42.5 burpcom} store /burplebox42.5{43 burpcom} store % nearly a full page /burplebox43 {43.5 burpcom} store /burplebox34w{34.5 burpcomw} store /burplebox34.5w{35 burpcomw} store /burplebox38w{38.5 burpcomw} store /burplebox38.5w{39 burpcomw} store /burplebox40w{40.5 burpcomw} store /burplebox17 {save /burp1 exch store xpos ypos translate -1 .2 mt 17.5 yinc mul .4 add pd burpwide pr 17.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox20 {save /burp1 exch store xpos ypos translate -1 .2 mt 20.5 yinc mul .4 add pd burpwide pr 20.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox23 {save /burp1 exch store xpos ypos translate -1 .2 mt 23.5 yinc mul .4 add pd burpwide pr 23.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox26.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 27 yinc mul .4 add pd burpwide pr 27 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox30 {save /burp1 exch store xpos ypos translate -1 .2 mt 30.5 yinc mul .4 add pd burpwide pr 30.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox36 {save /burp1 exch store xpos ypos translate -1 .2 mt 36.5 yinc mul .4 add pd burpwide pr 36.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def %%%%%%%%%%% figure 1 routine % autopositions on box6 %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%% TWO PATTERNS %%%%%%%%%%%%%% /ivoryrndcolor [230 230 205 40] store % random pattern colors [red blue green variance ] /magentarndcolor [230 100 230 120]store /makepatternstrings { [230 210 190 80] buildpixels magentarndcolor /accentpatstring exch store ivoryrndcolor buildpixels makeimagestring /bodypatstring exch store } store /burppatstrings { ivoryrndcolor buildpixels makeimagestring /bodypatstring exch store magentarndcolor buildpixels makeimagestring /accentpatstring exch store } store /DeviceRGB setcolorspace % pick color model /hpixels 50 store % size of pattern image /vpixels 50 store /issize hpixels vpixels mul store % makestring converts a stack top array into a string... /makestring {dup length string dup /NullEncode filter 3 -1 roll {1 index exch write} forall pop} def % /buildpixels makes three nearby colors given [r b g texture] all 0-255 integers /buildpixels {aload pop /texture exch store /b0 exch store /g0 exch store /r0 exch store 123 srand /r1 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g1 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b1 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /r2 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g2 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b2 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /r3 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g3 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b3 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store } store % /makeimagestring creates a sting usable for a pattern image /makeimagestring { 12345 srand % make repeatable /iarray mark issize { r1 g1 b1} repeat ] store % fill all with color 1 issize 2 div cvi { iarray issize % fill half with color 2 random 3 mul cvi [ r2 g2 b2 ] putinterval} repeat issize 2 div cvi { iarray issize % fill third with color 3 random 3 mul cvi [ r3 g3 b3 ] putinterval} repeat iarray makestring } store % /rndimage shows the random string as a patternable image /bodyrandimage { gsave 5 dup scale << % start image dicationary /ImageType 1 % always one /Width hpixels % width in pixels /Height vpixels % height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource bodypatstring % proc to get string data /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image grestore } def /accentrandimage { gsave 5 dup scale << % start image dicationary /ImageType 1 % always one /Width hpixels % width in pixels /Height vpixels % height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource accentpatstring % proc to get string data /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image grestore } def % using a separate pattern dictionary for each pattern... /bodypatdict << /PatternType 1 % Tiling pattern /PaintType 1 % Colored /TilingType 1 /BBox [0 0 50 50] /XStep 5 /YStep 5 /PaintProc { begin bodyrandimage end} >> store /accentpatdict << /PatternType 1 % Tiling pattern /PaintType 1 % Colored /TilingType 1 /BBox [0 0 50 50] /XStep 5 /YStep 5 /PaintProc { begin accentrandimage end} >> store /burpbackmain { save /snapbb exch store save /snapb exch store % show the body background bodypatdict matrix % Identity matrix makepattern % Instantiate the pattern /bodypat exch def 4 0 % for the actual slide size 12 8 /Pattern setcolorspace bodypat setcolor rectfill % Fill rectangle with pattern snapb restore 4 0 12 8 line1 black rectstroke save /snapy exch store % show the accent accentpatdict matrix % Identity matrix makepattern % Instantiate the pattern /accentpat exch def 18.5 0 12 8 4 copy /Pattern setcolorspace accentpat setcolor rectfill % Fill rectangle with pattern snapy restore 18.5 0 12 8 line1 black rectstroke snapbb restore } store /figure3x {save /snap3 exch store translate % 34 8 showgrid makepatternstrings burppatstrings % burpbackstrings burpbackmain snap3 restore } store %%%%%%%%%%%%%%% end figure3 %%%%%%%%%%%% first special plot /special1code { /a01 [ 11.98757334830098 % p1 delay 0.02494857340377088 % p1 width 11.96309297293453 % p2 delay 0.04880748072357122 % p2 width 11.940266741737353 % p3 delay 0.07053366579209097 % p3 width 11.920110003436285 % p4 delay 0.08917718733052737 % p4 width 11.903448622759931 % p5 delay 0.10392320715383363 % p5 width 11.890997400038934 % p6 delay 0.1141272527930397 % p6 width 11.883303463712295 % p7 delay 0.11934332976518647 % p7 width 5.940346750117669 % quadrant delay ] store /a10 [ 11.870255884662251 % p1 delay 0.24926326067621396 % p1 width 11.627261913532986 % p2 delay 0.48772075225425126 % p2 width 11.401006709297277 % p3 delay 0.7050052291468631 % p3 width 11.201126478014806 % p4 delay 0.8916211348287959 % p4 width 11.036121661040383 % p5 delay 1.0393583630906704 % p5 width 10.912994009526542 % p6 delay 1.1416713778561558 % p6 width 10.836964879593466 % p7 delay 1.1939991529573461 % p7 width 5.405629193521989 % quadrant delay ] store /a20 [ 11.730827315951456 % p1 delay 0.4971341380973975 % p1 width 11.247686685343746 % p2 delay 0.9732376712143491 % p2 width 10.798693242131715 % p3 delay 1.407947044520391 % p3 width 10.402477789378082 % p4 delay 1.78228682672421 % p4 width 10.075528131993294 % p5 delay 2.079475909290011 % p5 width 9.831551570148512 % p6 delay 2.285806430413743 % p6 width 9.680871958761386 % p7 delay 2.391516582063389 % p7 width 4.8149587039683155 % quadrant delay ] store /a30 [ 11.582072392748948 % p1 delay 0.7421737945018947 % p1 width 10.862633911787377 % p2 delay 1.454218311923288 % p2 width 10.194732255409651 % p3 delay 2.106545777255711 % p3 width 9.605233324537401 % p4 delay 2.6708278536717955 % p4 width 9.118304754762583 % p5 delay 3.1210612368032926 % p5 width 8.754459346379754 % p6 delay 3.435090920436508 % p6 width 8.529472562792705 % p7 delay 3.5965061939786693 % p7 width 4.226667363010421 % quadrant delay ] store /a40 [ 11.424050411047465 % p1 delay 0.9828418379051129 % p1 width 10.473248533619292 % p2 delay 1.9280479848577236 % p2 width 9.590640663430097 % p3 delay 2.7980351182823426 % p3 width 8.810545720192863 % p4 delay 3.555566231331163 % p4 width 8.164652806450142 % p5 delay 4.164668715768244 % p5 width 7.680713770893433 % p6 delay 4.592711162444033 % p6 width 7.380758970713202 % p7 delay 4.813962276129942 % p7 width 3.6395557969349425 % quadrant delay ] store /a50 [ 11.25647168216318 % p1 delay 1.2174139856738683 % p1 width 10.080431345631026 % p2 delay 2.391612373063623 % p2 width 8.987846411116894 % p3 delay 3.4787553647023585 % p3 width 8.01966536065963 % p4 delay 4.433803253978574 % p4 width 7.214999377113287 % p5 delay 5.210430981795014 % p5 width 6.609527274825396 % p6 delay 5.762766698554145 % p6 width 6.232831441964791 % p7 delay 6.050997667516469 % p7 width 3.0524467812417413 % quadrant delay ] store /a53 [ 11.204229246524123 % p1 delay 1.2863028469519246 % p1 width 9.962015674530373 % p2 delay 2.528117843985992 % p2 width 8.807469507353026 % p3 delay 3.680145761308111 % p3 width 7.783358489290968 % p4 delay 4.695379940110421 % p4 width 6.930993065963889 % p5 delay 5.5244810879620445 % p5 width 6.288586696196958 % p6 delay 6.117000009644471 % p6 width 5.888323429144677 % p7 delay 6.427466502066167 % p7 width 2.876129898966852 % quadrant delay ] store /a60 [ 11.078495962518918 % p1 delay 1.4438411449625086 % p1 width 9.684772040454877 % p2 delay 2.840939034126027 % p2 width 8.38774096372643 % p3 delay 4.143446978421139 % p3 width 7.234097294409224 % p4 delay 5.300789342760972 % p4 width 6.270187484640822 % p5 delay 6.2573120579578045 % p5 width 5.540415121300725 % p6 delay 6.9509377594411745 % p6 width 5.083782352079723 % p7 delay 7.31917029639942 % p7 width 2.4640721668002356 % quadrant delay ] store /a70 [ 10.888278735987464 % p1 delay 1.6594599780251222 % p1 width 9.286332677429444 % p2 delay 3.270497867115676 % p2 width 7.791694139706859 % p3 delay 4.783840563470704 % p3 width 6.455843532587245 % p4 delay 6.147367771354908 % p4 width 5.331869368850619 % p5 delay 7.300805550943892 % p5 width 4.473484564450537 % p6 delay 8.165497800155037 % p6 width 3.9315873351224724 % p7 delay 8.640550109600042 % p7 width 1.8728900051999772 % quadrant delay ] store /a80 [ 10.681702836852158 % p1 delay 1.8602538062958054 % p1 width 8.88398269670934 % p2 delay 3.6714981402848607 % p2 width 7.200946234572324 % p3 delay 5.385275030570618 % p3 width 5.687867904890517 % p4 delay 6.9536645196485765 % p4 width 4.403487202517624 % p5 delay 8.324602905316311 % p5 width 3.4104122823979494 % p6 delay 9.417450259887687 % p6 width 2.774084338047487 % p7 delay 10.068107274017336 % p7 width 1.2766645679914034 % quadrant delay ] store /a90 [ 10.447373907519674 % p1 delay 2.038123534960869 % p1 width 8.472609797490058 % p2 delay 4.0258541900581655 % p2 width 6.615791805649657 % p3 delay 5.91534811864263 % p3 width 4.935247854465985 % p4 delay 7.666864442425741 % p4 width 3.4934960493166684 % p5 delay 9.260584158941057 % p5 width 2.358772151850779 % p6 delay 10.696787617357046 % p6 width 1.6101420251774101 % p7 delay 11.792019752288254 % p7 width 0.6709845938560051 % quadrant delay ] store /a95 [ 10.307313139895288 % p1 delay 2.111222840209404 % p1 width 8.256837177571334 % p2 delay 4.169598534647832 % p2 width 6.323664766096179 % p3 delay 6.124919743159786 % p3 width 4.567759372280754 % p4 delay 7.93736307227887 % p4 width 3.052826978493542 % p5 delay 9.604367560734132 % p5 width 1.8471062124079367 % p6 delay 11.250122874450298 % p6 width 1.0294512420668695 % p7 delay 13.056647531415762 % p7 width 0.36079895429200803 % quadrant delay ] store /a96 [ 10.275153279505902 % p1 delay 2.1233556309882146 % p1 width 8.2115482104066 % p2 delay 4.1930336081984905 % p2 width 6.264803529331843 % p3 delay 6.157765833137692 % p3 width 4.495281237426013 % p4 delay 7.976346292010689 % p4 width 2.9669207635656676 % p5 delay 9.646432050857882 % p5 width 1.7477032094150075 % p6 delay 11.320166050312238 % p6 width 0.9148247359680965 % p7 delay 13.409077457751365 % p7 width 0.2975881111242984 % quadrant delay ] store /a97 [ 10.240457024341477 % p1 delay 2.134077471317074 % p1 width 8.164867772841955 % p2 delay 4.213452442998779 % p2 width 6.205523779081837 % p3 delay 6.185452328837567 % p3 width 4.423234605472523 % p4 delay 8.006618220218015 % p4 width 2.8821971876470442 % p5 delay 9.672069264487952 % p5 width 1.6500883956263123 % p6 delay 11.355113654260407 % p6 width 0.8016574526230471 % p7 delay 13.831443290493283 % p7 width 0.23374710975272705 % quadrant delay ] store /a98 [ 10.201940773921007 % p1 delay 2.1427535621580062 % p1 width 8.1160304405589 % p2 delay 4.229503836724113 % p2 width 6.145502859365315 % p3 delay 6.205687104545131 % p3 width 4.351688442224891 % p4 delay 8.024338941005154 % p4 width 2.7990882078968866 % p5 delay 9.67371438320096 % p5 width 1.555079224439453 % p6 delay 11.330237907918856 % p6 width 0.69116413541866 % p7 delay 14.364207461243552 % p7 width 0.169062719379113 % quadrant delay ] store /a99 [ 10.156863627959598 % p1 delay 2.1480428640811766 % p1 width 8.06339164056924 % p2 delay 4.238341714779558 % p2 width 6.0840316757476 % p3 delay 6.213675963725404 % p3 width 4.280754974385665 % p4 delay 8.02161284750413 % p4 width 2.718452103604484 % p5 delay 9.636460505287125 % p5 width 1.4642999953711353 % p6 delay 11.197329413972475 % p6 width 0.5860923925256714 % p7 delay 15.087472750976061 % p7 width 0.10317752951067405 % quadrant delay ] store /a100 [ 10.097664622565073 % p1 delay 2.146284244870163 % p1 width 8.002396397096308 % p2 delay 4.23222417093767 % p2 width 6.019120165289753 % p3 delay 6.1964902984829 % p3 width 4.21068681625524 % p4 delay 7.977592739007122 % p4 width 2.6425485752095525 % p5 delay 9.523271990574841 % p5 width 1.3819874635530311 % p6 delay 10.855567612314722 % p6 width 0.4941631819604595 % p7 delay 16.184573443763554 % p7 width 0.03542827811961047 % quadrant delay ] store /range [ (01) (10) (20) (30) (40) (50) (53) (60) (70) (80) (90) (95)(96)(97) (98)(99)(100) ] store /procit1 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 13 get 2.5 mul lineto } def /procit2 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 11 get 2.5 mul lineto } def /procit3 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 9 get 2.5 mul lineto } def /procit4 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 7 get 2.5 mul lineto } def /procit5 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 5 get 2.5 mul lineto } def /procit6 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit7 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit1d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 12 get 2.5 mul lineto } def /procit2d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 10 get 2.5 mul lineto } def /procit3d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 8 get 2.5 mul lineto } def /procit4d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit5d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit6d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit7d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit8d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 14 get 2.5 mul lineto } def % 40 100 10 setgrid 40 40 showgrid line1 0 30 mt range {procit7d} forall 40 0 lineto 0 0 lineto closepath 0 settint 0.8 setgray fill 0 30 mt range {procit6d} forall 40 0 lineto 0 0 lineto closepath 0.1 settint 0.8 setgray fill 0 30 mt range {procit5d} forall 40 0 lineto 0 0 lineto closepath 0.2 settint 0.8 setgray fill 0 30 mt range {procit4d} forall 40 0 lineto 0 0 lineto closepath 0.27 settint 0.8 setgray fill 0 30 mt range {procit3d} forall 40 0 lineto 0 0 lineto closepath 0.43 settint 0.8 setgray fill 0 30 mt range {procit2d} forall 40 0 lineto 0 0 lineto closepath 0.5 settint 0.8 setgray fill 0 30 mt range {procit1d} forall 40 0 lineto 0 0 lineto closepath 0.6 settint 0.8 setgray fill 0 15 mt range {procit8d} forall 40 0 lineto 0 0 lineto closepath 0.7 settint 0.8 setgray fill 0 0 mt range {procit1} forall 40 0 lineto closepath 0.6 settint 0.6 setgray fill 0 0 mt range {procit2} forall 40 0 lineto closepath 0.5 settint 0.6 setgray fill 0 0 mt range {procit3} forall 40 0 lineto closepath 0.43 settint 0.6 setgray fill 0 0 mt range {procit4} forall 40 0 lineto closepath 0.27 settint 0.6 setgray fill 0 0 mt range {procit5} forall 40 0 lineto closepath 0.2 settint 0.6 setgray fill 0 0 mt range {procit6} forall 40 0 lineto closepath 0.1 settint 0.6 setgray fill 0 0 mt range {procit7} forall 40 0 lineto closepath 0 settint 0.6 setgray fill black 0 0 mt range {procit1} forall stroke 0 0 mt range {procit2} forall stroke 0 0 mt range {procit3} forall stroke 0 0 mt range {procit4} forall stroke 0 0 mt range {procit5} forall stroke 0 0 mt range {procit6} forall stroke 0 0 mt range {procit7} forall stroke 0 30 mt range {procit1d} forall 0 30 mt range {procit2d} forall 0 30 mt range {procit3d} forall stroke 0 30 mt range {procit4d} forall stroke 0 30 mt range {procit5d} forall stroke 0 30 mt range {procit6d} forall stroke 0 30 mt range {procit7d} forall stroke 0 15 mt range {procit8d} forall stroke 0.3 0.3 0.3 setrgbcolor line3 1 setlinecap 1 setlinejoin 0 0 mt 40 u 40 r 40 d 40 l [{ 0 0 mt 0.4 l} 10 5 ] yrpt [{ 40 0 mt 0.4 r} 10 5 ] yrpt [{ 0 0 mt 0.4 d} 10 5 ] xrpt [{ 0 40 mt 0.4 u} 10 5 ] xrpt /cstretch 0.02 store /sstretch 0 store /font0 /StoneSans-Bold 1.5 gonzofont /font1 /StoneSans-Bold 1.2 gonzofont /font2 /StoneSans-Bold 1 gonzofont /font: /StoneSans-Bold [0.6 0 0 0.6 0 0.6] gonzofont /font; /StoneSans-Bold [1.5 0 0 1.5 0 0.2] gonzofont /yinc 2 store font0 20 43.7 (BEST EFFICIENCY N |;=|0 28\nMAGIC SINEWAVE) cc font1 /yinc 1.5 store 0 -2.2 (0.0) cc 20 -2.2 (0.5) cc 40 -2.2 (1.0)cc 20 -4.3 (AMPLITUDE) cc 41 -0.5 (0) cl 41 9.5 (4) cl 41 19.5 (8) cl 41 29.5 (12) cl 41 39.5 (16) cl 45.5 21 (DELAY\nTIME IN\nDEGREES) cc font2 26.5 1.2 (PULSE WIDTHS) cc 1.5 17 (PULSE DELAYS) cl 2.6 32.6 (0|:o) cc 27.4 32.6 (90|:o) cc % generate actual magic sinewave /makemagic {gsave translate 0.25 dup scale line3 /ht 17 store /dht 6 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt a50 0 get pr 0 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add 0 mt a50 2 get pr 0.1 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add 0 mt a50 4 get pr 0.2 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add 0 mt a50 6 get pr 0.3 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add 0 mt a50 8 get pr 0.4 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add 0 mt a50 10 get pr 0.5 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add 0 mt a50 12 get pr 0.6 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add a50 13 get add 0 mt a50 14 get pr 0.7 settint 0.8 setgray stroke %% pulses a50 0 get 0 mt ht pu 0 a50 1 get pr ht pd closepath 0 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add 0 mt ht pu 0 a50 3 get pr ht pd closepath 0.1 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add 0 mt ht pu 0 a50 5 get pr ht pd closepath 0.2 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add 0 mt ht pu 0 a50 7 get pr ht pd closepath 0.3 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add 0 mt ht pu 0 a50 9 get pr ht pd closepath 0.4 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add 0 mt ht pu 0 a50 11 get pr ht pd closepath 0.5 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add 0 mt ht pu 0 a50 13 get pr ht pd closepath 0.6 settint 0.6 setgray fill 1 setlinecap 1 setlinejoin black 0 0 mt a50 0 get 0 rlineto 0 ht pu a50 1 get 0 rlineto 0 ht pd a50 2 get 0 rlineto 0 ht pu a50 3 get 0 rlineto 0 ht pd a50 4 get 0 rlineto 0 ht pu a50 5 get 0 rlineto 0 ht pd a50 6 get 0 rlineto 0 ht pu a50 7 get 0 rlineto 0 ht pd a50 8 get 0 rlineto 0 ht pu a50 9 get 0 rlineto 0 ht pd a50 10 get 0 rlineto 0 ht pu a50 11 get 0 rlineto 0 ht pd a50 12 get 0 rlineto 0 ht pu a50 13 get 0 rlineto 0 ht pd a50 14 get 0 rlineto 0.45 setlinewidth stroke grestore} def 3.5 33 makemagic } store % end special1code definition %%%%%%%%%%% special2 code /special2code { /ad01 [ 7.434338157133027 % delay a=60-p5e 0.11880195485247924 % delay b=p5e-p5s 0.019577960879085587 % delay c=p1e-p1s 14.855161666700834 % delay d=p2s-p1e 0.021983040440492374 % delay e=p2e-p2s 0.0911673899925809 % delay f=p3s-p2e 0.0353778304366692 % delay g=p3e-p3s 7.4235919995647634 % delay h=30-p3e ] store /ad10 [ 6.840486668588909 % delay a=60-p5e 1.1877031146444991 % delay b=p5e-p5s 0.19606479817654332 % delay c=p1e-p1s 13.542825252098737 % delay d=p2s-p1e 0.1524725715290529 % delay e=p2e-p2s 0.9104569599226266 % delay f=p3s-p2e 0.4224088615298953 % delay g=p3e-p3s 6.7475817735097365 % delay h=30-p3e ] store /ad20 [ 6.179615738852249 % delay a=60-p5e 2.368314508230462 % delay b=p5e-p5s 0.39486570406405263 % delay c=p1e-p1s 12.090328683781834 % delay d=p2s-p1e 0.2773208755122525 % delay e=p2e-p2s 1.8107046591154443 % delay f=p3s-p2e 0.8802494355140809 % delay g=p3e-p3s 5.998600394929625 % delay h=30-p3e ] store /ad30 [ 5.51798715656065 % delay a=60-p5e 3.537987411554724 % delay b=p5e-p5s 0.5996610353231375 % delay c=p1e-p1s 10.6414917563349 % delay d=p2s-p1e 0.378916570008613 % delay e=p2e-p2s 2.6949373104326213 % delay f=p3s-p2e 1.3768763200109077 % delay g=p3e-p3s 5.252142439774445 % delay h=30-p3e ] store /ad40 [ 4.8560795807034935 % delay a=60-p5e 4.692317283738298 % delay b=p5e-p5s 0.8138114048538583 % delay c=p1e-p1s 9.195452323744191 % delay d=p2s-p1e 0.46036801366636126 % delay e=p2e-p2s 3.5594981265840886 % delay f=p3s-p2e 1.9150363136688284 % delay g=p3e-p3s 4.50743695304088 % delay h=30-p3e ] store /ad50 [ 4.194298075500072 % delay a=60-p5e 5.825866502969745 % delay b=p5e-p5s 1.0408488460292488 % delay c=p1e-p1s 7.751463747608284 % delay d=p2s-p1e 0.5238895562340744 % delay e=p2e-p2s 4.403346953313516 % delay f=p3s-p2e 2.496487356236706 % delay g=p3e-p3s 3.7637989621083534 % delay h=30-p3e ] store /ad53 [ 3.995843046736013 % delay a=60-p5e 6.160868086216446 % delay b=p5e-p5s 1.112006440311525 % delay c=p1e-p1s 7.318567062952312 % delay d=p2s-p1e 0.5397256759732585 % delay e=p2e-p2s 4.652707315620958 % delay f=p3s-p2e 2.679463155973238 % delay g=p3e-p3s 3.5408192162162493 % delay h=30-p3e ] store /ad60 [ 3.5330039078836606 % delay a=60-p5e 6.9314513603008905 % delay b=p5e-p5s 1.2842465239317846 % delay c=p1e-p1s 6.308872401421397 % delay d=p2s-p1e 0.5713975364200223 % delay e=p2e-p2s 5.228837780084575 % delay f=p3s-p2e 3.1216051264200075 % delay g=p3e-p3s 3.0205853635376627 % delay h=30-p3e ] store /ad70 [ 2.8725257224432425 % delay a=60-p5e 7.998916501222098 % delay b=p5e-p5s 1.5460427838912807 % delay c=p1e-p1s 4.8671218102361 % delay d=p2s-p1e 0.6062046544537196 % delay e=p2e-p2s 6.042997615507133 % delay f=p3s-p2e 3.789041064453741 % delay g=p3e-p3s 2.2771498477926854 % delay h=30-p3e ] store /ad80 [ 2.2131268407607223 % delay a=60-p5e 9.012727944067371 % delay b=p5e-p5s 1.8200962344110607 % delay c=p1e-p1s 3.4258327180993433 % delay d=p2s-p1e 0.6400219482894229 % delay e=p2e-p2s 6.85987852874419 % delay f=p3s-p2e 4.495547368289273 % delay g=p3e-p3s 1.532768417338616 % delay h=30-p3e ] store /ad90 [ 1.55474755544018 % delay a=60-p5e 9.946227643338275 % delay b=p5e-p5s 2.048752785780998 % delay c=p1e-p1s 1.9853102905593687 % delay d=p2s-p1e 0.736140589142309 % delay e=p2e-p2s 7.705915111477708 % delay f=p3s-p2e 5.236535369142075 % delay g=p3e-p3s 0.7863706551190859 % delay h=30-p3e ] store /ad95 [ 1.225355348586767 % delay a=60-p5e 10.367111550363887 % delay b=p5e-p5s 2.0303138224619843 % delay c=p1e-p1s 1.2665437513423114 % delay d=p2s-p1e 0.9241283097125574 % delay e=p2e-p2s 8.155346335065047 % delay f=p3s-p2e 5.619630049711802 % delay g=p3e-p3s 0.4115708327556433 % delay h=30-p3e ] store /ad98 [ 1.026684367555248 % delay a=60-p5e 10.596415552349142 % delay b=p5e-p5s 1.807508982542501 % delay c=p1e-p1s 0.837605401539733 % delay d=p2s-p1e 1.2493523058395936 % delay e=p2e-p2s 8.441202830348274 % delay f=p3s-p2e 5.855882255842914 % delay g=p3e-p3s 0.18534830398259316 % delay h=30-p3e ] store /ad100 [ 0.8921862350266565 % delay a=60-p5e 10.732271751681054 % delay b=p5e-p5s 1.3169014782635031 % delay c=p1e-p1s 0.5554591355065241 % delay d=p2s-p1e 1.8052854865738012 % delay e=p2e-p2s 8.644568525896716 % delay f=p3s-p2e 6.020358566571353 % delay g=p3e-p3s 0.032968820480391514 % delay h=30-p3e ] store /range [ (01) (10) (20) (30) (40) (50) (53) (60) (70) (80) (90) (95) (98)(100) ] store /procit1 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit2 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit3 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit4 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 5 get 2.5 mul lineto } def /procit5 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit6 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit7 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit1d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit2d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit3d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 7 get 2.5 mul lineto } def /procit4d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit5d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit6d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit7d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit8d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 14 get 2.5 mul lineto } def % 40 100 10 setgrid 40 40 showgrid line1 % delays 0 37.5 mt range {procit2d} forall 40 0 lineto 0 0 lineto closepath 0.15 settint 0.8 setgray fill 0 18.75 mt range {procit1d} forall 40 0 lineto 0 0 lineto closepath 0 settint 0.8 setgray fill 0 18.75 mt range {procit3d} forall 40 0 lineto 0 0 lineto closepath 0.3 settint 0.8 setgray fill % pulses 0 0 mt range {procit1} forall 40 0 lineto 0 0 lineto closepath 0.0 settint 0.6 setgray fill 0 0 mt range {procit4} forall 40 0 lineto 0 0 lineto closepath 0.5 settint 0.6 setgray fill 0 0 mt range {procit5} forall 40 0 lineto 0 0 lineto closepath 0.6 settint 0.6 setgray fill 0 0 mt range {procit2} forall 40 0 lineto 0 0 lineto closepath 0.15 settint 0.6 setgray fill 0 0 mt range {procit3} forall 40 0 lineto 0 0 lineto closepath 0.3 settint 0.6 setgray fill black line1 0 18.75 mt range {procit1d} forall stroke 0 37.5 mt range {procit2d} forall stroke 0 18.75 mt range {procit3d} forall stroke stroke % width outlines 0 0 mt range {procit1} forall stroke 0 0 mt range {procit2} forall stroke 0 0 mt range {procit3} forall stroke 0 0 mt range {procit4} forall stroke 0 0 mt range {procit5} forall stroke 0.3 0.3 0.3 setrgbcolor line3 1 setlinecap 1 setlinejoin 0 0 mt 40 u 40 r 40 d 40 l [{ 0 0 mt 0.4 l} 10 5 ] yrpt [{ 40 0 mt 0.4 r} 10 5 ] yrpt [{ 0 0 mt 0.4 d} 10 5 ] xrpt [{ 0 40 mt 0.4 u} 10 5 ] xrpt /cstretch 0.02 store /sstretch 0 store /font0 /StoneSans-Bold 1.5 gonzofont /font1 /StoneSans-Bold 1.2 gonzofont /font2 /StoneSans-Bold 1 gonzofont /font: /StoneSans-Bold [0.6 0 0 0.6 0 0.6] gonzofont /font; /StoneSans-Bold [1.5 0 0 1.5 0 0.2] gonzofont /yinc 2 store font0 20 45 (DELTA FRIENDLY N |;=|0 28\nMAGIC SINEWAVE) cc font1 /yinc 1.5 store 0 -2.2 (0.0) cc 20 -2.2 (0.5) cc 40 -2.2 (1.0)cc 20 -4.3 (AMPLITUDE) cc 41 -0.5 (0) cl 41 9.5 (4) cl 41 19.5 (8) cl 41 29.5 (12) cl 41 39.5 (16) cl 46.5 21 (DELAY\nTIME IN\nDEGREES) cc font2 23.5 4.7 (PULSE WIDTHS) cc 1.5 22.5 (PULSE DELAYS) cl % generate actual magic sinewave /makemagicold {gsave translate 0.25 dup scale line3 /ht 12 store /dht 6 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt a50 0 get pr 0 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add 0 mt a50 2 get pr 0.1 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add 0 mt a50 4 get pr 0.2 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add 0 mt a50 6 get pr 0.3 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add 0 mt a50 8 get pr 0.4 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add 0 mt a50 10 get pr 0.5 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add 0 mt a50 12 get pr 0.6 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add a50 13 get add 0 mt a50 14 get pr 0.7 settint 0.8 setgray stroke %% pulses a50 0 get 0 mt ht pu 0 a50 1 get pr ht pd closepath 0 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add 0 mt ht pu 0 a50 3 get pr ht pd closepath 0.1 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add 0 mt ht pu 0 a50 5 get pr ht pd closepath 0.2 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add 0 mt ht pu 0 a50 7 get pr ht pd closepath 0.3 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add 0 mt ht pu 0 a50 9 get pr ht pd closepath 0.4 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add 0 mt ht pu 0 a50 11 get pr ht pd closepath 0.5 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add 0 mt ht pu 0 a50 13 get pr ht pd closepath 0.6 settint 0.6 setgray fill 1 setlinecap 1 setlinejoin black 0 0 mt a50 0 get 0 rlineto 0 ht pu a50 1 get 0 rlineto 0 ht pd a50 2 get 0 rlineto 0 ht pu a50 3 get 0 rlineto 0 ht pd a50 4 get 0 rlineto 0 ht pu a50 5 get 0 rlineto 0 ht pd a50 6 get 0 rlineto 0 ht pu a50 7 get 0 rlineto 0 ht pd a50 8 get 0 rlineto 0 ht pu a50 9 get 0 rlineto 0 ht pd a50 10 get 0 rlineto 0 ht pu a50 11 get 0 rlineto 0 ht pd a50 12 get 0 rlineto 0 ht pu a50 13 get 0 rlineto 0 ht pd a50 14 get 0 rlineto 0.45 setlinewidth stroke grestore} def /makemagic {gsave translate 0.8 dup scale line3 /ht 3 store /dht 1.5 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt ad70 0 get pr 0 settint 0.8 setgray stroke ad70 0 get ad70 1 get add ad70 2 get add 0 mt ad70 3 get pr 0.15 settint 0.8 setgray stroke ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add ad70 5 get add ad70 6 get add 0 mt ad70 7 get pr 0.3 settint 0.8 setgray stroke % pulses ad70 0 get 0 mt ht 2 mul pu ad70 1 get pr ht 2 mul pd closepath 0 settint 0.6 setgray fill ad70 0 get ad70 1 get add 0 mt ht 2 mul pu ad70 2 get pr ht 2 mul pd closepath 0.15 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add 0 mt ht 2 mul pu ad70 4 get pr ht 2 mul pd closepath 0.30 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add 0 mt ht 2 mul pu ad70 5 get pr ht 2 mul pd closepath 0.5 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add ad70 5 get add 0 mt ht 2 mul pu ad70 6 get pr ht 2 mul pd closepath 0.6 settint 0.6 setgray fill % outlines black line1 1 setlinecap 1 setlinejoin 0 0 mt ad70 0 get pr ht pu ad70 1 get pr ht pd ht pu ad70 2 get pr ht pd ad70 3 get pr ht pu ad70 4 get pr ht pd ht pu ad70 5 get pr ht pd ht pu ad70 6 get pr ht pd ad70 7 get pr stroke 0 0 mt ad70 0 get pr ht 2 mul pu ad70 1 get ad70 2 get add pr ht 2 mul pd ad70 3 get pr ht 2 mul pu ad70 4 get ad70 5 get add ad70 6 get add pr ht 2 mul pd stroke % p3 poker 17.8 -0.45 mt 1.65 -2.5 rlineto black line1 stroke 11.5 -0.45 mt -1.65 -2.5 rlineto black line1 stroke grestore } def 12 31 makemagic font2 11 30.5 (0|:o) cc 37.5 30.5 (30|:o) cc 28.5 28.3 (p2) cc 18.9 28.3 (p1) cc 18 31.8 (p5) cc 28.8 31.8 (p4) cc 32.7 31.8 (p3) cc 18 34.2 (p6) cc 30.2 34.2 (p7) cc } store % end special 2 def % ---------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % //// REVISED DIPDRAW PROC ///// electronics begin % dipdraw - draws a dip integrated circuit. (old code to be improved) % Enter with currentpoint set to pin 1 and scale % set so that 1.0 = distance between pins. Then % do a numpins-(name)-(hipins)-(lopins) dipdraw % Pin callouts preceeded by / will be complemented. % main dipdraw entry: /dipdraw { save /dipsnap exch def /hipins exch def /lopins exch def /chipname exch def /numpins exch def mark 0 0 0 0 0 0 0 0 0 0 0 0 % temp patch /howlong {numpins 2 div cvi 1 add} def /howhigh {4 numpins 36 ge {1 add} if} def /stub {howhigh 1.4 sub 2 div} def % internal service subs start here: /pinproc {numpins 2 div cvi{newpath 0 cpos 0.37 0 360 arc gsave 1 setgray fill grestore 0.067 setlinewidth stroke pin# 5 string cvs dup stringwidth pop 2 div neg cpos 0.2 sub moveto show 1 0 translate /pin# pin# dir add def} repeat } def /stretchprint { dup stringwidth pop 2 div neg exch length 1 sub stretch mul 2 div sub 0 moveto callout (/) anchorsearch true eq {currentpoint exch stretch add exch moveto pop dup /callout exch def stringwidth pop callout length 1 sub stretch mul add /barwide exch def 0.033 setlinewidth gsave currentpoint 0.55 add moveto barwide 0 rlineto stroke grestore} if stretch 0 callout ashow pop} def /pincallouts{0 vpos translate {workstring ( ) search true eq {/callout exch def pop /workstring exch def callout stretchprint 1 0 translate}{dup /callout exch def stretchprint exit } ifelse}loop} def % actual dipdraw process starts here: % ........ the outline: gsave 1 setlinecap 1 setlinejoin currentpoint translate newpath -1 howhigh 2 div 0.7 -90 90 arc 0 stub rlineto howlong 0 rlineto 0 howhigh neg rlineto howlong neg 0 rlineto closepath gsave grayshade setgray fill grestore grayshade dup 1 ne {0.33}{0} ifelse setgray 0.36 setlinewidth stroke newpath -.55 .45 0.15 0 360 arc fill black % ........ pin circles and numbers: /Helvetica-Bold findfont [0.4 0 0 0.55 0 0] makefont setfont gsave /pin# 1 def /dir 1 def /cpos 0 def pinproc grestore gsave /pin# numpins def /dir -1 def /cpos howhigh def pinproc grestore % pin callouts: /Helvetica findfont [0.35 0 0 0.6 0 0] makefont setfont /stretch 0.033 def gsave /workstring hipins def /vpos 0.6 def pincallouts grestore gsave /workstring lopins def /vpos howhigh 1.05 sub def pincallouts grestore % device number: grayshade 1 ne {0.33}{0} ifelse setgray /Helvetica-Bold findfont [1.4 0 0 1 0 0] makefont setfont /stretch 0.05 def gsave numpins 2 div 1 sub 2 div howhigh 2 div 0.33 sub translate chipname dup /callout exch def stretchprint grestore black % end cleanup: grestore grestore cleartomark dipsnap restore} def end % get out of electronics? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /special1 {save /s1snap exch store 4.5 2.5 translate 0.8 dup scale special1code s1snap restore} store /special2 {save /s1snap exch store 4.5 17 translate 0.8 dup scale special2code s1snap restore} store /special5 {gsave 4 -5.85 translate line1 black 0.3 0 mt 0.3 l 5.2 u 0.3 r 13.2 0 mt 0.3 r 5.2 u 0.3 l 15.3 0 mt 0.3 l 5.2 u 0.3 r 18.3 0 mt 0.3 r 5.2 u 0.3 l grestore } store /xkernon {/kernsave kern store /kern 0.18 store } def /xkernoff {/kern kernsave store} def /pagenum 1 store /startnewpage { black beige 0.35 setgray 21 -2.5 (|3\320|j|j) ggnum 10 string cvs mergestr (|j.|j) mergestr pagenum 10 string cvs mergestr (|j|j\320) mergestr cc aqua showpage %% start next page /pagenum pagenum 1 add store 50 50 10 setgrid % create grid setpagefonts font1 textleft texttop } def /su {surl font6} store /to {tinton1 font6} store /tx {tintoff font1} store /tabs [7 20] store /overstrikeht 0.52 store %%%% glyph module /font: /Symbol 1.5 gonzofont /font+ /Helvetica [0.9 0 0 0.85 0 0.6] gonzofont /font= /Helvetica 1.5 gonzofont /glyphx1 { mark /glyphx1exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphx1exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266j) show 0 -1.3 moveto (\266) show font= (x) show line2 0 0.1 mt 1.8 r grestore} store /glyphy1 { mark /glyphy1exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphy1exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266j) show 0 -1.3 moveto (\266) show font= (y) show line2 0 0.1 mt 1.8 r grestore} store /glyphz1 { mark /glyphz1exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphz1exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266j) show 0 -1.3 moveto (\266) show font= (z) show line2 0 0.1 mt 1.8 r grestore} store /glyphx2 { mark /glyphx2exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphx2exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266) show font+ (2) show font: (j) show 0 -1.4 moveto (\266) show font= (x) show font+ (2) show line2 0 0.1 mt 1.8 r grestore} store /glyphy2 { mark /glyphy2exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphy2exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266) show font+ (2) show font: (j) show 0 -1.4 moveto (\266) show font= (y) show font+ (2) show line2 0 0.1 mt 1.8 r grestore} store /glyphz2 { mark /glyphz2exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphz2exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266) show font+ (2) show font: (j) show 0 -1.4 moveto (\266) show font= (z) show font+ (2) show line2 0 0.1 mt 1.8 r grestore} store /lateblack { mark 1 0 0.7 /setrgbcolor cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /lateburple { mark 0.5 0 1 /setrgbcolor cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store %%%%%%%%%%%%% /autofigure2 {save /af2 exch store xpos ypos yinc add translate 6.5 -2 250 243 .070 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/reels01.jpg) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\zzimages\\reelsx01.jpg) jpegimageprocwithlink af2 restore} store %%%%%%%%%%%%%% % "a" sample figure /figure1 { 1.5 -11 translate 0.6 dup scale % 50 30 showgrid /font0 /MyriadPro-Bold [ 38.69 0 0 59.3 -0.6 0 ] gonzofont font0 0.5 0.5 0.5 setrgbcolor 0 0 (A) cl 0.75 0 0 setrgbcolor line2 0 0 mt 40 pu 24 pr 40 pd closepath stroke line1 [{ 0 0 mt 24 r} 5 8 ] yrpt [{0 0 mt 40 u } 4 6 ] xrpt 0 0 0.75 setrgbcolor gsave 4 25 translate 6 { [{0.5 0.5 mt dot} 0.57 6] xrpt 0 0.8 translate } repeat grestore } store %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /font; /Helvetica [0.7 0 0 0.7 0 0.4] gonzofont font1 /font- /Symbol 0.85 gonzofont aqua 0.33 setgray font0 /narrowx {/txtwide txtwide 8.5 sub store} store /widenx {/txtwide txtwide 8.5 add store} store 20 47.3 0.7 add % 1 sub (A |j|jUniversal .BMP Format) cc 20 45.3 0.7 add % 1 sub (Bitmap |j|jImage |j|jManipulator) cc black font2 textleft 43 0.3 add % this one only need |h below (|/aqua |/staytint1 |3Don Lancaster Synergetics, Box 809, Thatcher, AZ 85552 copyright c2005 as |/surl |6GuruGram|1|/gurgrm01 |/tinton1 |6#56 |/surl http://www.tinaja.com|/tinaja |/surl don@tinaja.com|/maildon (928) 428-4073 |/aqua |/black |a|0A|b|1ltering images in the |/su .BMP data format|1|/expbmp can be exceptionally useful for |/su eBay|1|/ebaystore |/su Photography|1|/ebaystore , among many other obvious tasks. There are many popular software utilities available that can help you do this, ranging from that superb and low cost |/su ImageView32|1|/imgviewer32 to the commercial and industry standard |/su Adobe Photoshop|1|/adobe . |h For several ongoing reasons, I decided to write many of my own |/su .BMP altering|1|/expbmp routines that let me conveniently do my things my way\274 |6|/shiftin |/aqua |/burplebox13.5 |/staytint1 |h |/su Exploring the .BMP Data Format|1|/expbmp |h |/su Digital Camera Swings and Tilts|1|/swingtlt |/su Digital Camera Dodges and Burns|1|/dodbur01 |/su My eBay Photo Secrets|1|/ebayfoto |/su PS Array to Image Conversion|1|/psar2img.pdf |/su A revised Bitmap Typewriter|1|/bmfauto1.pdf |/su Bitmap Perspective Lettering|1|/perspec1.pdf |/su Image Keystone Correction|1|/keycor01.pdf |/su Web Imaging Secrets|1|/webimage.pdf |/su Imaginative Images|1|/imagimag |/su Combined Tilt Corrector and Punchthru Eliminator|1|/nutilt01.psl |/su Combined Background and Vignette Generator|1|/nubkg01.psl |1|/shiftout |/aqua |/black |h Some current projects are that I need a |/to bitmap rotator|/tx that has precision beyond the one degree offered by |/su ImageView32|1|/imgviewer32 ; a "true" |/to keystone corrector|/tx which could eliminate second order distortion; the real |/to bilineal|/tx and |/to bicubic|/tx pixel interpolation routines; a way to explore |/to nonlinear pixel techniques|/tx ; and to gain the ability to do 2x2, 3x3, 4x4, 5x5 and higher |/to digital filtering|/tx to all bitmap pixels. |h Rather than work up individual code for all of these, it seemed to make more sense to work up a |/su Universal Bitmap Image Manipulator|1|/unibmm01.psl . One that would "bite the bullet" and make a |/to complete|/tx bitmap image RAM resident. Where |/to any|/tx pixel ) cl startnewpage (could be altered, moved, or changed in |/to any|/tx manner. You'll find some preliminary code on this as our |/su UNIBMM01.PSL|1|/unibmm01.psl utility. At present, the code handles dozens of fairly sophisticated image manipulation tasks. I hope to expand it much further in the future. |h As usual, I chose to write these routines in |/su PostScript|1|/post01 , because of its fundamental elegance, its intuitive simplicity, and its enormous flexibility. But, above all, the ease with which |/su PostScript|1|/post01 can manipulate most any disk file in virtually any data format. This gets done by using ordinary short ASCII textfiles that make use of |/su Acrobat Distiller as a General Purpose Host Resident PostScript Computer|1|/distlang . |h Naturally, there is no way that an interpreted language can speed compete against compiled code being |/to rerun|/tx or custom hardware. But the execution times seem good enough for my |/su eBay|1|/ebaystore uses. With all but the most complex actions on the largest bitmaps taking only a few to a few tens of seconds. |h Our |/su Gonzo Utilities|1|/gonzoutils are recommended but not essential for much of this code. I have tried to make all of our algorithms well documented and carefully spelled out. If needed, you should be able to translate them to other languages or even adapt it to custom hardware. |h |c The |j.BMP |jImage |jFormat |d The |/to .BMP|/tx image format is preferred for image manipulation in that it is usually uncompressed, non-lossy and raises few generation issues. But its huge file sizes will demand conversion to |/to .JPG|/tx or other formats for final image distribution. |h A tutorial on the |/su .BMP Data Format|1|/expbmp is |/su found here|1|/expbmp . Actually, there are quite a few different .BMP Data Formats. These data formats are all in two pieces, consisting of an information |/to header|/tx followed by the actual image |/to data|/tx content. We will concern ourselves |/to only|/tx with the |/to uncompressed RGB color version|/tx having |/to three 8-bit bytes per pixel|/tx . Further, we will not worry much about converting between .BMP to and other |/to external|/tx data formats. These tasks are readily handled by other programs. |h Let's look at a few key .BMP points that can cause you grief\274 |6|/shiftin |/aqua |/burplebox8.5 |/staytint1 |h There are two areas in the header that hold the horizontal and vertical pixel size info. These are both 32 bit words of four 8-bit bytes each, LSB last. |h Counts MUST accurately match the bitmap image data that follows. Your display ap must either read these values or else be told them. Otherwise, shifting, tearing, or error messages are near certain to result. |1|/shiftout |/aqua |/black |h ) cl startnewpage (|6|/shiftin |/aqua |/burplebox5.5 |/staytint1 |h .BMP Bitmaps build left to right by the horizontal line and do so from the BOTTOM UP. |h Note that this vertical building is the OPPOSITE of a scanned display that normally builds from top down. |1|/shiftout |/aqua |/black |h This .BMP detail is non-obvious and unexpected\274 |6|/shiftin |/aqua |/burplebox3 |/staytint1 |h Any given pixel in the .BMP data follows a BLUE - GREEN - RED data sequence with blue being presented EARLIEST. |h |1|/shiftout |/aqua |/black |h Finally, the major .BMP grief-causing gotcha\274 |6|/shiftin |/aqua |/burplebox7 |/staytint1 The .BMP format apparently DEMANDS use of 32-bit words. Thus, each new horizontal line MUST start on a 32-bit word boundary! |h Because three does not divide into four all that well, a number of NULL PADDING BYTES may have to be added to the previous data line. 0, 1, 2, or 3 bytes may be needed. |h |1|/shiftout |/aqua |/black Because some bitmap manipulations may end up with a different output file size, |/to padding is best left till the final output file is written to disk.|/tx |h Here is some padding byte example code. It is shown in |/su PostScript|1|/post01 , makes use of my |/su Gonzo Utilities|1|/gonzoutils and starts with the present horizontal line data string \274 |6|/shiftin |/burple |/burplebox9 |/staytint1 |h /onepad [ 0 ] makestring store % previously defined /twopad [ 0 0 ] makestring store /threepad [ 0 0 0 ] makestring store |h dup length 4 mod dup 0 gt { [ (xxx) threepad twopad onepad ] exch get mergestr}{pop}ifelse |h writefile exch writestring |h |1|/shiftout |/aqua |/black |h |c Some |jPostScript |jSneaky |jTricks |d The goal in a |/su Universal Bitmap Manipulator|1|/unibmm01.psl is to |/to place the entire bitmap image |/to in RAM memory at once|/tx . So that each and every RGB pixel triad can be easily ) cl startnewpage (accessed. Because more than one .BMP copy can be resident at once, |/to use of a |/to minimum of 250 Megabytes of RAM with no other programs active is strongly |/to recommended.|/tx |h Just because you have everything in the bitmap copy at once present at once does not mean you should always go whole hog\274 |6|/shiftin |/aqua |/burplebox3.5 |/staytint1 |h ALWAYS minimize the per-pixel calculation complexity! |h AVOID X-Y pixel access if row or column access will do! |h |1|/shiftout |/aqua |/black There's a sneaky trick that makes |/su PostScript|1|/post01 especially attractive for bitmap manipulation. A RGB color pixel is normally an integer having a 0-255 range. A PostScript |/to string|/tx is also an integer having a 0-255 range. Thus, |/to there are a few |/to compelling speed and size and computational advantages to representing any |/to .BMP line as a PostScript string.|/tx |h We will thus use a convention of stashing a bitmap as an |/to array of PostScript |/to strings|/tx . Let's take a look at\274 |h |c Some |jCoding |jExamples |d Our |/su Universal Bitmap Manipulator|1|/unibmm01.psl is very much an expanding and moving target. Here is some present thinking on some of the earlier routines\274 |h |/to /grabbitmap .BMP disk file reader \320|j|/tx An existing |/to .BMP|/tx file gets read one line at a time and converted into an array of |/su PostScript|1|/post01 strings called |/to /instrarray|/tx . Each string will be |/to three times|/tx as long as the number of horizontal pixels because of the B-G-R byte color sequencing per pixel. The array length will equal the |/to height|/tx of the original bitmap. Each byte will hold an integer color value ranging from a black of 0 to a fully saturated 255. |h Padding bytes are |/to not|/tx held internally. They are regenerated only as an output file is resaved to disk. |h Some PostScript quirks\274 |6|/shiftin |/aqua |/burplebox9 |/staytint1 |h PostScript REQUIRES the full Windows pathname. This is best handled by MERGING a prefix with a short filename. |h A DOUBLE REVERSE SLASH is required inside a PostScript sting any time a single reverse slash is really wanted. |h Normally, only a POINTER to a string is saved instead of a copy of the string itself. To prevent rude surprises, a string can be DEREFERENCED by making a fresh copy of itself. |h |1|/shiftout |/aqua |/black ) cl startnewpage (Ferinstance, a |/su PostScript|1|/post01 string can be dereferenced by using |/to dup length string |/to cvs|/tx . An array can be dereferenced by using |/to mark exch aload pop ]|/tx Dereferencing should be avoided unless really needed because it is time and memory extensive. |h |/su Distiller|1|/acrob01 may introduce yet another annoying quirk: The garbage collection can be too rigorous at times. Which can introduce major slowdowns. This can be avoided by creative use of |/to -2 vmreclaim|/tx (stop all garbage collection) and a |/to 0 |/to vmreclaim|/tx (resume normal collection). |/to /savebitmap .BMP disk file saver \320|j|/tx When manipulating bitmap images, it is normally best to create a new intermediate or output file instead of overwriting any existing string arrays. |/to /savebitmap|/tx first copies the original bitmap header and then writes the string array |/to /outstrarray|/tx to disk. Each individual row string is padded by 0,1,2, or 3 null characters to end on a 32-bit boundary as required. The horizontal and vertical sizes in the header are then modified if they have been changed by cropping, distortion, or resizing. |/to /cropimage rectangular cropping \320|j|/tx Cropping can get done by selective writing needed partial rows and vertical row counts to |/to outstrarray|/tx . While remembering that |/to rows are in three byte BGR triads|/tx . Four values of |/to ll|/tx , |/to ul|/tx , |/to lr|/tx , and |/to rr|/tx are passed on the stack to the selective cropper code. |/to /flipvertically vertical image flipper \320|j|/tx This is one of the easiest to do bitmap alterations in that it reads out the string array in reverse order, outputting the |/to top string first|/tx . |/to /mirrorhorizontally horizontal image flipper \320|j|/tx Flipping an image horizontally is somewhat tricky in that you want to reverse the sequence of the BGR triads |/to while |/to preserving their color validity|/tx . Basically, you grab |/to three|/tx characters at a time from your input row string and move them to your output row string. |/to /rotate90 and /rotate270 image rotators \320|j|/tx Angle rotation to arbitrary angles can be slow and tricky, but plus or minus ninety degrees is fairly trivial. You simply |/to create new string rows out of columnar BGR pixel triads|/tx . For CW, work from the |/to top down|/tx . For CCW, work from the |/to bottom up|/tx . Once again, |/to all triads |/to must be preserved|/tx for proper color sequencing. |/to /negateimage negative image conversion \320|j|/tx Many special effects and image adjustments can be created simply by altering each pixel triad in place. One of the easiest is a |/to negator|/tx , which can be done by a |/to 256 sub abs|/tx applied to each and every color of each and every pixel. Obvious other "in-place" tricks can make use of |/to table lookup|/tx to alter contrast, brightness, gamma, or hue. |h Creating a black and white image of equivalent luminance may need an obscure |/to 0.11 blue + 0.59 green + 0.30 red|/tx calculation. Your result could be left in RGB ) cl startnewpage (space or a more compact gray-only .BMP format can be substituted. Any color separations can be similarly handled. These, and similar in-place techniques, can also be done for you on a |/su custom bsais|1|/info01 . |/to /nowhites punchthru blocker \320|j|/tx A pure white background is easily underwritten with a color or a randomized pattern, perhaps even |/su vignetting|1|/nubkg01.psl to gain darker or lighter edges. JPEG edge artifacts can also be significantly reduced by a proper choice of varying background patterning. Examples appear in |/su NUBKG01.PSL|1|/nubkg01.psl . |h But if there are any pure whites |/to inside|/tx of your active image area, you may get a |/to punchthru|/tx with possibly disastrous results. Like that tv weatherturkey ending up with a map where his stomach is supposed to be. Your workaround is to go on through your |/to PRE-whitened|/tx image and replace every red 255 with a red 254. Thus guaranteeing no punchthru. |h But note that any resizing or contrast/brightness/gamma correcting can alter your color values. |/to Be sure to use your nowhite feature before you change it!|/tx Also, many of our fancier pixel interpolation routines will routinely test for overflows and underflows. A nowhite punchthru blocker can easily be introduced here at a zero time or code penalty. |/to /knockback background eliminator \320|j|/tx Early stages of image post processing often involves /to knocking out the background to white|/tx . Most of the .BMP knockout program features or software I looked seemed to have one problem or another. Instead, |/to /knockback|/tx uses the following algorithm\274 |6|/shiftin |/burple |/burplebox10 |/staytint1 |h Starting from the left, write white pixels till a white pixel is found. Repeat for each row. |h Starting from the right, write white pixels till a white pixel is found. Repeat for each row. |h Starting from the top, write white pixels till a white pixel is found. Repeat for each column. |h Starting from the bottom, write white pixels till a white pixel is found. Repeat for each column. |h |1|/shiftout |/aqua |/black Yeah, this is only approximate and misses internals and parts of undercuts. But it is quite fast, works for me, and has few rude surprises. To write white, a 255 is substituted for |/to each|/tx color value in the pixel triad. |/to /xybilini and friends \320|j|/tx Any time an image is resized or demands any |/su nonlinear|/nonlingr.pdf |/su transformation|1|/nonlingr.pdf , some |/to pixel interpolation|/tx may be required. Where you substitute the "best possible" new pixel whose color will best approximate the four adjacent original ones. ) cl startnewpage /shrink {0.9 1 scale} store /unshrink {1 0.9 div 1 scale} store /patch1 {gsave white xpos 4.3 add ypos 5.7 sub mt 1 setlinecap 1.46 setlinewidth 18.8 r grestore} store (There are two popular solutions to this crucially essential bitmap manipulation need. The simplest and faster is called |/to bilinear interpolation|/tx . Bilineal interpolation simply takes a proportional average of the four adjacent pixels in the original image\274 |6|/shiftin |/burple |/burplebox3.5 |/staytint1 |h BILINEAL INTERPOLATION: |h ll(x-1)(y-1) - lr(x)(y-1) - ul(x-1)(y) + ur(x)(y) |h |1|/shiftout |/aqua |/black |h Here |/to x|/tx is the |/to fractional part|/tx of the new x position and |/to y|/tx is the |/to fractional part|/tx of the new y position. A fractional part can usually be calculated by a |/to dup cvi exch |/to sub|/tx . |/to ll|/tx is the 0-255 value of the lower left pixel, etc\274 Note that the interpolation calculation needs to repeated for |/to each|/tx of the three RGB pixel color values. |h X axis or Y axis interpolation can obviously be done by using only the appropriate two terms from above. While bilineal interpolation is somewhat time and code intensive, it appears to be the minimum task needed to get reasonably acceptable results. |/to /xybicubi and friends \320|j|/tx There is a much fancier interpolation scheme that is called a |/to bicubic interpolation|/tx . This involves the use of an ugly nasty called |/to high |/to resolution cubic spline Basis Functions|/tx . You can find a |/su tutorial here|1|/basis.pdf as per our |/su GuruGram #4|1|/gurgrm01 . Bicubic interpolation views the |/to sixteen|/tx closest neighbor pixels in a 4x4 array. And then comes up with a superb approximation which can actually |/to improve|/tx upon your image sharpness and resolution\274 |6|/shiftin |/burple |/burplebox8.5 |/staytint1 |h|/patch1 BICUBIC INTERPOLATION: |h|/shrink p03(b0y)(b3x) + p13(b1y)(b3x) + p23(b2y)(b3x) + p33(b3y)(b3x) + p02(b0y)(b2x) + p12(b1y)(b2x) + p22(b2y)(b2x) + p32(b3y)(b2x) + |h |/aqua |/to |jevaluated pixel -----> \267 <----- is positioned here |h|/burple |/staytint1 p01(b0y)(b1x) + p11(b1y)(b1x) + p21(b2y)(b1x) + p31(b3y)(b1x) + p00(b0y)(b0x) + p10(b1y)(b0x) + p20(b2y)(b0x) + p30(b3y)(b0x) |h|/unshrink |1|/shiftout |/aqua |/black |h .... where pixel |/to p11|/tx is at the lower left corner of the point that is to be interpolated, and |/to (b0x)|/tx is a typical directional |/su Basis Function|1|/basis.pdf . This all gets repeated |/to three times|/tx per pixel for blue, green, and red. |h Bicubic interpolation creates a much sharper transition |/to halfway|/tx between pixels. Here are two sample |/su Basis Function|1|/basis.pdf table lookups for twenty intermediate points\274 ) cl startnewpage (|6|/shiftin |/burple |/burplebox7.5 |/staytint1 |h /b0 [ 0.000 -0.007 -0.026 -0.053 -0.083 -0.111 -0.132 -0.145 -0.147 -0.140 -0.125 -0.103 -0.080 -0.057 -0.036 -0.020 -0.009 -0.003 -0.000 -0.000 -0.000 ] store |h /b1 [ 1.000 0.999 0.998 0.992 0.979 0.954 0.916 0.863 0.795 |k 0.715 0.625 0.529 0.432 0.338 0.252 0.176 0.113 0.064 |k 0.028 0.007 0.000 ] store |h |1|/shiftout |/aqua |/black |h |/to B(2)|/tx is the mirror to |/to B(1)|/tx and is read right to left. |/to B(3)|/tx is the mirror to |/to B(0)|/tx and is also read right to left. Note that pretesting is needed to make sure a pixel is in legal range. |h A |/to table lookup|/tx of crossproducts can be generated ahead of time to possibly save a lot of per-pixel processing time. Per this |/su preliminary utility|1|/imxytab.psl . Generation time is only a fraction of a second. I'm not sure what the optimum table size would be. 16x16 is probably good enough, while 64x64 certainly should be. |h Bicubic is further complicated by occasional overflows and underflows which need testing and trapping. Special |/to a = -0.5|/tx treatment is also required for any medical or astronomical images that must be accurately preserved. |h As a practical matter, it is often very difficult to tell any final difference at all between bilineal and bicubic interpolation. Especially for noncrucial apps such as |/su eBay Product Images|1|/ebaystore . Thus, the extra time and complexity is often not justified. |/to /presize proportional resizing \320|j|/tx Obvious uses for pixel interpolation include zooms and picture resizing. Magnification should present no problems, except that bicubic interpolation is probably needed for extreme magnification. But there is a subtle gotcha in reduction that I have yet to find an official solution for. |h The information content of a reduced image must, of course, go down. If you simply downsample, chances are you will get unacceptable partial dropouts of single pixel width lines. Thus, |/to an image downsizing often must combine a low |/to pass filtering with resampling.|/tx |h My approach to resizing is presently\274 |6|/shiftin |/burple |/burplebox5 |/staytint1 |h \267 Use pixel interpolation at or above 1.0 magnification \267 Use 2x2 pixel averaging at 0.5 magnification. \267 Proportion the two between 0.5 and 1.0 magnification. \267 Prescale by 2x2 pixel averaging below 0.5 magnification. |h |1|/shiftout |/aqua |/black Optimal downsizing is very much content specific, and the rules might end up different for, say, a landscape compared to a detailed line graph. ) cl startnewpage (|c For |jMore |jHelp |d The |/su code|1|/unibmm01.psl for our |/su Universal Bitmap Image Manipulator|1|/unibmm01.psl is very much a moving target, so keep checking back for possible updates and improvements. |h Additional info on image manipulation for |/su eBay|1|/ebaystore use is found on our |/su Auction Help|1|/auct01 library page. As do hundreds of examples of images using these techniques. |h More on |/su PostScript|1|/post01 and |/su Acrobat|1|/acrob01 in their separate resource areas. More on bitmaps in our |/su Fonts & Images|1|/aafont01 library. Free |/su Gonzo Utilities|1|/gonzoutils and many use examples are found |/su here|1|/gonzoutils . |h Additional consulting services are available per our |/su Infopack|1|/info01 services and on a contract or an hourly basis. Additional |/su GuruGrams|1|/gurgrm01 are found |/su here|1|/gurgrm01 . |h Further |/surl |6GuruGrams|1|/gurgrm01 await your ongoing support as a |/surl |6Synergetics Partner|1|/advt01 . ) cl startnewpage %%%%%%%%%%%%%%%%%%%% % EOF