Napredna semantika renderiranja
Renderiranje učitanih stranica čuva ugniježđeno stanje Form XObjecta dok primjenjuje transparentne grupe, meke maske, Type 3 glif procedure i dekodiranje vidljivog područja slike svjesno razlučivosti
Iscrtkani potezi putanje
Nativno renderiranje putanja čuva kompletne dash nizove i njihovu fazu, uključujući nizove neparne duljine, razlomljene duljine i crtice nulte duljine s okruglim ili kvadratnim završecima; dash uzorak ponovno kreće na svakom podputu
Potezi punom bojom i isječci poteza gradientnim uzorkom dijele jedan ograničeni put dash geometrije, čuvaju spajanja unutar kontinuiranih naslikanih sekcija i spajaju naslikane sekcije preko početne točke zatvorene konture
Dash duljine zadržavaju srednje mjerilo trenutne transformacije renderera, dok rasjedanje krivulja koristi adaptivno poravnjavanje u prostoru uređaja; bojanje ispuna i čekajuće isječkanje i dalje koriste izvornu nerasjedanu putanju
Transparentne grupe
- Vrijednosti
/MatrixForm XObjecta se sastavljaju s trenutnom transformacijskom matricom prije nego sadržaj grupe se pokrene - Izolirane grupe koriste zasebnu alfa ravninu tako da crni sadržaj ostane razlučiv od prozirnih piksela
- Grupe s uklanjanjem (knockout) zamjenjuju prethodni doprinos grupe u preklapajućim područjima bojenja
- Sadržaj grupe počinje u Normal blend načinu: blend način, konstantna alfa i meka maska na snazi kod
Doprimjenjuju se na grupu kao cjelinu - Grupa naslikana u drugom blend načinu miješa vlastitu boju i alfu s pozadinom; neizolirana grupa čija vlastita grafička stanja blendaju normalno crta se na crno i na bijelo da bi se dohvatila njena alfa
- Grupe se dijele na ograničene pločice od 768 piksela dok GDI bojenje, faza polutona, ugniježđene grupe, meke maske i sastavljanje zadržavaju apsolutne koordinate uređaja
- Bajtovi forme se dekodiraju i tokeniziraju jednom prije izvršenja pločice, a privremene lokalne maske pločice se oslobađaju prije sljedeće pločice
- Ugniježđene grupe su podržane s ograničenom rekurzijom i potpunim vraćanjem stanja grafike nakon svakog poziva Forme
Meke maske
- Maske
/S /Alphai/S /Luminosityizračunavaju se iz grupe maske - Grupa maske crta se s Normal blendanjem, koju god blend način nosilo grafičko stanje koje postavlja masku
- Maske luminosnosti razrješuju
/CStransparentne grupe i težine razriješenu boju PDF aproksimacijom DeviceGray, kao što rade uobičajeni preglednici; postaviteRenderColorimetricLuminosityMasksda umjesto toga uzmete kolorimetrijski CIE Y za prostore bazirane na CIE /BCse potvrđuje protiv točnog broja komponenti prostora blendanja i isporučuje pretvorenu luminosnost izvan naslikanog sadržaja maske- Boja za separaciju i DeviceN se pretvara kroz svoj alternativni Lab ili ICCBased prostor tako da spot komponente nikada ne procure u meku masku
/TRprijenosne funkcije podržavaju vzorkovane, eksponencijalne, šivane te PostScript kalkulator funkcije kroz dijeljeni procjenitelj funkcija/SMask /Nonebriše aktivnu masku, aqiliQnormalno čuvaju stanje maske- Kompilirane maske se ponovno koriste samo kada se izvorni rječnik, trenutna transformacijska matrica i namjera renderiranja svi podudaraju
Prijenosne i vzorkovane funkcije
/TR2 ima prednost nad /TR, jedna funkcija se primjenjuje na svaki RGB izlazni kanal, a niz od četiri funkcije primjenjuje svoja prva tri unosa neovisno dok čuva /Identity i /Default unose
Primjena novog prijenosnog stanja atomski zamjenjuje svaki kanal, tako da identity unosi ne mogu naslijediti vrijednosti pretraživanja iz ranijeg stanja grafike
Type 0 vzorkovane funkcije podržavaju jednu do četiri ulazne i izlazne dimenzije, vrijednosti /BitsPerSample 1, 2, 4, 8, 12, 16, 24 i 32, obrnute ili naprijed /Encode mapiranja, neovisne opsege /Decode, multilinearnu interpolaciju, višedimenzionalnu kubičnu interpolaciju i prirodne kubične spline za jednodimenzionalne podatke /Order 3
Dekodirani bajtovi vzorka, potvrđene dimenzije, mapiranja i kubične derivacije dijele LRU s osam unosa ograničen na 64 MiB po niti renderiranja, dok prevelike ili neispravne funkcije ne uspijevaju bez djelomične zamjene aktivne prijenosne tablice pretraživanja
Ekrani za polutone
Type 6, Type 10 i Type 16 nizovi pragova izvršavaju se izravno s točnim dekodiranim duljinama, big-endian 16-bitnim pragovima, usporedbom aditivnih komponenti i kompaktnim periodičnim trakama koje izbjegavaju proširivanje zakrivljenih ili dvopravokutnih ekrana
Type 5 rječnici biraju neovisne /Red, /Green i /Blue ekrane s /Gray i obveznim /Default povratnim opcijama, dok svaki odabrani ekran može nadjačati globalnu prijenosnu funkciju
Potvrđeni bajtovi pragova i njihova normalizirana geometrija dijele LRU sa 64 unosa ograničen na 64 MiB po rendereru, a neispravne dimenzije, prevelike alokacije, ugniježđeni Type 5 rječnici ili nepodudaranja duljine korisnog sadržaja ostavljaju potpuno aktivno stanje ekrana u kontinuiranom tonskom načinu
Type 3 glifovi
Type 3 CharProcs se pokreću kroz puni motor operatora sadržaja s trenutnim opsegom resursa rječnika fonta, podrškom za Formu, izrezivanje, slike, uzorke i ograničenu rekurziju
d0 i d1 pružaju metrike glifa dok d1 procedura zadržava boju koju odabere pozivatelj kako zahtijeva PDF model slikanja
Ponovljeni CharProcs ponovno koriste dekodirane i tokenizirane popise prikaza kada se font, glif, linearna matrica uređaja i stanje boje podudaraju; prijevod ostaje dinamičan tako da ponovljeni znakovi na različitim pozicijama dijele jedan unos
LRU po rendereru zadržava najviše 256 unosa i 131 072 tokena, zaobilazi svaki CharProc iznad 16 384 tokena i izvještava o svom ponašanju kroz GetLastType3GlyphCacheStats
Izrezana i smanjena područja slike
Slika XObjecti s poravnanjem osi zahtijevaju samo vidljive izvorne granice i prosljeđuju vidljivu veličinu piksela uređaja u putanju dekodiranja
Slika s mekom maskom dekodira se cijela u veličini u kojoj se crta, a njena maska u istoj veličini, tako da maska ostane poravnata sa slikom dok isijecanje ograničava što se crta; JPEG maske koriste dekoder smanjenog DCT-a
Pri iscrtavanju, dekodirano područje najmanje dvostruko veće od crtane veličine u oba smjera smanjuje se točno na crtanu veličinu prosječanjem po površini prije nego se crta ili sprema u predmemoriju; velika slika crtana malim tada stane u predmemoriju dekodiranja, pa je grupa nacrtana dvaput ili ponovljena stranica ponovno koriste, a njena meka maska primjenjuje se piksel po piksel u toj veličini. Maske stencil slika zadržavaju punu razlučivost, a javne metode dekodiranja područja vraćaju svoje dokumentirane veličine
JPEG 2000 kombinira nativni API područja dekodera s razinom razlučivosti u potencijama dvojke odabranom da zadovolji obje ciljne dimenzije prije wavelet rekonstrukcije i rasterskog proširivanja
Tile-adresabilni JPEG 2000 kodni tokovi također mogu dekodirati jednu potvrđenu pločicu izravno kroz THPDFJpeg2000Decoder.LoadTileFromByteArray, s metapodacima mreže pločica i ograničenjima izlaznih bajtova izloženim od strane dekodera
Kada nativno područje siječe više neovisnih pločica, LoadRegionFromByteArrayParallel dodjeljuje privatno OpenJPEG stanje po radniku i sastavlja završene rasterske podatke u determinističkom redoslijedu po retcima; otkazivanje, ograničenja izlaza i učinkoviti budget vršne memorije mogu zaustaviti raspoređivanje ili odabrati sekvencijalnu povratnu opciju
Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
Canvas.Draw(0, 0, Region);
finally
Region.Free;
end;