Napredna semantika upodabljanja
Upodabljanje naložene strani ohrani stanje ugnezdenih Form XObjects, medtem ko uporablja skupine prosojnosti, mehke maske, postopke glifov Type 3 in dekodiranje vidnih območij slik, ki upošteva ločljivost
Črtkane poteze poti
Izvorno izrisovanje poti ohrani popolne vzorce črt in njihovo fazo, vključno z nizi lihe dolžine, delnimi dolžinami in pobarvanimi črtami ničelne dolžine z okroglimi ali kvadratnimi zaključki; vzorec črt se pri vsaki podpoti znova zažene
Poteze enobarvnih likov in obrezi potez vzorcev s prelivi delijo eno omejeno geometrijsko pot črtkanih vzorcev, ohranijo spoje znotraj zveznih pobarvanih odsekov in povežejo pobarvane odseke čez začetno točko zaprte konture
Dolžine črt ohranijo povprečno merilo trenutne transformacije izrisovalnika, razdeljevanje krivulj pa uporabi prilagodljivo sploščevanje v prostoru naprave; polnilo in čakajoče obrezovanje še naprej uporabljata izvirno nerazdeljeno pot
Skupine prosojnosti
- Vrednosti
/MatrixForm XObject se sestavijo s trenutno transformacijsko matriko, preden teče vsebina skupine - Izolirane skupine uporabljajo ločeno ravnino alfa, zato črna vsebina ostane razločljiva od prosojnih slikovnih pik
- Skupine knockout zamenjajo prejšnji prispevek skupine v prekrivajočih se pobarvanih območjih
- Vsebina skupine se začne z mešalnim načinom Normal: mešalni način, konstantna alfa in mehka maska, veljavni pri
Do, veljajo za skupino kot celoto - Skupina, pobarvana z drugim mešalnim načinom, meša svojo barvo in alfo z ozadjem; neizolirana skupina, katere lastna grafična stanja se mešajo običajno, se nariše na črno in na belo, da se povrne njena alfa
- Skupine se razdelijo na omejene ploščice 768 slikovnih pik, medtem ko barvanje GDI, faza halftona, ugnezdene skupine, mehke maske in sestavljanje ohranijo absolutne koordinate naprave
- Bajti Form se dekodirajo in žetonizirajo enkrat pred izvedbo ploščic, začasne maske, lokalne za ploščico, pa se sprostijo pred naslednjo ploščico
- Ugnezdene skupine so podprte z omejeno rekurzijo in popolno obnovitvijo grafičnega stanja po vsakem klicu Form
Mehke maske
- Maski
/S /Alphain/S /Luminosityse ovrednotita iz skupine maske - Skupina maske se nariše z običajnim mešanjem (Normal), ne glede na mešalni način, ki ga nosi grafično stanje, ki masko nastavi
- Maske svetilnosti razrešijo
/CSskupine prosojnosti in razrešeno barvo utežijo s približkom PDF DeviceGray, kot to počnejo običajni pregledovalniki; nastaviteRenderColorimetricLuminosityMasks, da se namesto tega za prostore na osnovi CIE upošteva kolorimetrični CIE Y /BCse preveri zoper natančno število komponent mešalnega prostora in dobavi pretvorjeno svetilnost zunaj pobarvane vsebine maske- Barvanje Separation in DeviceN se pretvori prek svojega nadomestnega prostora Lab ali ICCBased, tako da komponente posebnih barv nikoli ne puščajo v mehko masko
- Prenosne funkcije
/TRpodpirajo vzorčene, eksponentne, šivalne in kalkulatorske funkcije PostScript prek deljenega vrednotilnika funkcij /SMask /Nonepočisti aktivno masko,qaliQpa stanje maske ohranita običajno- Prevedene maske se znova uporabijo samo, kadar se izvorni slovar, trenutna transformacijska matrika in namen upodabljanja vsi ujemajo
Prenosne in vzorčene funkcije
/TR2 ima prednost pred /TR, ena sama funkcija velja za vse izhodne kanale RGB, polje štirih funkcij pa uporabi prve tri vnose neodvisno in pri tem ohrani vnosa /Identity in /Default
Uporaba novega stanja prenosa zamenja vsak kanal atomsko, zato vnosi identitete ne morejo podedovati iskalnih vrednosti iz prejšnjega grafičnega stanja
Vzorčene funkcije Type 0 podpirajo eno do štiri vhodne in izhodne dimenzije, vrednosti /BitsPerSample 1, 2, 4, 8, 12, 16, 24 in 32, obrnjene ali naprej usmerjene preslikave /Encode, neodvisne obsege /Decode, multilinearno interpolacijo, večdimenzionalno kubično interpolacijo in naravne kubične zlepke za enodimenzionalne podatke /Order 3
Dekodirani vzorčni bajti, preverjene dimenzije, preslikave in kubični odvodi si delijo LRU z osmimi vnosi, omejen na 64 MiB na nit upodabljanja, medtem ko prevelike ali nepravilno oblikovane funkcije spodletijo, ne da bi delno zamenjale aktivno iskalno tabelo prenosa
Halftonske zaslone
Tabele pragov Type 6, Type 10 in Type 16 se izvedejo neposredno z natančnimi dekodiranimi dolžinami, pragovi 16 bitov z velikim koncem, primerjavo aditivnih komponent in kompaktnimi periodičnimi trakovi, ki se izognejo razširitvi poševnih ali dvopravokotnih zaslonov
Slovarji Type 5 izberejo neodvisne zaslone /Red, /Green in /Blue z nadomestnimi prehodi /Gray in obveznim /Default, medtem ko lahko vsak izbrani zaslon preglasi globalno prenosno funkcijo
Preverjeni bajti pragov in njihova normalizirana geometrija si delijo LRU s 64 vnosi, omejen na 64 MiB na upodabljalnik, nepravilno oblikovane dimenzije, prevelike dodelitve, ugnezdeni slovarji Type 5 ali neujemanja dolžin vsebin pa pustijo celotno aktivno stanje zaslona v načinu neprekinjenih tonov
Glifi Type 3
CharProcs Type 3 tečejo skozi celoten pogon operatorjev vsebine s trenutnim obsegom virov slovarja pisave, podporo Form, izrezovanjem, slikami, vzorci in omejeno rekurzijo
d0 in d1 zagotavljata metrike glifov, medtem ko postopek d1 ohrani barvo, ki jo izbere klicatelj, kot zahteva slikovni model PDF
Ponovljeni CharProcs znova uporabijo dekodirane in žetonizirane sezname prikaza, kadar se pisava, glif, linearna matrika naprave in stanje barve ujemajo; prevod ostane dinamičen, zato ponovljeni znaki na različnih položajih delijo en vnos
LRU na upodabljalnik ohrani največ 256 vnosov in 131.072 žetonov, preskoči vsak CharProc nad 16.384 žetoni in poroča o svojem vedenju prek GetLastType3GlyphCacheStats
Izrezana in pomanjšana območja slik
Slikovni XObjects, poravnani z osmi, zahtevajo samo vidne meje vira in posredujejo vidno velikost slikovnih pik naprave v pot dekodiranja
Slika z mehko masko se dekodira v celoti na velikost, na kateri je narisana, njena maska pa na enaki velikosti, zato maska ostane poravnana s sliko, medtem ko izrezovanje omejuje, kaj je pobarvano; maske JPEG uporabljajo dekoder DCT z zmanjšano velikostjo
Pri upodabljanju se dekodirano območje, ki je v obeh smereh vsaj dvakrat večje od narisane velikosti, pred risanjem ali predpomnjenjem s povprečenjem ploščin skrči točno na narisano velikost; velika slika, narisana majhna, se tako umesti v predpomnilnik dekodiranja, zato jo skupina, narisana dvakrat, ali ponovljena stran znova uporabita, njena mehka maska pa se uporabi slikovna pika za slikovno piko na tej velikosti. Maske šablonskih slik ohranijo svojo polno ločljivost, javne metode za dekodiranje območij pa vrnejo svoje dokumentirane velikosti
JPEG 2000 združi nativni API območij dekoderja s stopnjo ločljivosti, ki je potenca števila dva in je izbrana tako, da izpolni obe ciljni dimenziji pred rekonstrukcijo valčkov in razširitvijo rastra
Kodni tokovi JPEG 2000 z naslovljivimi ploščicami lahko dekodirajo tudi eno preverjeno ploščico neposredno prek THPDFJpeg2000Decoder.LoadTileFromByteArray, pri čemer dekoder izpostavi metapodatke mreže ploščic in omejitve izhodnih bajtov
Kadar nativno območje seka več neodvisnih ploščic, LoadRegionFromByteArrayParallel dodeli zasebno stanje OpenJPEG vsakemu delavcu in sestavi dokončane rastre v determinističnem vrstnem redu vrstic; preklic, omejitve izhoda in efektivni proračun največje porabe pomnilnika lahko ustavijo razporejanje ali izberejo zaporedni nadomestni prehod
Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
Canvas.Draw(0, 0, Region);
finally
Region.Free;
end;