%!PS % Conversions between Bitmaps and PostScript arrays & images % =========================================================== % by Don Lancaster GG #84 BNP2PSA.PSL /ggnum 84 store % Copyright c 2007 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. % Many routines removed and cleaned at #58 %%%%%%%%%%% 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 % zzz keep for search marker % dictionary method << % gg84 /img2bmp (http://www.google.com/search?q=postscript+image+to+bitmap+conversion&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /distbug (http://www.adobe.com/devnet/acrobat/downloads/Acrobat_SDK_readme.html) /AOSutil1.psl (http://www.tinaja.com/psutils/AOSutil1.psl) /falseclr.pdf (http://www.tinaja.com/glib/falseclr.pdf) /bannpe06.jpg (http://www.tinaja.com/images/bargs/bannpe06.jpg) /arabbb.jpg (http://www.tinaja.com/images/bargs/araabbb.jpg) % gg83 /pixintp1.pdf (http://www.tinaja.com/psutils/pixintp1.pdf) /pixintp1.psl (http://www.tinaja.com/psutils/pixintp1.psl) /pixintpl.pdf (http://www.tinaja.com/glib/pixintpl.pdf) /pixintpl.psl (http://www.tinaja.com/glib/pixintpl.psl) /wikipedia (http://en.wikipedia.org/wiki/Main_Page) /wikilin (http://en.wikipedia.org/wiki/Bilinear_interpolation) /wikicub (http://en.wikipedia.org/wiki/Bicubic) % gg82 /muse111.pdf (http://www.tinaja.com/glib/muse111.pdf) /pdfanim.pdf (http://www.tinaja.com/glib/pdfanim.pdf) /falseclr.psl (http://www.tinaja.com/glib/falseclr.psl) /dodgebur.pdf (http://www.tinaja.com/glib/dodgebur.pdf) % gg81 /htmlfordummiesbook (http://www.amazon.com/exec/obidos/ISBN=0764589172/donlancastersgurA/) /htmldefinitiveguidebook (http://www.amazon.com/exec/obidos/ISBN=0596527322/donlancastersgurA/) % gg80 /kearney (http://www.cs.uiowa.edu/~kearney/pubs/CurvesAndSufacesClosestPoint.pdf) /cmindist.psl (http://www.tinaja.com/glib/cmindist.psl) /piecewise (http://delivery.acm.org/10.1145/810000/801153/p229-plass.pdf?key1=801153&key2=0010608811&coll=GUIDE&dl=&CFID=15151515&CFTOKEN=6184618) /nubzlen1.pdf (http://www.tinaja.com/glib/nubzlen1.pdf) /nubz4pts1.pdf (http://www.tinaja.com/glib/nubz4pts1.pdf) % entered during gg79 /gonzotut.pdf (http://www.tinaja.com/glib/gonzotut.pdf) /gonzotut.psl (http://www.tinaja.com/glib/gonzotut.psl) /bookcvr1.pdf (http://www.tinaja.com/glib/bookcvr1.pdf) /swingtlt.pdf (http://www.tinaja.com/glib/swingtlt.pdf) /curvetr2.pdf (http://www.tinaja.com/psutils/curvetr2.pdf) /curvetr2.psl (http://www.tinaja.com/psutils/curvetr2.psl) /blanksusa (http://www.blanksusa.com) /gonzotut.psl (http://www.tinaja.com/glib/gonzotut.psl) /ps8dprp1.pdf (http://www.tinaja.com/glib/ps8dprp1.pdf) /pdfedit1.pdf (/http://www.tinaja.com/glib/pdfedit1.pdf) % entered during gg78 /enhebay6.psl (http://www.tinaja.com/glib/enhebay6.psl) /enhebay6.pdf (http://www.tinaja.com/glib/enhebay6.pdf) /slashdot (http://www.slashdot.org) /blackrangelodge (http://www.blackrangelodge.com/) /kijiji (http://www.phoenix.kijiji.com) /aznews (http://www.usnpl.com/aznews.html) /azschools (http://www.ade.state.az.us/schools/schools/districts.asp) /azcounties (http://www.az.gov/webapp/portal/displaycontent.jsp?name=county) /aztowns( http://www.azleague.org/index.cfm?fuseaction=about.cities) /natuniv (http://www.utexas.edu/world/univ/state/) /natcc (http://www.50states.com/college/arizona.htm) /barbiecollect (http://www.barbiecollector.com/shop/dept.aspx?deptid=2&shelfid=02&view=all) /googlebarbie (http://www.google.com/search?q=barbie+doll&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /wikibarbie (http://en.wikipedia.org/wiki/Barbie) /countyourassests (http://www.soldyourway.com/) /christies (http://www.christies.com/home_page/home_page.asp) /sothebys (http://www.sothebys.com) /franklinmint (http://en.wikipedia.org/wiki/Franklin_Mint) /klausbarbie (http://en.wikipedia.org/wiki/Klaus_Barbie) /enhebay5.pdf (http://www.tinaja.com/glib/enhebay5.pdf) /whtnu06 (http://www.tinaja.com/whtnu07.asp) /whtnu07 (http://www.tinaja.com/whtnu07.asp) % entered during gg77 /fastmsol.pdf (http://www.tinaja.com/glib/fastmsol.pdf) % entered during gg76 /ieeefp (http://en.wikipedia.org/wiki/IEEE_754) /ps8dprpt.psl (http://www.tinaja.com/psutils/ps8dprpt.psl) % entered during gg75 /pstrans2.pdf (http://www.tinaja.com/glib/pstrans2.pdf) /ghostscript (http://pages.cs.wisc.edu/~ghost/doc/AFPL/index.htm) /PLRM (http://www.adobe.com/products/postscript/pdfs/PLRM.pdf) /pdfref (http://www.adobe.com/devnet/pdf/pdf_reference.html) % entered during gg 74 /ebaymktsearch (http://pages.ebay.com/marketplace%5Fresearch/) /ebaystat.psl (http://www.tinaja.com/glib/ebaystat.psl) /ebayadvsearch (http://search.ebay.com/ws/search/AdvSearch?sofindtype=13&_trksid=m37) /ebaystatservice (http://www.medved.net/cgi-bin/cal.exe?EIND) % entered during gg 73 /bridge701.psl (http://www.tinaja.com/magsn_5/bridge701.psl) /bridge701.pdf (http://www.tinaja.com/magsn_5/bridge701.pdf) /demo28a (http://www.tinaja.com/demo28a.asp) /gaussjordan (http://en.wikipedia.org/wiki/Gauss-Jordan_elimination) /sinseries (http://www.ucl.ac.uk/Mathematics/geomath/level2/series/ser11.html) /newtonmethod (http://en.wikipedia.org/wiki/Newton's_method) /trigidentity (http://www.sosmath.com/trig/Trig5/trig5/trig5.html) /demo28a.asp (http://www.tinaja.com/demo28a.asp) % entered during gg 71 /detmssol.pdf (http://www.tinaja.com/glib/detmssol.pdf) /detmssol.psl (http://www.tinaja.com/glib/detmssol.psl) /alvinpile (http://www.tinaja.com/glib/enhebay2.pdf) % duplicate name /dilbert (http://www.dilbert.com) /putty (http://www.putty.nl) /legible1.pdf (http://www.tinaja.com/glib/legible1.pdf) /muse144.pdf (http://www.tinaja.com/glib/muse144.pdf) /webcolr.pdf (http://www.tinaja.com/psutils/webcolor.pdf) /ifilter (http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611) /drmsbiz1 (http://reform.house.gov/UploadedFiles/MG%20Williams%20July%2025%20Testimony.pdf) /drmsbiz2 (http://www.gao.gov/new.items/d05277.pdf) /drmsclosed (http://www.drms.dla.mil/A76/transitionsitelistrevised.pdf) /drmsmap (http://www.drms.dla.mil/meo/routemap.htm) /drms (http://www.drms.dla.mil/) /enhebay4.pdf (http://www.tinaja.com/glib/enhebay4.pdf) % entered during gg 70 /insidegame (http://www.amazon.com/exec/obidos/ISBN%3D1585006246/donlancastersgurA/002-8267096-8078436) /auctionbytes (http://www.auctionbytes.com) /texasauctionlaw (Texas auction law: http://www.license.state.tx.us/auc/auction.htm) /shermananti (http://www.gamingip.com/Statutes/ShermanAct/ST-Sherman1-4.html) /mainantique (http://www.antiquedigest.com/articles/auclaw.htm) /finex1 (http://www.tinaja.com/images/bargs/pwrssrx3.jpg) /knockback.psl (http://www.tinaja.com/psutils/knockback.psl) /krylondull (http://www.krylon.com/main/product_template.cfm?levelid=5&sub_levelid=8&productid=1822&content=product_details) /adeptaabb (http://www.tinaja.com/images/bargs/araabbb.jpg) /bonnette (http://www.bonnetteauctions.com/) /walmartauctionsignup (mailto://Joan.Ramsey@Wal-Mart.com) /walmartauction (http://walmartstores.com/GlobalWMStoresWeb/navigate.do?catg=504&contId=49) /ucc (http://www.law.cornell.edu/ucc/) /whtnu06 (http://www.tinaja.com/whtnu06.asp) % entered during gg69 /wikicat (http://en.wikipedia.org/wiki/Catenary) /bezcat.psl (http://www.tinaja.com/glib/bezcat.psl) /nubz4pts1.pdf (http://www.tinaja.com/glib/nubz4pts1.pdf) % entered during gg68 /nobodydog (http://www.unc.edu/depts/jomc/academics/dri/idog.html) /kaizen (http://en.wikipedia.org/wiki/Kaizen) /circuitcellar (http://www.circuitcellar.com/guru/) /makemag (http://www.makezine.com/) /adamsadventures (http://www.msadams.com/downloads.htm) /linux (http://www.linux.org/) /opensource (http://www.opensource.org/) /craigslist (http://phoenix.craigslist.org/) /autotrader (http://www.autotrader.com/) /lulu (http://www.lulu.com/) /bookmarket (http://www.bookmarket.com/ondemand.html) /burgerking (http://www.bk.com) /newtek (http://www.newtek.com) /memsnet (http://www.memsnet.org/) /muse131.pdf (http://www.tinaja.com/glib/muse131.pdf) /muse120.pdf (http://www.tinaja.com/glib/muse120.pdf) /supercap (http://www.sciencemag.org/cgi/content/abstract/313/5794/1760?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=carbon+pore+sizes&searchid=1&FIRSTINDEX=0&resourcetype=HWCIT) /quantumdots (http://www.google.com/search?q=%22quantum+dots%22+solar&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /datasheetarchive (http://www.datasheetarchive.com/chipPhotos/photosA.html) /googleearth (http://www.earth.google.com) /toystory (http://us.imdb.com/title/tt0114709/) /robotmovie (http://us.imdb.com/title/tt0358082/) /cars (http://us.imdb.com/title/tt0317219/) /netflix (http://www.netflix.com/) /blockbuster (http://www.blockbuster.com/online/) % entered during gg67 /puzz01.psl (http://www.tinaja.com/psutils/puzz01.psl) /alphamet1 ( http://www.tkcs-collins.com/truman/alphamet/alphamet.shtml) /alphamet2 (http://www.tkcs-collins.com/truman/alphamet/alpha_gen.shtml) /alphamet3 (http://users.aol.com/s6sj7gt/mikealp.htm) /msinexec.pdf (http://www.tinaja.com/glib/msinexec.pdf) /paradigm.pdf (http://www.tinaja.com/glib/paradigm.pdf) % entered during gg66 /thunderbird (http://www.thunderbird.com) /spysweeper (http://www.webroot.com/consumer/products/spysweeper/?rc=1651) /norton (http://www.symantec.com/index.htm) /pestpatrol (http://www.pestpatrol.com/) /firefox (http://www.firefox.com) /sciencemag (http://www.sciencemag.org/) /worldfact (http://www.cia.gov/cia/publications/factbook/) /internetdog (http://www.unc.edu/depts/jomc/academics/dri/idog.html) /zipcode (http://www.usps.com/ncsc/lookups/lookup_zip+4.html) /weather (http://www.weather.com/) /thomasreg (http://www.thomasregister.com/) /topozone (http://www.topozone.com/) /yahoostock (http://finance.yahoo.com/) /reversephone (http://www.reversephonedirectory.com/) /uspto (http://www.uspto.gov/patft/index.html) /msnbc (http://www.msnbc.com/) /imdb (http://us.imdb.com/) /loanamort (http://www.hsh.com/calc-amort.html) /kellybook (http://www.kbb.com/) /googlemaps (http://maps.google.com/) /newyorker (http://www.newyorker.com/) /currexch (http://www.xe.net/ucc/) /chemele (http://www.chemicalelements.com) /cnn (http://www.cnn.com) /areacodes (http://decoder.americom.com/cgi-bin/decoder.cgi) /tinajaoffsite (http://www.tinaja.com#offsite) /tinajaengines (http://www.tinja.com#engines) /walmart (http://www.walmart.com) /rssbook (http://www.amazon.com/exec/obidos/ISBN%3D0764588486/donlancastersgurA/002-5434897-4181636) /webwb01 (http://www.tinaja.com/webwb01.asp) /weblib01 (http://www.tinaja.com/weblib01.asp) /validator (http://rss.scripting.com/) /webbooks (http://www.tinaja.com/books/bkwbmast.asp) /dreamweaver (http://www.adobe.com/products/dreamweaver/) /golive (http://www.adobe.com/products/golive/) /frontpage (http://office.microsoft.com/en-us/FX010858021033.aspx) /htmlbooks (http://www.tinaja.com/books/bkhtml.asp) /htmldummybook (http://www.amazon.com/exec/obidos/ISBN=0764507230/donlancastersgurA/) /naa (http://www.auctioneers.org) /histolog.pdf (http://www.tinaja.com/glib/histolog.pdf) /analogeb.pdf (http://www.tinaja.com/glib/analogeb.pdf) /enhebay3.pdf (http://www.tinaja.com/glib/enhebay3.pdf) /ipswitch (http://www.ipswitch.com/Products/WS_FTP) /networksolutions (http://www.networksolutions.com) /whois (http://www.networksolutions.com/cgi-bin/whois/whois) % entered furing gg65 msexec summary /picpro (http://www.tinaja.com/glib/mspicpro.pdf) /fourier (http://www.tinaja.com/glib/muse90.pdf) % entered during GG64 log log graphs /pdfrm1 (http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/pdf_creation_apis_and_specs/pdfmarkReference.pdf) /loglog01.psl (http://www.tinaja.com/psutils/loglog01.psl) /loglog01.pdf (http://www.tinaja.com/glair/loglog01.pdf) /bookcvr1.psl (http://www.tinaja.com/psutils/bookcvr1.psl) /bookcvr1.pdf (http://www.tinaja.com/glair/bookcvr1.pdf) % entered during gg 63 two phase magic sinewaves /numschip.pdf (http://www.tinaja.com/glib/numschip.pdf) /mspicpro.pdf (http://www.tinaja.com/glib/mspicpro.pdf) % entered during gg 62 enhance III /analogeb.pdf (http://www.tinaja.com/glib/analogeb.pdf) /rss (http://www.tinaja.com/whtnu.xml) /oreproptable (http://www.tinaja.com/whtnu05.asp#rogue3) /javascriptslideshow (http://www.codelifter.com/main/javascript/slideshow4.html) /logrptx2.psl (http://www.tinaja.com/psutils/logrptx2.psl) % entered during GG61 /jpg2pdf.pdf (http://www.tinaja.com/glib/jpg2pdf.pdf) /barcodeonline (http://www.raise-the-bar.co.uk/cgi-bin/webbarcodegen.pl) /barcodegen (http://www.terryburton.co.uk/barcodewriter/) /barcodetutorial (http://www.barcode-us.com/info_center/bookinfo.htm) /isbn (http://www.isbn.org/standards/home/index.asp) /bookcovr.psl (http://www.tinaja.com/glib/bookcovr.psl) /bookcovr.pdf (http://www.tinaja.com/glib/bookcovr.pdf) /begstuff (http://www.tinaja.com/post01.asp#begstuff) /ghostscript (http://www.cs.wisc.edu/~ghost/) /bod01 (http://www.tinaja.com/bod01.asp) % entered during GG 60 /bezlenjf.pdf (http://www.tinaja.com/glib/bezlenjf.pdf) /bzlnsub1.psl (http://www.tinaja.com/psutils/bzlnsub1.psl) /cubemath.pdf (http://www.tinaja.com/glib/cubemath.pdf) % entered during GG 59 /imbz4p01.psl (http://www.tinaja.com/psutils/imbz4p01.psl) /cubemath.pdf (http://www.tinaja.com/glib/cubemath.pdf) /bernstein (http://graphics.idav.ucdavis.edu/education/CAGDNotes/Bernstein-Polynomials.pdf) /ellipse4.psl (http://www.tinaja.com/glib/ellipse4.psl) /wnhsl (http://www.tinaja.com/whatnu05.asp#hsl) /stalac.pdf (http://www.tinaja.com/glib/stalac.pdf) /santa01 (http://www.tinaja.com/santa01.asp) /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) /swingtlt.pdf (http://www.tinaja.com/glib/swingt01.pdf) /swingt01.psl (http://www.tinaja.com/glib/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.psl) /rebound1.pdf (http://www.tinaja.com/glib/rebound1.pdf) /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) /muse153 (http://www.tinaja.com/glib/muse153.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/blat01.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) /oldfuzzybez (http://www.tinaja.com/text/fuzzybez.html) /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) /expbmp.pdf (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) % dead /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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% page manager /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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % //// 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? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Burplebox routines /burpwide 29.5 store /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 { /burplebox1 {1.5 burpcom} store /burplebox1.5 {2 burpcom} store /burplebox2 {2.5 burpcom} store /burplebox2.5 {3 burpcom} store /burplebox3 {3.5 burpcom} store /burplebox3.5 {4 burpcom} store /burplebox4 {4.5 burpcom} store /burplebox4.5 {5 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 /burplebox17 {17.5 burpcom} store /burplebox17.5 {18 burpcom} store /burplebox18 {18.5 burpcom} store /burplebox18.5 {19 burpcom} store /burplebox19 {19.5 burpcom} store /burplebox19.5 {20 burpcom} store /burplebox20 {20.5 burpcom} store /burplebox21.5 {22 burpcom} store /burplebox22{22.5 burpcom} store /burplebox22.5 {23 burpcom} store /burplebox23 {23.5 burpcom} store /burplebox23.5 {24 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 /burplebox30 {30.5 burpcom} store /burplebox31 {31.5 burpcom} store /burplebox31.5 {32 burpcom} store /burplebox33.5 {34 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 } pop 1 1 50 {cvi /size exch store % make all the burpleboxes (burplebox) size 20 string cvs mergestr cvn mark size 0.5 add /burpcom cvx ] cvx store (burplebox) size 0.5 add 20 string cvs mergestr cvn mark size 1 add /burpcom cvx ] cvx store } for /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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % New sequence of auto positioning figures... % combined autopos jpeg conversion and hotlink: /autoimageandlink1 {save /af1 exch store xpos ypos yinc add translate 6.3 -14.1 684 384 .033 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/cabsvid1.jpg) % url first % (http://www.tinaja.com/images/bargs/ce47u25v.jpg) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\78_ebayskill_VI\\cabsvid1.jpg) jpegimageprocwithlink af1 restore} store /autoimageandlink2 {save /af2 exch store xpos ypos yinc add translate 18 -11.8 684 487 .022 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/ce47u25v.jpg) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\70_ebayskill_iv\\ce47u25v.jpg) jpegimageprocwithlink af2 restore} store /autoimageandlink3 {save /af1 exch store xpos ypos yinc add translate 1 -12 684 487 .022 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/pwrssrx3x.bmp) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\70_ebayskill_iv\\origpwri.jpg) jpegimageprocwithlink af1 restore} store /autoimageandlink4 {save /af2 exch store xpos ypos yinc add translate 18 -12 -1.5 add 684 487 .022 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/pwrssrx3.bmp) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\70_ebayskill_iv\\finpwri.jpg) jpegimageprocwithlink af2 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% ordinary tracking figures /autofig1 { /figadvance 10 store save /snap1 exch store xpos 2 add ypos figadvance sub translate figure1 snap1 restore /ypos ypos figadvance sub yinc sub store } store /autofig2 { /figadvance 13 store save /snap2 exch store xpos 2 add ypos figadvance sub translate figure2 snap2 restore /ypos ypos figadvance sub yinc sub store } store /autofig3 { /figadvance 13 store save /snap22 exch store xpos 2 add ypos figadvance sub translate figure3 snap22 restore /ypos ypos figadvance sub yinc sub store } store /autofig4 { /figadvance 13 store save /snap2 exch store xpos 2 add ypos figadvance sub translate figure4 snap2 restore /ypos ypos figadvance sub yinc sub store } store %%%%%%%%%%%%%%% fixed position figures here %%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% begin current gg figures removed many previous %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % figure1 for gg83 /figure1 { save /snap3 exch store 9.5 -3.3 translate % position in box 1.2 dup scale %%% this is a gray box with five interpolation points in it 0 0 mt 10 pu 10 pr 10 pd closepath 1 0.7 0.5 setrgbcolor fill /bdot { gsave 1.75 dup scale dot grestore} store black line1 0 0 mt 10 u 10 r 10 d 10 l 2 2 mt bdot 2 8 mt bdot 8 2 mt bdot 8 8 mt bdot /cstretch 0.015 store /sstretch 0.015 store /font1 /Helvetica 0.85 gonzofont font1 black 2 2.7 (p(0,0)) cc 2 6.7 (p(0,1)) cc 8 2.7 (p(1,0)) cc 8 6.7 (p(1,1)) cc 1 0 0 setrgbcolor 4 4 mt bdot 4 4.7 (new p(x,y)) cc snap3 restore } store % end figure 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % figure2 for gg83 /figure2 { save /snap3 exch store -4 -19.5 translate % position in box 0.8 dup scale /nicerainbowdatapatchedx [ [0.0 0.71 1.0] [0.002668 0.712655 1.0] [0.006003 0.715973 1.0] [0.00867101 0.718628 1.0] [0.012006 0.721946 1.0] [0.015341 0.725265 1.0] [0.018009 0.727919 1.0] [0.021344 0.731238 1.0] [0.024012 0.733893 1.0] [0.027347 0.737211 1.0] [0.030015 0.739866 1.0] % color 10 [0.03335 0.743184 1.0] [0.036018 0.745839 1.0] [0.039353 0.749157 1.0] [0.042021 0.751812 1.0] [0.045356 0.75513 1.0] [0.048024 0.757785 1.0] [0.050692 0.76044 1.0] [0.054027 0.763758 1.0] [0.056695 0.766413 1.0] % color 20 [0.06003 0.769731 1.0] [0.062698 0.772386 1.0] [0.066033 0.775705 1.0] [0.068701 0.778359 1.0] [0.072036 0.781678 1.0] [0.074704 0.784332 1.0] [0.078039 0.787651 1.0] [0.080707 0.790305 1.0] [0.084042 0.793624 1.0] [0.08671 0.796279 1.0] [0.090045 0.799597 1.0] [0.09338 0.802915 1.0] [0.096048 0.80557 1.0] [0.099383 0.808889 1.0] [0.102051 0.811543 1.0] [0.105386 0.814862 1.0] [0.107387 0.816853 1.0] [0.110722 0.820171 1.0] [0.112056 0.821498 1.0] [0.115391 0.824817 1.0] [0.116058 0.825481 1.0] [0.119393 0.828799 1.0] [0.119393 0.828799 1.0] [0.122728 0.832117 1.0] [0.122061 0.831454 1.0] [0.125396 0.834772 1.0] [0.124062 0.833445 1.0] [0.127397 0.836763 1.0] [0.125396 0.834772 1.0] [0.128731 0.83809 1.0] [0.12673 0.836099 1.0] [0.130065 0.839418 1.0] [0.128064 0.837427 1.0] [0.131399 0.840745 1.0] [0.129398 0.838754 1.0] [0.132733 0.842073 1.0] [0.131113 0.840461 1.0] [0.134448 0.843779 1.0] [0.133209 0.842547 1.0] [0.136544 0.845865 1.0] [0.135687 0.845012 1.0] [0.139022 0.84833 1.0] [0.138545 0.847856 1.0] [0.14188 0.851174 1.0] [0.141785 0.85108 1.0] [0.14512 0.854398 1.0] [0.145406 0.854682 1.0] [0.148741 0.858001 1.0] [0.149408 0.858665 1.0] [0.152743 0.861983 1.0] [0.15341 0.862647 1.0] [0.156745 0.865965 1.0] [0.157412 0.866629 1.0] [0.160747 0.869947 1.0] [0.161414 0.870611 1.0] [0.164749 0.873929 1.0] [0.165416 0.874593 1.0] [0.168751 0.877911 1.0] [0.169418 0.878575 1.0] [0.172753 0.881893 1.0] [0.17342 0.882557 1.0] [0.176755 0.885875 1.0] [0.177422 0.886539 1.0] [0.180757 0.889858 1.0] [0.181424 0.890521 1.0] [0.184759 0.89384 1.0] [0.185426 0.894503 1.0] [0.188761 0.897822 1.0] [0.189428 0.898485 1.0] [0.192763 0.901804 1.0] [0.193239 0.902278 1.0] [0.196574 0.905596 1.0] [0.197241 0.90626 1.0] [0.200576 0.909578 1.0] [0.201243 0.910242 1.0] [0.204578 0.91356 1.0] [0.206579 0.915551 1.0] [0.209914 0.91887 1.0] [0.214678 0.92361 1.0] [0.218013 0.926929 1.0] [0.225541 0.995372 1.0] [0.228876 0.991897 1.0] [0.238691 0.98167 1.0] [0.242026 0.978194 1.0] [0.254317 0.965385 1.0] [0.257652 1.0 1.0] [0.271183 1.0 1.0] [0.274518 1.0 1.0] [0.289478 0.928746 1.0] [0.292813 0.925271 1.0] [0.307868 0.909582 1.0] [0.311203 0.906107 1.0] [0.324924 0.891809 1.0] [0.328259 0.888334 1.0] [0.340551 0.875525 1.0] [0.343886 0.872049 1.0] [0.35452 0.860968 1.0] [0.357855 0.857493 1.0] [0.366831 0.84814 1.0] [0.370166 0.844664 1.0] [0.378341 0.836145 1.0] [0.381676 0.83267 1.0] [0.389051 0.824984 1.0] [0.392386 0.821509 1.0] [0.398961 0.814658 1.0] [0.402296 0.811182 1.0] [0.40807 0.805165 1.0] [0.411405 0.80169 1.0] [0.416474 0.796408 1.0] [0.419809 0.792932 1.0] [0.424879 0.78765 1.0] [0.428214 0.784175 1.0] [0.433283 0.778892 1.0] [0.436618 0.775417 1.0 0.01 sub ] [0.441782 0.770035 1.0 0.02 sub ] [0.445117 0.76656 1.0 0.03 sub ] [0.450187 0.761278 1.0 0.04 sub ] [0.453522 0.757802 1.0 0.05 sub ] [0.458591 0.75252 1.0 0.06 sub ] [0.461926 0.749045 1.0 0.07 sub ] [0.466995 0.743762 1.0 0.08 sub ] [0.47033 0.740287 1.0 0.09 sub ] [0.475552 0.734846 1.0 0.10 sub ] [0.478887 0.73137 1.0 0.11 sub ] [0.484061 0.725979 1.0 0.12 sub ] [0.487396 0.722503 1.0 0.125 sub ] [0.492589 0.717092 1.0 0.13 sub ] [0.495924 0.713617 1.0 0.125 sub ] [0.501041 0.708285 1.0 0.12 sub ] [0.504376 0.704809 1.0 0.11 sub ] [0.509511 0.699457 1.0 0.10 sub ] [0.512846 0.695982 1.0 0.09 sub] [0.518001 0.69061 1.0 0.08 sub ] [0.521336 0.687135 1.0 0.07 sub ] [0.526606 0.681644 1.0 0.06 sub ] [0.529941 0.678169 1.0 0.05 sub ] [0.534591 0.673323 1.0 0.04 sub ] [0.537926 0.669848 1.0 0.02 sub ] [0.542252 0.66534 1.0 0.01 sub ] [0.545587 0.661865 1.0 0.00 sub ] [0.549522 0.657764 1.0 0.00 sub ] [0.552857 0.654289 1.0] [0.556401 0.650595 1.0] [0.559736 0.64712 1.0] [0.562986 0.643734 1.0] [0.566321 0.640259 1.0] [0.56916 0.6373 1.0] [0.572495 0.633824 1.0] [0.574839 0.631382 1.0] [0.578174 0.627906 1.0] [0.580604 0.625374 1.0] [0.583939 0.621899 1.0] [0.586359 0.619377 1.0] [0.589694 0.615902 1.0] [0.592153 0.61334 1.0] [0.595488 0.609865 1.0] [0.597936 0.607313 1.0] [0.601271 0.603838 1.0] [0.603711 0.601296 1.0] [0.607046 0.59782 1.0] [0.609495 0.595269 1.0] [0.61283 0.591793 1.0] [0.615278 0.589242 1.0] [0.618613 0.585766 1.0] [0.621062 0.583214 1.0] [0.624397 0.579739 1.0] [0.626846 0.577187 1.0] [0.630181 0.573712 1.0] [0.632582 0.57121 1.0] [0.635917 0.567735 1.0] [0.638319 0.565232 1.0] [0.641654 0.561757 1.0] [0.644055 0.559255 1.0] [0.64739 0.55578 1.0] [0.649791 0.553277 1.0] [0.653126 0.549802 1.0] [0.655527 0.5473 1.0] [0.658862 0.543825 1.0] [0.661263 0.541322 1.0] [0.664598 0.537847 1.0] [0.667 0.535345 1.0] ] store /data [ [0.60 0.60 0.48 0.24 0.60 0.60] [0.60 0.60 0.48 0.24 0.60 0.60] [0.00 0.00 0.36 0.12 0.48 0.48] [0.24 0.24 0.48 0.60 0.12 0.12] [0.12 0.12 0.24 0.48 0.36 0.36] [0.12 0.12 0.24 0.48 0.36 0.36] ] store /xbox 0 def % temporary before loop /ybox 2 def 1 1 3 {/xbox exch store 1 1 3 {/ybox exch store 0 0.1 1 { /xres exch store 0 0.1 1 {/yres exch store xres round yres round 2 mul add cvi [ {data ybox get xbox get} % lower left {data ybox get xbox 1 add get} % lower right {data ybox 1 add get xbox get} % upper left {data ybox 1 add get xbox 1 add get} % upper right ] exch get exec 200 mul .667 div floor cvi nicerainbowdatapatchedx exch get aload pop sethsbcolor xres 10 mul xbox 10 mul add yres 10 mul ybox 10 mul add mt 1 pr 1 pu 1 pl closepath fill } for } for } for } for black 40 40 mt dot 40 10 mt dot 40 20 mt dot 40 30 mt dot 10 40 mt dot 10 10 mt dot 10 20 mt dot 10 30 mt dot 20 40 mt dot 20 10 mt dot 20 20 mt dot 20 30 mt dot 30 40 mt dot 30 10 mt dot 30 20 mt dot 30 30 mt dot snap3 restore } store % end figure 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % figure3 for gg83 /figure3 { save /snap3 exch store -5.5 -19.3 translate % position in box 0.8 dup scale /nicerainbowdatapatchedx [ [0.0 0.71 1.0] [0.002668 0.712655 1.0] [0.006003 0.715973 1.0] [0.00867101 0.718628 1.0] [0.012006 0.721946 1.0] [0.015341 0.725265 1.0] [0.018009 0.727919 1.0] [0.021344 0.731238 1.0] [0.024012 0.733893 1.0] [0.027347 0.737211 1.0] [0.030015 0.739866 1.0] % color 10 [0.03335 0.743184 1.0] [0.036018 0.745839 1.0] [0.039353 0.749157 1.0] [0.042021 0.751812 1.0] [0.045356 0.75513 1.0] [0.048024 0.757785 1.0] [0.050692 0.76044 1.0] [0.054027 0.763758 1.0] [0.056695 0.766413 1.0] % color 20 [0.06003 0.769731 1.0] [0.062698 0.772386 1.0] [0.066033 0.775705 1.0] [0.068701 0.778359 1.0] [0.072036 0.781678 1.0] [0.074704 0.784332 1.0] [0.078039 0.787651 1.0] [0.080707 0.790305 1.0] [0.084042 0.793624 1.0] [0.08671 0.796279 1.0] [0.090045 0.799597 1.0] [0.09338 0.802915 1.0] [0.096048 0.80557 1.0] [0.099383 0.808889 1.0] [0.102051 0.811543 1.0] [0.105386 0.814862 1.0] [0.107387 0.816853 1.0] [0.110722 0.820171 1.0] [0.112056 0.821498 1.0] [0.115391 0.824817 1.0] [0.116058 0.825481 1.0] [0.119393 0.828799 1.0] [0.119393 0.828799 1.0] [0.122728 0.832117 1.0] [0.122061 0.831454 1.0] [0.125396 0.834772 1.0] [0.124062 0.833445 1.0] [0.127397 0.836763 1.0] [0.125396 0.834772 1.0] [0.128731 0.83809 1.0] [0.12673 0.836099 1.0] [0.130065 0.839418 1.0] [0.128064 0.837427 1.0] [0.131399 0.840745 1.0] [0.129398 0.838754 1.0] [0.132733 0.842073 1.0] [0.131113 0.840461 1.0] [0.134448 0.843779 1.0] [0.133209 0.842547 1.0] [0.136544 0.845865 1.0] [0.135687 0.845012 1.0] [0.139022 0.84833 1.0] [0.138545 0.847856 1.0] [0.14188 0.851174 1.0] [0.141785 0.85108 1.0] [0.14512 0.854398 1.0] [0.145406 0.854682 1.0] [0.148741 0.858001 1.0] [0.149408 0.858665 1.0] [0.152743 0.861983 1.0] [0.15341 0.862647 1.0] [0.156745 0.865965 1.0] [0.157412 0.866629 1.0] [0.160747 0.869947 1.0] [0.161414 0.870611 1.0] [0.164749 0.873929 1.0] [0.165416 0.874593 1.0] [0.168751 0.877911 1.0] [0.169418 0.878575 1.0] [0.172753 0.881893 1.0] [0.17342 0.882557 1.0] [0.176755 0.885875 1.0] [0.177422 0.886539 1.0] [0.180757 0.889858 1.0] [0.181424 0.890521 1.0] [0.184759 0.89384 1.0] [0.185426 0.894503 1.0] [0.188761 0.897822 1.0] [0.189428 0.898485 1.0] [0.192763 0.901804 1.0] [0.193239 0.902278 1.0] [0.196574 0.905596 1.0] [0.197241 0.90626 1.0] [0.200576 0.909578 1.0] [0.201243 0.910242 1.0] [0.204578 0.91356 1.0] [0.206579 0.915551 1.0] [0.209914 0.91887 1.0] [0.214678 0.92361 1.0] [0.218013 0.926929 1.0] [0.225541 0.995372 1.0] [0.228876 0.991897 1.0] [0.238691 0.98167 1.0] [0.242026 0.978194 1.0] [0.254317 0.965385 1.0] [0.257652 1.0 1.0] [0.271183 1.0 1.0] [0.274518 1.0 1.0] [0.289478 0.928746 1.0] [0.292813 0.925271 1.0] [0.307868 0.909582 1.0] [0.311203 0.906107 1.0] [0.324924 0.891809 1.0] [0.328259 0.888334 1.0] [0.340551 0.875525 1.0] [0.343886 0.872049 1.0] [0.35452 0.860968 1.0] [0.357855 0.857493 1.0] [0.366831 0.84814 1.0] [0.370166 0.844664 1.0] [0.378341 0.836145 1.0] [0.381676 0.83267 1.0] [0.389051 0.824984 1.0] [0.392386 0.821509 1.0] [0.398961 0.814658 1.0] [0.402296 0.811182 1.0] [0.40807 0.805165 1.0] [0.411405 0.80169 1.0] [0.416474 0.796408 1.0] [0.419809 0.792932 1.0] [0.424879 0.78765 1.0] [0.428214 0.784175 1.0] [0.433283 0.778892 1.0] [0.436618 0.775417 1.0 0.01 sub ] [0.441782 0.770035 1.0 0.02 sub ] [0.445117 0.76656 1.0 0.03 sub ] [0.450187 0.761278 1.0 0.04 sub ] [0.453522 0.757802 1.0 0.05 sub ] [0.458591 0.75252 1.0 0.06 sub ] [0.461926 0.749045 1.0 0.07 sub ] [0.466995 0.743762 1.0 0.08 sub ] [0.47033 0.740287 1.0 0.09 sub ] [0.475552 0.734846 1.0 0.10 sub ] [0.478887 0.73137 1.0 0.11 sub ] [0.484061 0.725979 1.0 0.12 sub ] [0.487396 0.722503 1.0 0.125 sub ] [0.492589 0.717092 1.0 0.13 sub ] [0.495924 0.713617 1.0 0.125 sub ] [0.501041 0.708285 1.0 0.12 sub ] [0.504376 0.704809 1.0 0.11 sub ] [0.509511 0.699457 1.0 0.10 sub ] [0.512846 0.695982 1.0 0.09 sub] [0.518001 0.69061 1.0 0.08 sub ] [0.521336 0.687135 1.0 0.07 sub ] [0.526606 0.681644 1.0 0.06 sub ] [0.529941 0.678169 1.0 0.05 sub ] [0.534591 0.673323 1.0 0.04 sub ] [0.537926 0.669848 1.0 0.02 sub ] [0.542252 0.66534 1.0 0.01 sub ] [0.545587 0.661865 1.0 0.00 sub ] [0.549522 0.657764 1.0 0.00 sub ] [0.552857 0.654289 1.0] [0.556401 0.650595 1.0] [0.559736 0.64712 1.0] [0.562986 0.643734 1.0] [0.566321 0.640259 1.0] [0.56916 0.6373 1.0] [0.572495 0.633824 1.0] [0.574839 0.631382 1.0] [0.578174 0.627906 1.0] [0.580604 0.625374 1.0] [0.583939 0.621899 1.0] [0.586359 0.619377 1.0] [0.589694 0.615902 1.0] [0.592153 0.61334 1.0] [0.595488 0.609865 1.0] [0.597936 0.607313 1.0] [0.601271 0.603838 1.0] [0.603711 0.601296 1.0] [0.607046 0.59782 1.0] [0.609495 0.595269 1.0] [0.61283 0.591793 1.0] [0.615278 0.589242 1.0] [0.618613 0.585766 1.0] [0.621062 0.583214 1.0] [0.624397 0.579739 1.0] [0.626846 0.577187 1.0] [0.630181 0.573712 1.0] [0.632582 0.57121 1.0] [0.635917 0.567735 1.0] [0.638319 0.565232 1.0] [0.641654 0.561757 1.0] [0.644055 0.559255 1.0] [0.64739 0.55578 1.0] [0.649791 0.553277 1.0] [0.653126 0.549802 1.0] [0.655527 0.5473 1.0] [0.658862 0.543825 1.0] [0.661263 0.541322 1.0] [0.664598 0.537847 1.0] [0.667 0.535345 1.0] ] store /data [ [0.60 0.60 0.48 0.24 0.60 0.60] [0.60 0.60 0.48 0.24 0.60 0.60] [0.00 0.00 0.36 0.12 0.48 0.48] [0.24 0.24 0.48 0.60 0.12 0.12] [0.12 0.12 0.24 0.48 0.36 0.36] [0.12 0.12 0.24 0.48 0.36 0.36] ] store %% hundred step bilineal /hundredsq { 1 1 3 {/xbox exch store 1 1 3 {/ybox exch store 0 0.03 1 {/xx exch store 0 0.03 1 {/yy exch store data ybox get xbox get % lower left 1 xx sub 1 yy sub mul mul data ybox get xbox 1 add get % lower right 1 yy sub xx mul mul data ybox 1 add get xbox get % upper left 1 xx sub yy mul mul data ybox 1 add get xbox 1 add get % upper right xx mul yy mul add add add 200 mul .667 div floor cvi nicerainbowdatapatchedx exch get aload pop sethsbcolor xbox xx add 10 mul ybox yy add 10 mul mt .3 pu .3 pr .3 pd closepath fill }for }for } for } for } store hundredsq black 40 40 mt dot 40 10 mt dot 40 20 mt dot 40 30 mt dot 10 40 mt dot 10 10 mt dot 10 20 mt dot 10 30 mt dot 20 40 mt dot 20 10 mt dot 20 20 mt dot 20 30 mt dot 30 40 mt dot 30 10 mt dot 30 20 mt dot 30 30 mt dot snap3 restore } store % end figure 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % figure4 for gg83 /figure4 { save /snap3 exch store -5.5 -19.3 translate % position in box 0.8 dup scale /nicerainbowdatapatchedx [ [0.0 0.71 1.0] [0.002668 0.712655 1.0] [0.006003 0.715973 1.0] [0.00867101 0.718628 1.0] [0.012006 0.721946 1.0] [0.015341 0.725265 1.0] [0.018009 0.727919 1.0] [0.021344 0.731238 1.0] [0.024012 0.733893 1.0] [0.027347 0.737211 1.0] [0.030015 0.739866 1.0] % color 10 [0.03335 0.743184 1.0] [0.036018 0.745839 1.0] [0.039353 0.749157 1.0] [0.042021 0.751812 1.0] [0.045356 0.75513 1.0] [0.048024 0.757785 1.0] [0.050692 0.76044 1.0] [0.054027 0.763758 1.0] [0.056695 0.766413 1.0] % color 20 [0.06003 0.769731 1.0] [0.062698 0.772386 1.0] [0.066033 0.775705 1.0] [0.068701 0.778359 1.0] [0.072036 0.781678 1.0] [0.074704 0.784332 1.0] [0.078039 0.787651 1.0] [0.080707 0.790305 1.0] [0.084042 0.793624 1.0] [0.08671 0.796279 1.0] [0.090045 0.799597 1.0] [0.09338 0.802915 1.0] [0.096048 0.80557 1.0] [0.099383 0.808889 1.0] [0.102051 0.811543 1.0] [0.105386 0.814862 1.0] [0.107387 0.816853 1.0] [0.110722 0.820171 1.0] [0.112056 0.821498 1.0] [0.115391 0.824817 1.0] [0.116058 0.825481 1.0] [0.119393 0.828799 1.0] [0.119393 0.828799 1.0] [0.122728 0.832117 1.0] [0.122061 0.831454 1.0] [0.125396 0.834772 1.0] [0.124062 0.833445 1.0] [0.127397 0.836763 1.0] [0.125396 0.834772 1.0] [0.128731 0.83809 1.0] [0.12673 0.836099 1.0] [0.130065 0.839418 1.0] [0.128064 0.837427 1.0] [0.131399 0.840745 1.0] [0.129398 0.838754 1.0] [0.132733 0.842073 1.0] [0.131113 0.840461 1.0] [0.134448 0.843779 1.0] [0.133209 0.842547 1.0] [0.136544 0.845865 1.0] [0.135687 0.845012 1.0] [0.139022 0.84833 1.0] [0.138545 0.847856 1.0] [0.14188 0.851174 1.0] [0.141785 0.85108 1.0] [0.14512 0.854398 1.0] [0.145406 0.854682 1.0] [0.148741 0.858001 1.0] [0.149408 0.858665 1.0] [0.152743 0.861983 1.0] [0.15341 0.862647 1.0] [0.156745 0.865965 1.0] [0.157412 0.866629 1.0] [0.160747 0.869947 1.0] [0.161414 0.870611 1.0] [0.164749 0.873929 1.0] [0.165416 0.874593 1.0] [0.168751 0.877911 1.0] [0.169418 0.878575 1.0] [0.172753 0.881893 1.0] [0.17342 0.882557 1.0] [0.176755 0.885875 1.0] [0.177422 0.886539 1.0] [0.180757 0.889858 1.0] [0.181424 0.890521 1.0] [0.184759 0.89384 1.0] [0.185426 0.894503 1.0] [0.188761 0.897822 1.0] [0.189428 0.898485 1.0] [0.192763 0.901804 1.0] [0.193239 0.902278 1.0] [0.196574 0.905596 1.0] [0.197241 0.90626 1.0] [0.200576 0.909578 1.0] [0.201243 0.910242 1.0] [0.204578 0.91356 1.0] [0.206579 0.915551 1.0] [0.209914 0.91887 1.0] [0.214678 0.92361 1.0] [0.218013 0.926929 1.0] [0.225541 0.995372 1.0] [0.228876 0.991897 1.0] [0.238691 0.98167 1.0] [0.242026 0.978194 1.0] [0.254317 0.965385 1.0] [0.257652 1.0 1.0] [0.271183 1.0 1.0] [0.274518 1.0 1.0] [0.289478 0.928746 1.0] [0.292813 0.925271 1.0] [0.307868 0.909582 1.0] [0.311203 0.906107 1.0] [0.324924 0.891809 1.0] [0.328259 0.888334 1.0] [0.340551 0.875525 1.0] [0.343886 0.872049 1.0] [0.35452 0.860968 1.0] [0.357855 0.857493 1.0] [0.366831 0.84814 1.0] [0.370166 0.844664 1.0] [0.378341 0.836145 1.0] [0.381676 0.83267 1.0] [0.389051 0.824984 1.0] [0.392386 0.821509 1.0] [0.398961 0.814658 1.0] [0.402296 0.811182 1.0] [0.40807 0.805165 1.0] [0.411405 0.80169 1.0] [0.416474 0.796408 1.0] [0.419809 0.792932 1.0] [0.424879 0.78765 1.0] [0.428214 0.784175 1.0] [0.433283 0.778892 1.0] [0.436618 0.775417 1.0 0.01 sub ] [0.441782 0.770035 1.0 0.02 sub ] [0.445117 0.76656 1.0 0.03 sub ] [0.450187 0.761278 1.0 0.04 sub ] [0.453522 0.757802 1.0 0.05 sub ] [0.458591 0.75252 1.0 0.06 sub ] [0.461926 0.749045 1.0 0.07 sub ] [0.466995 0.743762 1.0 0.08 sub ] [0.47033 0.740287 1.0 0.09 sub ] [0.475552 0.734846 1.0 0.10 sub ] [0.478887 0.73137 1.0 0.11 sub ] [0.484061 0.725979 1.0 0.12 sub ] [0.487396 0.722503 1.0 0.125 sub ] [0.492589 0.717092 1.0 0.13 sub ] [0.495924 0.713617 1.0 0.125 sub ] [0.501041 0.708285 1.0 0.12 sub ] [0.504376 0.704809 1.0 0.11 sub ] [0.509511 0.699457 1.0 0.10 sub ] [0.512846 0.695982 1.0 0.09 sub] [0.518001 0.69061 1.0 0.08 sub ] [0.521336 0.687135 1.0 0.07 sub ] [0.526606 0.681644 1.0 0.06 sub ] [0.529941 0.678169 1.0 0.05 sub ] [0.534591 0.673323 1.0 0.04 sub ] [0.537926 0.669848 1.0 0.02 sub ] [0.542252 0.66534 1.0 0.01 sub ] [0.545587 0.661865 1.0 0.00 sub ] [0.549522 0.657764 1.0 0.00 sub ] [0.552857 0.654289 1.0] [0.556401 0.650595 1.0] [0.559736 0.64712 1.0] [0.562986 0.643734 1.0] [0.566321 0.640259 1.0] [0.56916 0.6373 1.0] [0.572495 0.633824 1.0] [0.574839 0.631382 1.0] [0.578174 0.627906 1.0] [0.580604 0.625374 1.0] [0.583939 0.621899 1.0] [0.586359 0.619377 1.0] [0.589694 0.615902 1.0] [0.592153 0.61334 1.0] [0.595488 0.609865 1.0] [0.597936 0.607313 1.0] [0.601271 0.603838 1.0] [0.603711 0.601296 1.0] [0.607046 0.59782 1.0] [0.609495 0.595269 1.0] [0.61283 0.591793 1.0] [0.615278 0.589242 1.0] [0.618613 0.585766 1.0] [0.621062 0.583214 1.0] [0.624397 0.579739 1.0] [0.626846 0.577187 1.0] [0.630181 0.573712 1.0] [0.632582 0.57121 1.0] [0.635917 0.567735 1.0] [0.638319 0.565232 1.0] [0.641654 0.561757 1.0] [0.644055 0.559255 1.0] [0.64739 0.55578 1.0] [0.649791 0.553277 1.0] [0.653126 0.549802 1.0] [0.655527 0.5473 1.0] [0.658862 0.543825 1.0] [0.661263 0.541322 1.0] [0.664598 0.537847 1.0] [0.667 0.535345 1.0] ] store /datax [ [0.60 0.60 0.48 0.24 0.60 0.60] [0.60 0.60 0.48 0.24 0.60 0.60] [0.00 0.00 0.36 0.12 0.48 0.48] [0.24 0.24 0.48 0.60 0.12 0.12] [0.12 0.12 0.24 0.48 0.36 0.36] [0.12 0.12 0.24 0.48 0.36 0.36] ] store % data grabbing routines /grabdata { % preget gets are probably faster /w0 datax yi get xi get store % these evaluate data /w1 datax yi get xi 1 add get store /w2 datax yi 1 add get xi get store /w3 datax yi 1 add get xi 1 add get store /x0 datax yi get xi 1 add get datax yi get xi 1 sub get sub 2 div store /x1 datax yi get xi 2 add get datax yi get xi get sub 2 div store /x2 datax yi 1 add get xi 1 add get datax yi get xi 1 add get sub 2 div store /x3 datax yi 2 add get xi get datax yi 1 add get xi get sub 2 div store /y0 datax yi 1 add get xi get datax yi 1 sub get xi get sub 2 div store /y1 datax yi 1 add get xi 1 add get datax yi 1 sub get xi 1 add get sub 2 div store /y2 datax yi 2 add get xi get datax yi get xi get sub 2 div store /y3 datax yi 2 add get xi 1 add get datax yi get xi 1 add get sub 2 div store /z0 x0 y0 mul store % this may be wrong. /z1 x1 y1 mul store /z2 x2 y2 mul store /z3 x3 y3 mul store false {/z0 0 store % temp defeat /z1 0 store /z2 0 store /z3 0 store } if } bind store % try fewer gets... /grabdata { % preget gets are probably faster /w0 datax yi get xi get store % these evaluate data /w1 datax yi get xi 1 add get store /w2 datax yi 1 add get xi get store /w3 datax yi 1 add get xi 1 add get store /x0 % datax yi get xi 1 add get w1 datax yi get xi 1 sub get sub 2 div store /x1 datax yi get xi 2 add get % datax yi get xi get w0 sub 2 div store /x2 % datax yi 1 add get xi 1 add get w3 datax yi 1 add get xi 1 sub get sub 2 div store /x3 datax yi 1 add get xi 2 add get % datax yi 1 add get xi get w2 sub 2 div store /y0 % datax yi 1 add get xi get w2 datax yi 1 sub get xi get sub 2 div store /y1 % datax yi 1 add get xi 1 add get w3 datax yi 1 sub get xi 1 add get sub 2 div store /y2 datax yi 2 add get xi get % datax yi get xi get w0 sub 2 div store /y3 datax yi 2 add get xi 1 add get % datax yi get xi 1 add get w1 sub 2 div store /z0 x0 y0 mul store % this may be wrong. /z1 x1 y1 mul store /z2 x2 y2 mul store /z3 x3 y3 mul store false {/z0 0 store % temp defeat /z1 0 store /z2 0 store /z3 0 store } if } bind store % coefficient def routines /findacoeffs { /a00 w0 store /a01 y0 store /a02 w0 -3 mul w2 3 mul add y0 -2 mul add y2 sub store /a03 w0 2 mul w2 -2 mul add y0 add y2 add store /a10 x0 store /a11 z0 store /a12 x0 -3 mul x2 3 mul add z0 -2 mul add z2 sub store /a13 x0 2 mul x2 -2 mul add z0 add z2 add store /a20 w0 -3 mul w1 3 mul add x0 -2 mul add x1 sub store /a21 y0 -3 mul y1 3 mul add z0 -2 mul add z1 sub store /a22 w0 9 mul w1 -9 mul add w2 -9 mul add w3 9 mul add x0 6 mul add x1 3 mul add x2 -6 mul add x3 -3 mul add y0 6 mul add y1 -6 mul add y2 3 mul add y3 -3 mul add z0 4 mul add z1 2 mul add z2 2 mul add z3 add store /a23 w0 -6 mul w1 6 mul add w2 6 mul add w3 -6 mul add x0 -4 mul add x1 -2 mul add x2 4 mul add x3 2 mul add y0 -3 mul add y1 3 mul add y2 -3 mul add y3 3 mul add z0 -2 mul add z1 neg add z2 -2 mul add z3 neg add store /a30 w0 2 mul w1 -2 mul add x0 add x1 add store /a31 y0 2 mul y1 -2 mul add z0 add z1 add store /a32 w0 -6 mul w1 6 mul add w2 6 mul add w3 -6 mul add x0 -3 mul add x1 -3 mul add x2 3 mul add x3 3 mul add y0 -4 mul add y1 4 mul add y2 -2 mul add y3 2 mul add z0 -2 mul add z1 -2 mul add z2 neg add z3 neg add store /a33 w0 4 mul w1 -4 mul add w2 -4 mul add w3 4 mul add x0 2 mul add x1 2 mul add x2 -2 mul add x3 -2 mul add y0 2 mul add y1 -2 mul add y2 2 mul add y3 -2 mul add z0 add z1 add z2 add z3 add store } bind store % actual bicubic calc /bicubiccalc { % creates a surface from sixteen cubic equations a00 a01 yr mul add a02 yr 2 exp mul add a03 yr 3 exp mul add a10 xr mul add a11 xr mul yr mul add a12 xr mul yr 2 exp mul add a13 xr mul yr 3 exp mul add a20 xr 2 exp mul add a21 xr 2 exp mul yr mul add a22 xr 2 exp mul yr 2 exp mul add a23 xr 2 exp mul yr 3 exp mul add a30 xr 3 exp mul add a31 xr 3 exp mul yr mul add a32 xr 3 exp mul yr 2 exp mul add a33 xr 3 exp mul yr 3 exp mul add } bind store % try to reduce exps? /bicubiccalc { % creates a surface from sixteen cubic equations /xx2 xr 2 exp store /xx3 xr 3 exp store /yy2 yr 2 exp store /yy3 yr 3 exp store { /xx2 xr dup mul store % avoid exp? slight penalty /xx3 xx2 xr mul store /yy2 yr dup mul store /yy3 yy2 yr mul store } pop a00 a01 yr mul add a02 yy2 mul add a03 yy3 mul add a10 xr mul add a11 xr mul yr mul add a12 xr mul yy2 mul add a13 xr mul yy3 mul add a20 xx2 mul add a21 xx2 mul yr mul add a22 xx2 mul yy2 mul add a23 xx2 mul yy3 mul add a30 xx3 mul add a31 xx3 mul yr mul add a32 xx3 mul yy2 mul add a33 xx3 mul yy3 mul add } bind store % possibly can create an a00 through a33 array and forall , eliminating % sixteen defs and sixteen variables. Also combines two procs % better yet, combine procs directly 30 on stack becomes seed for asfdasdf add % main controller code % enter dobicubic with position inside four dots as xx yy. Returns interpolated value /dobicubic { dup floor cvi dup /yi exch store sub /yr exch store % integer and residue dup floor cvi dup /xi exch store sub /xr exch store grabdata findacoeffs bicubiccalc } bind store % /////////// % there is NO WAY IN HELL this can be done sanely in postscript! % but timing returns TOO GOOD TO BE TRUE fraction of a millisecond! % WrONG!!! We are just barely doabe. % problems remain. Especially version 8 run??? % [ [0.60 0.60 0.48 0.24 0.60 0.60] % [0.60 0.60 0.48 0.24 0.60 0.60] % [0.00 0.00 0.36 0.12 0.48 0.48] % [0.24 0.24 0.48 0.60 0.12 0.12] % [0.12 0.12 0.24 0.48 0.36 0.36] % [0.12 0.12 0.24 0.48 0.36 0.36] ] %% 2,2 data is 0.48 3,3 data is 0.12 1 1 3 {/xbox exch store 1 1 3 {/ybox exch store 0 0.02 pop 0.02 0.99 {/xxx exch store 0 0.02 pop 0.02 0.99 {/yyy exch store xbox xxx add ybox yyy add dobicubic 200 mul 0.67 div 0.96 mul cvi % temp deglitcher dup 0 lt {pop 0} if % got a minus one? dup 200 gt {pop 200} if nicerainbowdatapatchedx exch get aload pop sethsbcolor xbox xxx add 10 mul ybox yyy add 10 mul mt 0.2 pop 0.2 pu 0.2 pop 0.2 pr 0.2 pop 0.2 pd closepath fill } for } for } for } for black 40 40 mt dot 40 10 mt dot 40 20 mt dot 40 30 mt dot 10 40 mt dot 10 10 mt dot 10 20 mt dot 10 30 mt dot 20 40 mt dot 20 10 mt dot 20 20 mt dot 20 30 mt dot 30 40 mt dot 30 10 mt dot 30 20 mt dot 30 30 mt dot snap3 restore } store % end figure 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end current figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Specific file info here /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 /burpon {mark /burple cvx 0.33 /setgray cvx ] cvx % additional internal gonzo printlist exch 3 index exch put exch 1 add exch} def /burpoff {mark /aqua cvx 0 /setgray cvx ] cvx printlist exch 3 index exch put exch 1 add exch} def /darkenheader {save /headsnap exch store xpos 1 sub ypos 0.2 add translate 0.3 1 1 setrgbcolor 0 0 mt 3.2 pd burpwide pr 3.2 pu closepath fill headsnap restore} store % sssssssssssssssssssss % start marker % Conversions between Bitmaps and PostScript arrays & images % =========================================================== % by Don Lancaster GG #84 BNP2PSA.PSL /tabs [14] store 20 48.3 0.7 add % 1 sub (Conversions |jBetween |j.BMP |jBitmaps|j and)cc 20 46.3 0.7 add % 1 sub (Postscript |jArrays|j-|jof|j-|jStrings |jand|j Images) cc black font2 textleft 43 0.3 add % this one only need |h below (|h|/aqua |/staytint1 |3Don Lancaster Synergetics, Box 809, Thatcher, AZ 85552 copyright c2007 as |/surl |6GuruGram|1|/gurgrm01 |/tinton1 |6#84 |/surl http://www.tinaja.com|/tinaja |/surl don@tinaja.com|/maildon (928) 428-4073 |/aqua |/black |a|0T|b|1he |/su PostScript|1|/post01 two dimensional |/to array-of-strings|/tx can be a very potent method to create, hold, or extensively modify |/to x-y|/tx data that eventually is to become your final graphic images. Such images may be calculated anew. Or they may be changes or improved transformations in existing earlier image formats. |h In this |/su GuruGram|1|/gurgrm01 , we will look at the needed conversions in getting from |/to .BMP|/tx bitmaps to PostScript |/to array-of-arrays|/tx and their more powerful |/to array-of-strings|/tx relatives. Plus the methods of converting those array formats back into PostScript color images for Acrobat |/to .PDF|/tx presentation or into traditional |/to .BMP|/tx images. |h |c PS |jArray |jof |jStrings |d A PostScript array can normally be any mixed group of data types. A specialized form of a PostScript array is the |/to string|/tx . Strings are arrays which have all of their values strictly limited to |/to 8-bit positive integer values|/tx in the range of |/to 0|/tx to |/to 255|/tx . |h Besides their obvious typographical uses, strings have many advantages over a generic array. Strings store much more compactly, can be read from or written to as files, and have many additional special commands available to them. While still behaving in pretty much the same manner as an array when accessed by such operators as |/to get|/tx , |/to put|/tx , or |/to forall|/tx . |h Thus, |/to there can be compelling advantages to storing and manipulating 8-bit |/to x-y data in the form of an array-of-strings|/tx , rather than a generic array-of-arrays. Typically, each string will represent one row of data, while the array will hold the successive rows making up a composite image. |h Some older candidates for internally generated strings-as-arrays updating might include this |/su fractal fern|1|/thefern , this |/su CIE Diagram|1|/falseclr.pdf , these |/su electric field plots|1|/rebound1.pdf , this |/su power|/p3anim01.pdf |/su animation demo|1|/p3anim01.pdf , or these |/su pixel interpolation maps|1|/pixintpl.pdf . |h Two examples of .BMP bitmap to array-of-strings back to bitmap might include |/su this image|1|/bannpe06.jpg or |/su this one|1|/arabbb.jpg . Along with similar product photo improvements that can end up highly useful for generating |/su eBay|1|/ebay sales. |h ) cl startnewpage /tabs [ 14] store (Here are some important uses for |/su PostScript|1|/post01 array-of-strings techniques\274 |/staytint1 |6\267 - Calculated PS x-y data to PS image conversions. |h |6\267 - Calculated PS x-y data to .BMP bitmap conversions. |h |6\267 - External .BMP bitmap to PS image conversions. |h |6\267 - .BMP bitmap to .BMP bitmap transformed improvements. |h |6\267 - Upgraded false color and rainbow presentations. |h |6\267 - Exploring new PostScript-as-Language opportunities. |/black |1A set of array-of-strings utilities has been newly posted as |/su AOSutil1.psl|1|/AOSutil1.psl . While fully compatible with our ongoing series of |/su Gonzo Utilities|1|/gonzotut.pdf , the Gonzo utilities themselves are not absolutely required for their use. |h As is usual, the Distiller in full versions of |/su Acrobat|1|/acrob01 makes an excellent host based |/su PostScript-as-Language|1|/distlang.pdf interpreter. As does |/su Ghostscript|1|/ghostscript . But there is one major new gotcha we should mention here\274 |6|/shiftin |/aqua |/burplebox6.5 |/staytint1 |h Versions 8.1 and higher of Acrobat Distiller default to preventing general file reads or writes. |h The workaround is to run Distiller from the Windows command line using "acrodist -F" . Solutions for other operating systems are found |/su here|1|/distbug . |h |1|/shiftout |/aqua |/black |h |c Some |jPS |jString |jUtilities |d We can start off with this string merging proc lifted from our |/su Gonzo Utilities|1|/gonzoutils \274 |6|/shiftin |/burple |/burplebox4 |/staytint1 |h /mergestr {2 copy length exch length add string dup dup 4 3 roll 4 index length exch putinterval 3 1 roll exch 0 exch putinterval} def |h |1|/shiftout |/aqua |/black |h This can be useful when combining a filename with its required full pathname. Our usual reminder here that |/to PostScript strings must use a double reverse slash |/to any time a single reverse slash is needed|/tx . |h Converting from a string to a generic array is fairly trivial\274 |6|/shiftin |/burple |/burplebox2 |/staytint1 |h /string2array {mark exch { } forall ] } store |h |1|/shiftout |/aqua |/black |h ) cl startnewpage /tabs [ 14] store (Ferinstance, a |/to (Hello!) string2array|/tx should return |/to [72 101 108 108 111 33]|/tx . |h Converting from an array consisting exclusively of 8-bit integers to a string can be done with this rather obtuse code\274 |6|/shiftin |/burple |/burplebox3 |/staytint1 |h /array2string {dup length string dup /NullEncode filter 3 -1 roll {1 index exch write} forall pop } def |h |1|/shiftout |/aqua |/black |h As an example, |/to [72 105 32 116 104 101 114 101] array2string|/tx should return a |/to (Hi there)|/tx . This utility creates a string the same length of the array. It then modifies the string so it can be written to as a file. All of the |/to 0-255|/tx array values are then written into the string. Sneaky, huh? |h Since a string |/to is|/tx an array, these conversions should be rarely needed. And are best avoided. But they can be handy for reading a string whose data would otherwise appear as a bunch of control characters and strange symbols. Or in converting array data so it can be read or written as a file. Or, as we will soon see, in creating test arrays-of-strings. |h |c Strings |jas |jFiles |d By suitable use of PostScript's |/to filter|/tx commands, strings can become data sources or targets that can be read from or written to as files. But subject to a strict 65K maximum length limit. Thus, while strings can be used to hold entire small format |/to x-y|/tx data, they are better used as |/to row elements|/tx in a two dimensional array-of-strings for larger images. |h Here is a string reading demo\274 |6|/shiftin |/burple |/burplebox5.5 |/staytint1 |h /str1 (This is a test) store /file1 str1 0 (%EOF) /SubFileDecode filter store |h Example: 6 { file1 read pop == } repeat % should return 84 104 105 115 32 105. |h |1|/shiftout |/aqua |/black |h And here is a string writing demo\274 |6|/shiftin |/burple |/burplebox5.5 |/staytint1 |h /str2 (zzzzzzzzzzzzzzzzzzz) store /file2 str2 /NullEncode filter store |h Example: file2 65 write file2 66 write file2 67 write should return (ABCzzzzzzzzzzzzzzzz) |h |1|/shiftout |/aqua |/black |h ) cl startnewpage /grabstretch {/cstretchhold cstretch store /sstretchhold sstretch store /cstretch 0 store /sstretch 0 store } store /resetstretch {/cstretch cstretchhold store /sstretch sstretchhold store} store (Our |/to Array2string|/tx proc we just looked at used this scheme. Note that you can use the |/to setfileposition|/tx command to write data in random or nonsequential locations. As with any PostScript file, you should close these when you are finished using them. As in |/to file1 closefile|/tx or |/to file2 closefile|/tx . |h |c Generating |jArray-of-strings |jTest |jdata |d It can be useful and interesting to create several short strings of test data. You can use these to debug your image conversion procs while still having a manageable amount of reportable data. Three arrays-of-strings can normally be used together, one each for your red, green, and blue pixel planes\274 |6|/shiftin |/burple |/burplebox11 |/staytint1 |h|/grabstretch /redAOS [ [250 250 0 0 0 250 ] array2string [100 100 100 100 100 100 ] array2string [100 100 100 100 100 250 ] array2string ] store |h /greenAOS [ [ 0 250 250 250 0 0 ] array2string [100 100 100 100 100 100 ] array2string [100 100 100 100 100 0 ] array2string ] store |h /blueAOS |j[ [ 0 0 0 250 250 250 ] array2string [100 100 100 100 100 100 ] array2string [100 100 100 100 100 0 ] array2string ] store |h |1|/shiftout |/aqua |/black |/resetstretch |h This particular arrays-of-strings data set could represent an image or bitmap that is six pixels wide by three high. Having a saturated rainbow on its bottom row, and the rest gray except for a red pixel at upper right. |c Image |jConversions |d While the PostScript image operator is normally used with files or strings, |/to image |/to can also be used with any procedure that exclusively returns string values|/tx . |h Here are three procs that can repeatedly return arrays-of-strings for you\274 |6|/shiftin |/burple |/burplebox6 |/staytint1 |h /getredAOSrow |k { redAOS AOSrowcount get} store /getgreenAOSrow { greenAOS AOSrowcount get} store /getblueAOSrow { blueAOS AOSrowcount get /AOSrowcount AOSrowcount 1 add store } store |h |1|/shiftout |/aqua |/black |/resetstretch |h These assume an |/to AOSrowcount|/tx variable that we will define below. We also assume a red-green-blue pixel sequence as is needed by a PostScript image, but |/to not|/tx by a .BMP bitmap. As we will shortly see. ) cl startnewpage (There are several major differences between the PostScript |/to image|/tx operator and the |/to .BMP|/tx bitmap file format. Here are the\274 |6|/shiftin |/aqua |/burplebox11 |/staytint1 |h PS IMAGE PROPERTIES: |h The image often builds rapidly from left to right and slowly from bottom to top. |h The image maps to a unit square that is later modified as needed by the CTM matrix. |h The supplied image data sequence must be red then green then blue. No header is used. |h End of row zero padding is neither used nor allowed. |h |1|/shiftout |/aqua |/black |h Here is one possible PostScript Array-of-strings to image converter\274 |6|/shiftin |/burple |/burplebox15.5 |/staytint1 |h /convertAOStoPSimage { << /ImageType 1 /Width redAOS 0 get length /Height redAOS length /ImageMatrix [redAOS 0 get length 0 0 redAOS length 0 0 ] /MultipleDataSources true /DataSource [|j{getredAOSrow}|j{getgreenAOSrow}|j{getblueAOSrow}] /BitsPerComponent 8 /Decode [ 0 1 0 1 0 1 ] /Interpolate false |h /AOSrowcount 0 store % custom proc added here |h >> dup begin image end } bind store |h |1|/shiftout |/aqua |/black |h This differs slightly from the normal use of image and an image dictionary. We add a custom proc of |/to AOSrowcount|/tx to the usual dictionary. Besides its internal use, we place a copy on the dictionary stack. Letting |/to AOSrowcount|/tx be modified by our image conversion procs. Otherwise, the image operator behaves as described in the |/su PostScript Reference Manual|1|/PLRM . |h Note particularly the usual image convention: |/to The image is first mapped into a |/to unit square|/tx by the |/to DataSource matrix|/tx . In the rest of your proc, that unit square should get scaled, rotated, and translated as needed to your final size and shape by the |/to CTM|/tx Current Transformation Matrix. At the very least, you will usually want to scale by |/to Width|/tx and |/to Height|/tx . ) cl startnewpage /tabs [9] store (|c The |j.BMP |jBitmap |jData |jFormat |d |/to .BMP|/tx image files are uncompressed and lossless. They give you immediate access to individual red, blue, and green pixels. There will be no generation loss with repeated use. |h When used |/to outside|/tx of PostScript or Acrobat, Bitmaps are often your best choice when creating or modifying images. Only |/to after|/tx the image is in its final form should more compact compressed distribution formats be used. |h A detailed review of bitmap format data appears |/su here|1|/expbmp.pdf . A bitmap format file consists of an initial |/to header|/tx and a following |/to bitmap data area|/tx . While there are several variations on the bitmap data format, we will concern ourselves here only with the |/to 24-bit uncompressed RGB color mode|/tx . |h There are several crucial differences between the bitmap data area and a PostScript image\274 |6|/shiftin |/aqua |/burplebox10.5 |/staytint1 |h BITMAP IMAGE PROPERTIES: |h The image always builds rapidly from left to right and slowly from bottom to top. |h The image will be x pixels wide by y pixels high. |h The single file image data sequence must be blue then green then red. A header must be used. |h End of row zero padding normally must be provided. |h |1|/shiftout |/aqua |/black |h Here is how the .BMP header is usually organized.\274 |6|/shiftin |/burplebox13.5 |/to |600|j-|j01 $00|j-|j$01|1|/tx |tASCII 2-byte "BM" bitmap identifier. |h |/to |602|j-|j05 $02|j-|j$05|1|/tx |tTotal length of bitmap file in bytes. |tFour byte integer, LSB first. |h |/to |606|j-|j09 $06|j-|j$09|1|/tx |tReserved, possibly for image id or revision. |tFour byte integer, LSB first. |h |/to |610|j-|j13 $0A|j-|j$0D|1|/tx |tOffset to start of actual pixel data. |tFour byte integer, LSB first. |h |/to |614|j-|j17 $0A|j-|j$11|1|/tx |tSize of data header, usually 40 bytes. |tFour byte integer, LSB first. |h |/to |618|j-|j21 $12|j-|j$15|1|/tx |tWidth of bitmap in pixels. |tFour byte integer, LSB first. |1|/shiftout |/aqua |/black more\274 ) cl startnewpage /resettabto17 {/tabs [ 17] store} store (|6|/shiftin |/burplebox32.5 |h |/to |622|j-|j25 $16|j-|j$19|1|/tx |tHeight of bitmap in pixels. |tFour byte integer, LSB first. |h |/to |626|j-|j27 $1A|j-|j$1B|1|/tx |tNumber of color planes. Usually 01 |tTwo byte integer, LSB first. |h |/to |628|j-|j29 $1C|j-|j$1D|1|/tx |tNumber of bits per pixel. Sets color mode. |tTwo byte integer, LSB first. |h |t 1 - Monochrome |t 4 - 16 lookup colors |t 8 - 256 lookup colors |t 16 - 65,536 lookup colors |t 24 - 16,777,216 RGB colors |t 32 - 16,777,216 RGB colors + alpha |h |/to |630|j-|j33 $1E|j-|j$21|1|/tx |tNon-lossy compression mode in use |tFour byte integer, LSB first. |h |t 0 - None |t 1 - 8-bit run length encoded |t 1 - 4-bit run length encoded |h |/to |634|j-|j37 $22|j-|j$25|1|/tx |tSize of stored pixel data |tFour byte integer, LSB first. |h |/to |638|j-|j41 $26|j-|j$29|1|/tx |tWidth resolution in pixels per meter |tFour byte integer, LSB first. |h |/to |642|j-|j45 $2A|j-|j$2D|1|/tx |tHeight resolution in pixels per meter |tFour byte integer, LSB first. |h |/to |646|j-|j49 $2E|j-|j$31|1|/tx |tNumber of colors actually used. |tFour byte integer, LSB first. |h |/to |650|j-|j53 $32|j-|j$35|1|/tx |tNumber of important colors |tFour byte integer, LSB first. |1|/shiftout |/aqua |/black Much of a header is boilerplate that can simply be copied. But items of crucial concern are the |/to total file length|/tx , the |/to width of the bitmap in pixels|/tx , and |/to the |/to height of the bitmap in pixels|/tx . |h The header with these details must be |/to absolutely correct|/tx for a bitmap to operate properly. There is another detail to bitmaps that has caused untold grief\274 |6|/shiftin |/aqua |/burplebox2 |/staytint1 |h All new bitmap rows MUST start on a 32-bit boundary! |h |1|/shiftout |/aqua |/black |h ) cl startnewpage /tabs [17] store (|1Since three does not divide into four all that well, certain of your row widths will need |/to 00 padding bytes|/tx added to them to guarantee this rule. Here is one possible PostScript code fragment that can calculate the padding correction for you\274 |6|/shiftin |/burple |/staytint1 |/burplebox3 |h /padding xpixels 4 mod |t% find 32-byte start [ 0 3 2 1 ] exch get store |t% save as correction |h |1|/shiftout |/aqua |/black |h This code returns an integer from 0 to 3. Which tells you how many padding bytes to add. |/to xpixels|/to in this example is the bitmap width|/tx . |h |c Output |j.BMP |jBitmap |jFile |jConversions |d Getting from |/su PostScript|1|/post01 arrays-of-strings to a .BMP bitmap for any use outside of |/su Acrobat|1|/acrob01 or |/su PostScript|1|/post01 can be somewhat more complex than an internal image conversion. There are two steps to the process that involve writing a header and then transferring the data in the proper order along with the padding bytes\274 |6|/shiftin |/burple |/staytint1 |/burplebox26 |h /convertAOS2BMPimage { |h /bmpoutfile arrayfilepathprefix |t% make bmp write file outputbitmapfilename mergestr (w) file store |h /xpixels redAOS 0 get length store |t% calc bmp data /ypixels redAOS length store |h /padcount xpixels 4 mod |t% calc bmp padding [0 3 2 1] exch get store |h /totalbmpsize xpixels padcount |t% calc file length add ypixels mul 54 add store |h bmpoutfile 66 write |t% BEGIN HEADER bmpoutfile 77 write |t% with ASCII "BM". |h totalbmpsize 256 3 exp cvi idiv |t% calc length bytes /byte4 exch store totalbmpsize 256 3 exp cvi mod /res3 exch store res3 65536 idiv /byte3 exch store res3 65536 mod /res2 exch store res2 256 idiv /byte2 exch store res2 256 mod /byte1 exch store |h bmpoutfile byte1 write |t% write length bmpoutfile byte2 write |t% as modulo 256 |h |1|/shiftout |/aqua |/black |h ) cl startnewpage (|6|/shiftin |/burple |/staytint1 |/burplebox33.5 |h bmpoutfile byte3 write bmpoutfile byte4 write |h 4 {bmpoutfile 0 write} repeat |t% four reserved nulls |h bmpoutfile 54 write |t% start of data offset bmpoutfile 0 write bmpoutfile 0 write bmpoutfile 0 write |h bmpoutfile 40 write |t% write data header size bmpoutfile 0 write bmpoutfile 0 write bmpoutfile 0 write |h bmpoutfile xpixels 256 mod write |t % write x size lsbs bmpoutfile xpixels 256 idiv write bmpoutfile 0 write |t % assume < 65K bmpoutfile 0 write |h bmpoutfile ypixels 256 mod write |t % write y size lsbs bmpoutfile ypixels 256 idiv write bmpoutfile 0 write |t % assume < 65K bmpoutfile 0 write |h bmpoutfile 1 write |t% number of bit planes bmpoutfile 0 write bmpoutfile 24 write |t% write color mode bmpoutfile 0 write |h 4 {bmpoutfile 0 write} repeat |t% compression mode 4 {bmpoutfile 0 write} repeat |t% pixel data size 4 {bmpoutfile 0 write} repeat |t% width resolution 4 {bmpoutfile 0 write} repeat |t% height resolution 4 {bmpoutfile 0 write} repeat |t% colors used 4 {bmpoutfile 0 write} repeat |t% important colors |h |1|/shiftout |/aqua |/black This completes writing the header portion of our .BMP bitmap file. We continue by writing the pixel data bytes |/to in BGR order|/tx and the end-of-row padding bytes\274 |6|/shiftin |/burple |/staytint1 |/burplebox5.5 |h 0 1 ypixels 1 sub {/currow exch store |t % start data write |h /curred redAOS currow get store |t % grab RGB row data /curgreen greenAOS currow get store /curblue blueAOS currow get store |h |1|/shiftout |/aqua |/black |h ) cl startnewpage (|6|/shiftin |/burple |/staytint1 |/burplebox12.5 |h 0 1 xpixels 1 sub {/curpos exch store |t % BGR pixel write bmpoutfile curblue curpos get write bmpoutfile curgreen curpos get write bmpoutfile curred curpos get write } for |t % finish row |h padcount {bmpoutfile |t% add row padding 0 write } repeat |h } for |t% finish image |h bmpoutfile closefile |t% close file } bind store |t% and exit |h |1|/shiftout |/aqua |/black This proc needs your |/to arrayfilepathprefix|/tx path and |/to outputbitmapfilename|/tx filename predefined. As well as having the correct pixel data in |/to redAOS|/tx , in |/to greenAOS|/tx , and in the |/to blueAOS|/tx arrays of strings. |h |c Input |j.BMP |jBitmap |jFile |jConversions |d A somewhat similar process can be used to capture data from an input .BMP file and move it into |/to redAOS|/tx , |/to greenAOS|/tx , and |/to blueAOS|/tx arrays-of-strings for further transformation or |/su PostScript|1|/gonzotut.pdf image conversion\274 |6|/shiftin |/burple |/staytint1 |/burplebox19.5 |h /inputbitmap2AOS { |t% START ANALYSIS /bmpinfile arrayfilepathprefix |t% create .BMP read file inputtbitmapfilename mergestr (r) file store |h bmpinfile read |t% check for ok format pop 66 eq |t% "B" as first character? bmpinfile read pop 77 eq and |t% "M" as second char? bmpinfile 26 setfileposition |t% one color plane? bmpinfile read pop 1 eq and not {NOT_A_BITMAP_FILE!} if |t% report bitmap error |h bmpinfile 28 setfileposition |t% report color message bmpinfile read pop 24 eq not {NOT_24_BIT_COLOR!} if |h bmpinfile 10 setfileposition |t% find the offset bmpinfile read pop |h |1|/shiftout |/aqua |/black |h ) cl startnewpage (|6|/shiftin |/burple |/staytint1 |/burplebox40 |h bmpinfile read pop 256 mul add /offset exch store |h bmpinfile 18 setfileposition |t% find the xpixels bmpinfile read pop bmpinfile read pop 256 mul add /xpixels exch store |h bmpinfile 22 setfileposition |t% find the ypixels bmpinfile read pop bmpinfile read pop 256 mul add /ypixels exch store |h /padcount xpixels 4 mod |t% calculate padding [0 3 2 1] exch get store |h /redAOS ypixels array store |t% empty AOS arrays /greenAOS ypixels array store /blueAOS ypixels array store |h 0 1 ypixels 1 sub {/rowcount exch store |t % GRAB DATA |h bmpinfile offset |t% go to row start rowcount xpixels 3 mul |t% X3 for triads padcount add mul |t% plus padding add setfileposition |t% set row start |h /redAOSrow xpixels string store |t % create rows /greenAOSrow xpixels string store /blueAOSrow xpixels string store |h 0 1 xpixels 1 sub {/posn exch store |t% for each pixel triad |h blueAOSrow posn bmpinfile read pop put |t % blue greenAOSrow posn bmpinfile read pop put |t % green redAOSrow posn bmpinfile read pop put |t % red |h } for |t % till row done |h redAOS rowcount redAOSrow put |t % place strings greenAOS rowcount greenAOSrow put blueAOS rowcount blueAOSrow put |h } for |t% for each row } bind store |t% completing proc |h |1|/shiftout |/aqua |/black Four header bits are checked to verify you have a valid 24 bit .BMP color file. Offset, x position, and y position data is then extracted and modulo 256 ) cl startnewpage (|1converted. Padding bytes are then calculated, allowing you to find the actual start location of each data row. New arrays-of-strings are defined for the blue, green, and red planes. |h Three row long work strings are created. |/to These get filled in a blue-green-red |/to sequence|/tx . The row strings are then placed in their appropriate array-of-strings positions. The proc requires a predefined |/to arrayfilepathprefix|/tx path and an |/to inputtbitmapfilename|/tx filename. |h |c PS |jImage |jto |j.BMP |jBitmap |jFile |jConversions |d Getting from a PostScript or Acrobat image to a .BMP bitmap is highly application dependent. There are a number of |/su commercial and shareware utilities|1|/img2bmp that ease this task, so we will not go into much detail here. |h If the original sourcecode is available, you may want to gather in the original data file or file triads, optionally converting these sources to an array-of-strings. From there, our |/to convertAOS2BMPimage|/tx could be directly used. If only the .PDF output file is available, you can |/to print to disk|/tx uncompressed Level I to try and recapture the original image data stream. See |/su PDFEDIT1.PDF|1|/pdfedit1.pdf for some tutorial guidelines. |h A reminder that a .BMP file needs a header, reads its color triads "backwards" as blue-green-red, and may need end-of-line row padding per our above code example. Note that |/to you will often get the best results by matching the source |/to file x and y pixels to the .BMP bitmap size|/tx . Any scaling may introduce artifacts and generation loss. |h |c For |jMore |jHelp |d The speeds of these routines are more than acceptable, taking a fraction of a second per megapixel on faster machines with newer versions of Acrobat Distiller. |h The intent is to use |/su these routines|1|/AOSutil1.psl to improve some of our older calculated |/to x-y|/tx data sets so they can be presented in a faster, more standard, and more compact Acrobat image formats. Thus significantly both shortening and speeding up the ultimate distribution .PDF files. |h I would also like to use these utilities as the core components for |/to .BMP to .BMP |/to transformations|/tx that go far beyond what is offered in standard image processing programs. Giving you total control and the open ability to explore six ways from Sunday. Improved perspective correction and image rectification are two of my important current needs. |h Similar tutorials and additional support materials are found on our |/su PostScript|1|/post01 and our |/su GurGram|1|/gurgrm01 library pages. As always, |/su Custom Consulting|1|/info01 is available on a cash and carry or contract basis. As are seminars. |h For details, you can email |/su don@tinaja.com|1|/maildon . Or call |/to (928) 428-4073|/tx . ) cl startnewpage % EOF