Edistyneet hahmontamisen semantiikat
Ladattujen sivujen hahmontaminen säilyttää sisäkkäisen Form XObject -tilan soveltaessaan läpinäkyvyysryhmiä, pehmeitä maskeja, Type 3 -glyfiproseduureja ja tarkkuustietoista näkyvän kuvausalueen purkamista
Katkoviivalla piirretyt polut
Natiivi polkuhahmontaminen säilyttää täydelliset katkoviivataulukot ja niiden faasin, mukaan lukien parittoman pituiset taulukot, murtolukupituudet ja nollapituiset piirretyt katkoviivat pyöreillä tai neliökärjillä; katkoviivakuvio alkaa alusta jokaisella alipolulla
Yksiväriset vedot ja liukuvärikuvion viivaleikkaukset jakavat yhden rajatun katkoviivageometriapolin, säilyttävät liitokset jatkuvien piirrettyjen osien sisällä ja liittävät piirretyt osat suljetun konttuurin aloituspisteen yli
Katkoviivapituudet säilyttävät hahmontajan keskimääräisen nykyisen muunnosmittakaavan, kun taas käyrien pilkkominen käyttää adaptiivista laitesuoraan litistystä; täyttömaalaus ja odottava rajaus jatkuvat alkuperäisellä pilkkomattomalla polulla
Läpinäkyvyysryhmät
- Form XObject -
/Matrix-arvot yhdistetään nykyisen muunnosmatriisin kanssa ennen ryhmäsisällön suorittamista - Eristetyt ryhmät käyttävät erillistä alfa-tasoa, jotta musta sisältö pysyy erotettavissa läpinäkyvistä pikseleistä
- Knockout-ryhmät korvaavat edellisen ryhmäpanoksen limittyvillä maalausalueilla
- Ryhmäsisältö alkaa Normal-sekoitustilasta: sekoitustila, vakioalfa ja pehmeä maski, jotka ovat voimassa
Dossa, koskevat ryhmää kokonaisuutena - Muulla sekoitustilalla maalattu ryhmä sekoittaa oman värinsä ja alfaansa taustaan; eristämätön ryhmä, jonka omat grafiikkatilat sekoittavat normaalisti, piirretään mustalle ja valkoiselle, jotta sen alfa saadaan selville
- Ryhmät jaetaan rajatutuiksi 768 pikselin laatoiksi, kun taas GDI-maalaus, halftone-vaihe, sisäkkäiset ryhmät, pehmeät maskit ja yhdistäminen säilyttävät absoluuttiset laitekoordinaatit
- Form-tavut puretaan ja tokenisoidaan kerran ennen laatan suorittamista, ja väliaikaiset laattakohtaiset maskit vapautetaan ennen seuraavaa laattaa
- Sisäkkäiset ryhmät ovat tuettuja rajatulla rekursiolla ja täydellisellä grafiikkatilan palautuksella jokaisen Form-kutsun jälkeen
Pehmeät maskit
/S /Alpha- ja/S /Luminosity-maskit arvioidaan maskiryhmästä- Maskiryhmä piirretään Normal-sekoituksella, riippumatta siitä, mikä sekoitustila maskin asettavassa grafiikkatilassa on
- Luminosity-maskit ratkaisevat läpinäkyvyysryhmän
/CS-arvon ja painottavat ratkaistun värin PDF DeviceGray -approksimaatiolla, kuten yleiset katselimet tekevät; asetaRenderColorimetricLuminosityMasks, jos haluat CIE-pohjaisille varuuksille kolorimetrisen CIE Y -arvon /BC-arvo vahvistetaan tarkkaa sekoitustilan komponenttimäärää vasten ja toimittaa muunnetun luminosity-arvon maalatun maskisisällön ulkopuolella- Separation- ja DeviceN-maalaus muunnetaan vaihtoehtoisen Lab- tai ICCBased-tilansa kautta, jotta paikkavärikomponentit eivät koskaan vuoda pehmeään maskiin
/TR-siirtofunktiot tukevat näytteistettyjä, eksponentiaalisia, ompelu- ja PostScript-laskinfunktioita jaetun funktion arvioijan kautta/SMask /Nonetyhjentää aktiivisen maskin, jaqtaiQsäilyttää maskitilan normaalisti- Kootut maskit käytetään uudelleen vain, kun lähdesanakirja, nykyinen muunnosmatriisi ja hahmotusintentti kaikki täsmäävät
Siirto- ja näytteistetyt funktiot
/TR2 on etusijalla /TR-arvoon nähden, yksi funktio soveltuu jokaiseen RGB-tulostuskanavaan, ja neljän funktion taulukko soveltaa kolmea ensimmäistä merkintäänsä itsenäisesti säilyttäen /Identity- ja /Default-merkinnät
Uuden siirtotilan soveltaminen korvaa jokaisen kanavan atomisesti, joten identiteettimerkinnät eivät voi periä hakutaulukon arvoja aiemmasta grafiikkatilasta
Tyypin 0 näytteistetyt funktiot tukevat yhtä–neljää tulo- ja lähtöulottuvuutta, /BitsPerSample-arvoja 1, 2, 4, 8, 12, 16, 24 ja 32, käännettyjä tai eteenpäin suuntautuvia /Encode-kuvauksia, itsenäisiä /Decode-alueita, multilineaarista interpolaatiota, moniulotteista kuutiointerpolaatiota ja luonnollisia kuutiosplaineja yksiulotteiselle /Order 3 -dataille
Puretut näytetavut, vahvistetut ulottuvuudet, kuvaukset ja kuutioderivaatat jakavat kahdeksanmerkintäisen LRU-välimuistin, joka on rajattu 64 MiB:hen hahmontussäiettä kohden, kun taas ylisuuret tai virheelliset funktiot epäonnistuvat korvaamatta aktiivista siirron hakutaulukkoa osittain
Halftone-näytöt
Tyypin 6, 10 ja 16 kynnystaulukot suoritetaan suoraan tarkalla puretulla pituudella, isoalkuisilla 16-bittisillä kynnyksillä, additiivisella komponenttivertaululla ja tiiviillä jaksollisilla kaistoilla, jotka välttävät kulmikkaiden tai kaksisuorakulmaisten näyttöjen paisuttamisen
Tyypin 5 sanakirjat valitsevat itsenäiset /Red-, /Green- ja /Blue-näytöt /Gray- ja vaadituilla /Default-varavaihtoehdoilla, kun taas jokainen valittu näyttö voi ohittaa globaalin siirtofunktion
Vahvistetut kynnystavut ja niiden normalisoitu geometria jakavat 64-merkintäisen LRU-välimuistin, joka on rajattu 64 MiB:hen renderöijää kohden, ja virheelliset ulottuvuudet, ylisuuret varaukset, sisäkkäiset tyypin 5 sanakirjat tai hyötykuorman pituusepäyhteydet jättävät täydellisen aktiivisen näyttötilan jatkuvatoimiseen sävytilaan
Type 3 -glyfit
Type 3 -CharProsit suoritetaan koko sisältöoperaattorimoottorin läpi fonttisanakirjan nykyisen resurssikontekstin, Form-tuen, leikkauksen, kuvien, kuvioiden ja rajatun rekursion avulla
d0 ja d1 tarjoavat glyfimetriikat, kun taas d1-proseduuri pitää soittajan valitseman värin PDF-kuvantamismallin vaatimusten mukaisesti
Toistuvat CharProsit käyttävät uudelleen purettuja ja tokenisoituja näyttölistoja, kun fontti, glyfi, lineaarinen laitematriisi ja väritila täsmäävät; siirto pysyy dynaamisena, joten toistetut merkit eri sijainneissa jakavat yhden merkinnän
Renderöijäkohtainen LRU säilyttää enintään 256 merkintää ja 131 072 tokenia, ohittaa mahdolliset CharProsit, jotka ylittävät 16 384 tokenia, ja raportoi käyttäytymisensä GetLastType3GlyphCacheStats-metodin kautta
Leikatut ja pienennetyt kuvausalueet
Akselisuuntaiset kuvan XObjectit pyytävät vain näkyvät lähderajat ja välittävät näkyvän laitekuvapikselikoon purkupolkuun
Pehmeän maskin sisältävä kuva puretaan kokonaisuudessaan sillä koolla, jossa se piirretään, ja sen maski samassa koossa, joten maski pysyy kuvan kanssa linjassa, kun leikkaus rajoittaa maalattavaa; JPEG-maskit käyttävät pienennetyn DCT:n dekooderia
Renderöitäessä purettu alue, joka on molemmissa suunnissa vähintään kaksi kertaa piirrettyä kokoa suurempi, pienennetään aluekeskiarvoilla täsmälleen piirrettyyn kokoon ennen piirtämistä tai välimuistiin vientiä; suuri kuva, joka piirretään pienenä, mahtuu tällöin purkuvälimuistiin, joten kahdesti piirretty ryhmä tai toistuva sivu käyttää sitä uudelleen, ja sen pehmeä maski sovelletaan pikseli pikseliltä kyseisessä koossa. Stencil-kuvamaskit säilyttävät täyden resoluutionsa, ja julkiset aluepurkumenetelmät palauttavat dokumentoidut kokonsa
JPEG 2000 yhdistää dekooderin natiivin alue-API:n ja tehotason kaksi potenssiksi valitun tarkkuustason, joka täyttää molemmat kohdeulottuvuudet ennen aallokerekonstruktiota ja rasterilaajennusta
Laattaosoitteiset JPEG 2000 -koodivirrat voivat purkaa myös yhden vahvistetun laatan suoraan THPDFJpeg2000Decoder.LoadTileFromByteArray-metodin kautta, ja laattahilan metadata sekä tulostetavarajat paljastuvat dekooderin kautta
Kun natiivi alue leikkaa useita itsenäisiä laattoja, LoadRegionFromByteArrayParallel määrittää yksityisen OpenJPEG-tilan työntekijää kohden ja kokoaa valmiit rasterit deterministisessä rivi-pääjärjestyksessä; peruutus, tuoterajat ja tehokas huippumuistibudjetti voivat pysäyttää ajoituksen tai valita peräkkäisen varavaihtoehdon
Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
Canvas.Draw(0, 0, Region);
finally
Region.Free;
end;