%!PS % A Digital Airbrushing Algorithm % ================================ % by Don Lancaster GG #87 AIRBRUSH.PSL /ggnum 87 store % Copyright c 2008 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. First pub 2/08. % 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 << % gg87 /lineq04.psl (http://www.tinaja.com/psutils/lineq04.psl) /invegraf.pdf (http://www.tinaja.com/glib/invegraf.pdf) /aosutil1.psl (http://www.tinaja.com/psutils/aosutil1.psl) /airdemo1.jpg (http://www.tinaja.com/images/bargs/airdemo1.jpg) /airstudy.psl (http://www.tinaja.com/psutils/airstudy.psl) /airstudy.log (http://www.tinaja.com/psutils/airstudy.log) /airbrut1.psl (http://www.tinaja.com/psutils/airbrut1.psl) /airbrush.psl (http://www.tinaja.com/glib/airbrush.psl) /airbrush.pdf (http://www.tinaja.com/glib/airbrush.pdf) % gg86 /wikiericsson (http://en.wikipedia.org/wiki/Ericsson_cycle) /trackingcalc (http://www.macslab.com/optsolar.html) /newthermo (http://www.johnsonems.com/jhtec.html) /wikithermoelectric (http://en.wikipedia.org/wiki/Thermoelectric_effect) /newnano (http://www.gizmag.com/researchers-developing-solar-technology-that-works-at-night/8574/) /googlenanoantenna (http://www.google.com/search?q=solar+nanoantennas&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /currentmetalloradical (http://www.sciencedaily.com/releases/2008/02/080217170412.htm) /sciencemetalloradical (http://www.sciencemag.org/cgi/content/abstract/277/5334/1953) /googlemetalloradical (http://www.google.com/search?q=metalloradical+photosynthesis&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /sciencenewsquantumdot (http://www.sciencenews.org/articles/20060603/bob8.asp) /googlequantum (http://www.google.com/search?q=quantum+dot+solar&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /ricetetrapod (http://www.sciencedaily.com/releases/2007/05/070502143631.htm) /googletetrapods (http://www.google.com/search?q=tetrapod+solar&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /solyndra (http://www.solyndra.com/) /miasole (http://www.miasole.com/) /iset (http://www.isetinc.com/) /heliovolt (http://www.heliovolt.net/) /daystar (http://www.daystartech.com/) /globalsolar (http://www.globalsolar.com/) /firstsolar (http://www.firstsolar.com/) /nanosolar (http://www.nanosolar.com) /googlecigs (http://www.google.com/search?q=cigs+solar&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /wikifungible (http://en.wikipedia.org/wiki/Fungibility) /califsetback (http://www.tinaja.com/whtnu06.asp#decades) /springervillepv (http://www.greenwatts.com/pages/solaroutput.asp) /h2gas01 (http://www.tinaja.com/h2gas01.asp) /zomeworks (http://zomeworks.com/) /solarcalc1 (http://www.powerfromthesun.net/CALCULATORS/AngleCalc.html) /solarcalc2 (http://susdesign.com/sunangle/) /googlesolarcalc (http://www.google.com/search?q=solar+angle+calculations&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /muse153.pdf (http://www.tinaja.com/glib/muse153.pdf) /googleexergy (http://www.google.com/search?q=exergy&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /wickexergy (http://en.wikipedia.org/wiki/Exergy) /hack64.pdf (http://www.tinaja.com/glib/hack64.pdf) /whtnu08 (http://www.tinaja.com/whtnu08.asp) /energfun.pdf (http://www.tinaja.com/glib/energfun.pdf) % gg85 /bmp2psa.pdf (http://www.tinaja.com/glib/bmp2psa.pdf) /pixintpl.pdf (http://www.tinaja.com/glib/pixintpl.pdf) /gaussjor.pdf (http://www.tinaja.com/glib/gaussjor.pdf) /determinants (http://en.wikipedia.org/wiki/Determinant) % 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 gg85 /figure1 { save /snap3 exch store 2.5 -9 translate % position in box 1.2 dup scale %% vector rotated image size /plotold {gsave rot rotate 0 height 2 div neg mt width 2 div pr height pu width pl height pd closepath 1 0.7 0 setrgbcolor fill grestore} store /findsize { /diag width dup mul height dup mul add sqrt store /laglead height width atan store /newwide rot laglead add cos abs rot laglead sub cos abs 2 copy le{exch} if pop diag mul store /newhigh rot laglead add sin abs rot laglead sub sin abs 2 copy le{exch} if pop diag mul store } store /plotnew {gsave black 0 newhigh 2 div neg mt newwide 2 div pr newhigh pu newwide pl newhigh pd closepath gsave clip -10 -10 translate 20 20 showgrid grestore 0.5 0.3 0 setrgbcolor line1 stroke grestore} store /width 10 store /height 6 store /rot 36 store 10 10 translate plotold findsize plotnew plotold 0.5 0.3 0 setrgbcolor /diag2 width dup mul height dup mul add sqrt 2 div store line1 gsave rot rotate 0 0 mt diag2 r rarrow grestore gsave rot laglead add rotate 0 0 mt diag2 r rarrow grestore gsave rot laglead sub rotate 0 0 mt diag2 r rarrow grestore 0 0 mt dot [0.25 0.15] 0.07 setdash 0.5 0.3 0.3 setrgbcolor 0 0 diag2 0 360 arc stroke 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 % A Digital Airbrushing Algorithm % ================================ % by Don Lancaster GG #87 AIRBRUSH.PSL /ggnum 87 store /tabs [14] store 20 48.3 0.7 add 1 sub (A |jDigital |jAirbrushing |jAlgorithm)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 c2008 pub 3/08 as |/surl |6GuruGram|1|/gurgrm01 |/tinton1 |6#87 |/surl http://www.tinaja.com|/tinaja |/surl don@tinaja.com|/maildon (928) 428-4073 |/aqua |/black |a|0C|b|1lassic airbrushing was a technique of using elaborate masks and a miniature paint sprayer to cover up and improve portions of a photo. So they looked better or eliminated perceived defects. We can instead define digital airbrushing as\274 |6|/shiftin |/aqua |/staytint1 |/burplebox6.5 |h DIGITAL AIRBRUSHING \320 |h Given four points on a bitmap image p0, p1, p2, and p3, match the color at those points and linearly gradient blend all intermediate points inside that defined area. |h |1|/shiftout |/aqua |/black |h You might want to do this because there is a bad lighting burn. Or dirt to get removed. Or are doing historical retouching. Or want to improve the top cover on a test equipment image. Or are preparing |/su eBay|1|/ebay resale images . |h We looked at some fundamental new image manipulation tools in |/su BMP2PSA.PDF|1|/bmp2psa.pdf as |/su GuruGram #84|1|/gurgrm01 . As our first application example, we will expand these tools into a set of |/to digital airbrushing utilities|/tx . As additional features, we will allow the airbrushing to be |/to any|/tx quadrilateral shape and not a simple aligned rectangle. |h We will further allow adding randomized |/to texture|/tx of arbitrary depth to improve the "interest" and "match" of the corrected area. |h While the algorithms we will look at can be adapted to any language that can access host disk files, easily manipulate data arrays, handle the |/to HSB|/tx and |/to RGB|/tx conversions, and cleanly detect path insidedness, we'll focus on using |/su PostScript|1|/post01 |/to arrays of strings|/tx and its superb |/to infill|/tx operator as a preferred solution. |h A preliminary algorithm study appears |/su here|1|/airstudy.psl with its results |/su here|1|/airstudy.log . |h The working utilities are found as our file |/su AIRBRUT1.PSL|1|/airbrut1.psl . An example demo appears |/su here|1|/airdemo1.jpg . A bad lighting burn has been partially eliminated lower right and some speckle upper left. Mild texture has been added to match the image areas. ) cl startnewpage (|h|c The |jAlgorithm |d There is some subtlety and sneakiness that makes digital airbrushing nontrivial. Here is a useful approach\274 |6|/shiftin |/aqua |/staytint1 |/burplebox22 |h A DIGITAL AIRBRUSHING ALGORITHM|j\320 |h (1) Establish four points x0,y0 x1,y1, x2,y2, and x3,y3 CLOCKWISE FROM THE LOWER LEFT in the area to be airbrushed. |h (2) Calculate a bounding box that will contain all of the control points. |h (3) Find the HSB values at the corners of the bounding box that would be needed to create a linear two dimensional gradient that matches the four control HSB values. This will involve solving four linear equations in four unknowns. |h (4) Establish the quadrilateral path and make corrections to only those inside pixels. |h (5) Normalize the bounding box to a unit square. Then use bilineal interpolation to determine all needed internal pixel values. |h (6) Optionally randomize each pixel RGB value to add a desired depth of textural interest. |h |1|/shiftout |/aqua |/black |h It is very important to note that |/to you normally will want to work in HSB (|jhue- |/to saturation-brightness|j) space rather than RGB (|jred-green-blue|j|/tx ). The reason is that a linear RGB transition from red to green goes through gray, while a similar HSB transition goes from the more expected red to orange to yellow to green. |h |/su PostScript|1|/post01 is especially adept at converting between these two color standards\274 |6|/shiftin |/burple |/staytint1 |/burplebox6.5 |h HSB to RGB: |h hue sat bright setHSBcolor currentRGBcolor |h RGB to HSB |h red blue green setRGBcolor currentHSBcolor |h |1|/shiftout |/aqua |/black Several minor points before continuing: Our |/su PostScript|1|/post01 examples optionally use our |/su Gonzo Utilities|1|/gonzoutils . Our provided .BMP image airbrushing |/su utility|1|/airbrut1.psl textfile is ) cl startnewpage (first modified and then gets run by |/su Using Acrobat Distiller as a General Purpose|/distlang |/su PostScript Computer|1|/distlang . Which will pick up a selected |/to .BMP|/tx image, modify it, and save it to a new filename. No knowledge of PostScript is needed for this utility. |h |/to Distiller versions newer than 8.1 prevent diskfile access as a default|/tx . To use these, enter Distiller from your command line using |/to "acrodist -F"|/tx . |h This application expands upon our |/to Bitmap to PS Array Conversions|/tx |/su tutorial|1|/bmp2psa.pdf and |/su utility|1|/aosutil1.psl from our |/su GuruGram|1|/gurgrm01 library. Other enhancements and expansions are planned in a continuing series. |h The |/su .BMP Data Format|1|/expbmp.pdf may demand one, two, or three |/to padding bytes|/tx to make each new row start on a 32 bit boundary. While the math to do this is somewhat obtuse, the needed count apparently simplifies to |/to xpixels 4 mod|/tx . This detail may not yet be picked up in some of the earlier material. |h |c A |jPreliminary |jStudy |d A simplified preliminary study was first done to explore the airbrushing algorithm. It is found |/su here|1|/airstudy.psl with its results |/su here|1|/airstudy.log . Our usual approach to bitmap adjustments is to convert the bitmap to a |/su PostScript array of strings|1|/bmp2psa.pdf . Those strings are then modified and then either saved as a new bitmap or as a PostScript image. |h Only a single array of strings is used in the study. This could represent one plane of HSB or RGB color space. The data values were first set to |/to 46|/tx which will appear as an ASCII period. Quadrilateral control points of |/to 97|/tx , |/to 104|/tx , |/to 112|/tx , and |/to 122|/tx were then selected clockwise from lower left. In the output log reports of the demo, these will appear as lower case |/to a|/tx , |/to h|/tx , |/to p|/tx , and |/to z|/tx . |h A rectangular |/to bounding box|/tx is next found that will exactly contain all of the quadrilateral control points. A lower boundary can be found by comparing two points and discarding the larger one; comparing another two points and again discarding the larger one; and then comparing and discarding the larger of the two remaining points\274 |6|/shiftin |/burple |/staytint1 |/burplebox4 |h /bbxmin llx ulx 2 copy gt {exch} if pop |jurx urx 2 copy gt {exch} if pop |k2 copy gt {exch} if pop store |h |1|/shiftout |/aqua |/black |h The upper boundary is found by discarding the smaller of each pair, and the |/to y|/tx max and min values are handled similarly. These four corners are placed in the demo log as lower case ASCII |/to "o"|/tx characters of |/to 111|/tx . |h A |/su bilineal interpolation|1|/pixintpl.pdf is a suitable tool to generate gradients in most images. Assume you have a unit square and a new sought after point fractional distances |/to x|/tx and |/to y|/tx from the corners. The general bilineal interpolation will be\274 ) cl startnewpage (|6|/shiftin |/burple |/staytint1 |/burplebox5 |h newvalue = (1-x)(1-y)|j * |j(|j|jllvalue|j) + |k|k(1-x)(y)|j * |j(|julvalue|j) + (x)(y)|j * |j(|jurvalue|j) + |k|k(x)(1-y)|j * |j(|j|jlrvalue|j) |h |1|/shiftout |/aqua |/black |h We already know the four input quadrilateral values and their fractional |/to x|/tx and |/to y|/tx distances. But we do not know the four bounding box values. We can write four linear equations in four unknowns to solve for our needed corner values\274 |6|/shiftin |/burple |/staytint1 |/burplebox5 |h A0 = W0*w + X0*x + Y0*y + Z0*z A1 = W1*w + X1*x + Y1*y + Z1*z A2 = W2*w + X2*x + Y2*y + Z2*z A3 = W3*w + X3*x + Y3*y + Z3*z |h |1|/shiftout |/aqua |/black |h Here |/to A0|/tx through |/to A3|/tx are the input values. And |/to W0|/tx through |/to Z3|/tx are the known fractional distance products inside the unit square to be interpolated. And |/to w|/tx through |/to z|/tx are our sought after corner bounding box values. |h Note that this is "backwards" from normal and here we are really seeking out an |/su inverse transformation|1|/invegraf.pdf solution. Such equations are easily solved with |/su Gaussian|/gaussjor.pdf |/su Elimination|1|/gaussjor.pdf using this |/su specific 4x4 Utility|1|/lineq04.psl . |h We could now scan all pixels inside our bounding box and find their interpolated gradient values. But we will only want to |/to change|/tx the pixels that are |/to inside of|/tx the original quadrilateral. |h To decide which pixels to change and which to leave alone, we can first create a new |/su PostScript|1|/post01 path. This path will be an analog of the |/to mask|/tx used in traditional airbrushing. It represents a |/to 1:1 map|/tx of the pixels to be modified\274 |6|/shiftin |/burple |/staytint1 |/burplebox7 |h newpath llx lly moveto ulx uly lineto urx ury lineto lrx lry lineto closepath |h |1|/shiftout |/aqua |/black |h The little known and wonderfully enigmatic PostScript |/to infill|/tx operator can then be used inside a double loop to decide which pixels to update. |/to infill|/tx tests an input point to decide whether it is outside or inside of the path. And returns a |/to true|/tx or a |/to false|/tx result\274 ) cl startnewpage (|6|/shiftin |/burple |/staytint1 |/burplebox7 |h bbymin 1 bbymax {/cury exch store bbxmin 1 bbxmax {/curx exch store |h curx cury infill {changepixel} if |h } for } for |h |1|/shiftout |/aqua |/black |h Doing this on the study produces a "gradient alphabet". On our real program, the process gets repeated once for each |/to HSB|/tx plane per pixel. Speaking of which\274 |h |c The |jActual |jAirbrushing |jUtility |d Inputs needed to use |/su AIRBRUT1.PSL|1|/airbrut1.psl are the input and output filenames and paths. Plus an |/to airbrushboundaries|/tx array that holds eight |/to x|/tx and |/to y|/tx data values representing four quadrilateral points |/to clockwise from lower left|/tx . |h The utility then pretty much follows an expanded version of the study. Input data points are grabbed and |/to HSB|/tx converted. As a reminder, the |/to HSB|/tx color space gives more realistic blends than |/to RGB|/tx . The input file is then read and converted to a group of three |/su PostScript|1|/post01 arrays of strings, one each for hue, saturation, and brightness. |h A rectangular bounding box is next found. Its |/to HSB|/tx corner values are calculated by repeatedly solving the above four equations in four unknowns. From there, a new |/su PostSript|1|/post01 masking path is created, and the |/to infill|/tx operator used to selectively alter the chosen pixels. Finally, the three arrays of strings are written to a new output |/to .BMP|/tx file of your choosing. |h Details on all of these operations can be reviewed by studying the comments in the |/su AIRBRUT1.PSL|1|/airbrut1.psl utility code. Extensive printout options can be commented in or out to study each portion of the utility in more detail. |h |c Adding |jTexture |d Most bitmap images will involve some grain or variance. If you try overwriting them with a "pure color" gradient, the results may look too "computer like". Our airbrushing utility has a provision to |/to slightly randomize|/tx the actual RGB pixels being placed. This is done by picking a small random number range, such as |/to -4|/tx to |/to +4|/tx and adding the value to each pixel plane. A limit check is performed after addition to make sure results stay in an integer |/to 0-255|/tx range. |h Minor randomizing in |/to RGB|/tx space ends up about the same as |/to HSB|/tx would end up. A |/to textdepth|/tx lets you adjust your texture to match that of the original image. Because of its speed penalty, a |/to textureflag|/tx flag allows you to selectively turn the texturizing on and off. ) cl startnewpage (Like so\274 |6|/shiftin |/burple |/staytint1 |/burplebox6.5 |h /texture { textureflag {textdepth random dup 2 div sub add cvi } if |h dup 255 gt {pop 255} if dup 0 lt {pop 0 } if } store |h |1|/shiftout |/aqua |/black The |/to random|/tx operator is extracted from our |/su Gonzo Utilities|1|/gonzoutils . A |/to 5 random|/tx would return a random digit from |/to 0|/tx to |/to 4|/tx . |h |c Some |jExtensions |d Speed has not yet been optimized. Present operation is acceptably fast for smaller airbrushing areas. Rates are in the |/to 30,000|/tx pixels per second range. An obvious speedup on multiple airbrushing tasks can be done by converting bitmaps to and from |/su PostScript|1|/post01 arrays of strings only once per work session. |h Another obvious improvement would be to allow mouse point entry instead of typed data coordinates. This possibly could be provided through extensions to |/su GhostScript|1|/ghostscript , Acrobat SDK tools, or a supervisory language linking. |h At present, |/to blends through red are not permitted|/tx . A workaround can be based on a pseudo color phase shift. |/to There always will be one hue that you must not |/to cross during blending|/tx . A fix has been added below. |h A detail: |/to .BMP|/tx and |/su PostScript|1|/post01 images build from the bottom up. The |/to y|/tx coordinate in |/to Paint|/tx builds from the top down. To convert |/to Paint|/tx data, |/to subtract the needed |/to y coordinate from your total Paint height|/tx . |h |c And |jSome |jRevisions |d Two improvements were made to |/su AIRBRUT1.PSL|1|/airbrut1.psl in April of 2008. These attempt to deal with two quirks of HSB space airbrushing. The first being that |/to a blend is |/to not allowed through any hue with an 0/1 ambiguity|/tx . This is red by default. With a symptom of the blends going "the wrong way" around the hue circle. And can be dealt with by temporarily |/to phase shifting|/tx all of the hues by a new constant. |h The second quirk being that |/to hue becomes arbitrary and ambiguous very near a |/to true gray|/tx . This can be dealt with by using a RGB blend instead of a HSB blend. Or by making sure that "hints" of the blending colors remain in the gray itself. |h There is now a new |/to usehsb|/tx Boolean. When true, the blends will be in hsb space. Blends will be bright and closer to saturation, but rarely may go "the wrong way around" for one particular color. Which defaults to red. Blends may also have slight hue fringes near any true grays. ) cl startnewpage (|1When false, a conventional RGB blend is done. This will be less saturated, "darker", and more into the gray. But should eliminate any gray hue shifting. |h To shift the "problem" hue to a new value, there is now a new |/to hueshift|/tx variable whose intended range is |/to -0.5 to +0.5|/tx . The zero default value blends through aqua and has the |/to 1/0|/tx hue discontinuity at red. A value of |/to +0.16|/tx blends through blue with an orange problem. A value of |/to -0.16|/tx blends through green with a purple problem. And a value of |/to -0.5|/tx blends through red with an aqua problem. |h Hue shifting adds or removes a chosen amount of color phase through the 0 to 1 hue space. After interpolation, the opposite phase shift is then cranked in, resetting the colors to their normal values. As done by two new |/to hue+|/tx and |/to hue-|/tx routines. |h A second route to dealing with tinting near true grays is to |/to customize the gray |/to that is being used in the target image|/tx . For instance, if you are blending blues into a gray, a RGB gray of |/to 50 50 51|/tx is much less likely to create problems since a "hint" of blue remains and no blending is called for. |h These new techniques should rarely be needed. They can be activated when and as any specific problem comes up on any particular image. Defaults should be a |/to usehsb|/tx of true and |/to hueshift|/tx of zero. At present, a modest slowdown is caused by the new code. |h |c For |jMore |jHelp |d Once again, our preliminary airbrushing study appears as |/su AIRSTUDY.PSL|1|/airstudy.psl and its viewable results file as |/su AIRSTUDY.LOG|1|/airstudy.log . The working utilities are |/su AIRBRUT1.PSL|1|/airbrut1.psl A demo is found at |/su AIRDEMO1.JPG|1|/airdemo1.jpg . This |/su GuruGram|1|/gurgrm01 file is named |/su AIRBRUSH.PDF|1|/airbrush.pdf and its source code is |/su AIRBRUSH.PSL|1|/airbrush.pdf . |h The underlying |/to .BMP|/tx to and from PostScript strings utility is |/su AOSUTIL1.PSL|1|/aosutil1.psl and its companion tutorial is |/su BMP2PSA.PDF|1|/bmp2psa.pdf . A |/to .BMP|/tx format tutorial called |/su EXPBMP.PDF|1|/expbmp.pdf is also in our |/su GuruGram|1|/gurgrm01 library. Our Gonzo utilities are found as |/su GONZOUTILS.PSL|1|/gonzoutils and its tutorial as |/su GONZOTUT.PDF|1|/gonzotut.pdf . |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. For details, email |/su don@tinaja.com|1|/maildon . |h Or call |/to (928) 428-4073|/tx . ) cl startnewpage % EOF