Pokročilá sémantika vykresľovania
Vykresľovanie načítanej stránky zachováva vnorený stav Form XObject pri aplikovaní skupín priehľadnosti, mäkkých masiek, procedúr glyfov Type 3 a dekódovania viditeľných oblastí obrázkov podľa rozlíšenia
Čiarkované ťahy ciest
Natívne vykresľovanie ciest zachováva kompletné dash arrays aj ich fázu, vrátane arrays s nepárnou dĺžkou, zlomkových dĺžok a nakreslených dashov s nulovou dĺžkou s guľatými alebo štvorcovými uzávermi; dash vzor sa pri každom subpath začína odznova
Ťahy plnej farby a orezania ťahov gradientových patternov zdieľajú jednu ohraničenú cestu dash geometrie, zachovávajú spoje vnútri súvislých nakreslených úsekov a spájajú nakreslené úseky cez počiatočný bod uzavretej kontúry
Dash dĺžky si zachovávajú priemernú mierku aktuálnej transformácie renderera, zatiaľ čo delenie kriviek používa adaptívne splošťovanie v priestore zariadenia; maľovanie výplne a čakajúce orezanie ďalej používajú pôvodnú nerozdelenú cestu
Skupiny priehľadnosti
- Hodnoty
/MatrixForm XObject sa kombinujú s aktuálnou transformačnou maticou pred spustením obsahu skupiny - Izolované skupiny používajú samostatnú alfa rovinu, takže čierny obsah zostáva rozlíšiteľný od priehľadných pixelov
- Knockout skupiny nahrádzajú predchádzajúci príspevok skupiny v prekrývajúcich sa maľovaných oblastiach
- Obsah skupiny začína Normal blend režimom: blend režim, konštantná alfa a soft maska platné pri
Dosa aplikujú na skupinu ako celok - Skupina namaľovaná iným blend režimom blenduje svoju vlastnú farbu a alfu s pozadím; neizolovaná skupina, ktorej vlastné graphics states sa blendujú normálne, sa kreslí na čierno a na bielo, aby sa obnovila jej alfa
- Skupiny sa rozdeľujú na ohraničené dlaždice 768 pixelov, zatiaľ čo maľovanie GDI, fáza poltónov, vnorené skupiny, mäkké masky a kompozícia zachovávajú absolútne súradnice zariadenia
- Bajty Form sa dekódujú a tokenizujú raz pred vykonaním dlaždice a dočasné masky lokálne pre dlaždicu sa uvoľnia pred ďalšou dlaždicou
- Vnorené skupiny sú podporované s ohraničenou rekurziou a úplným obnovením stavu grafiky po každom volaní Form
Mäkké masky
- Masky
/S /Alphaa/S /Luminositysa vyhodnocujú zo skupiny masky - Skupina masky sa kreslí s Normal blendovaním, nezávisle od blend režimu, ktorý nesie graphics state nastavujúci masku
- Masky luminosity rozlíšia
/CSskupiny priehľadnosti a vyriešenú farbu vážia aproximáciou PDF DeviceGray, ako to robia bežné prehliadače; nastavteRenderColorimetricLuminosityMasks, ak chcete namiesto toho kolorimetrické CIE Y pre priestory založené na CIE /BCsa overuje proti presnému počtu komponentov blendovacieho priestoru a dodáva konvertovanú luminosity mimo maľovaného obsahu masky- Maľovanie Separation a DeviceN sa konvertuje cez svoj alternatívny priestor Lab alebo ICCBased, takže spot komponenty nikdy neuniknú do mäkkej masky
- Prenosové funkcie
/TRpodporujú vzorkované, exponenciálne, zošívacie a PostScript kalkulačkové funkcie cez zdieľaný vyhodnocovač funkcií /SMask /Nonezruší aktívnu masku aqaleboQzachováva stav masky štandardným spôsobom- Skompilované masky sa znovu používajú iba vtedy, keď sa zdrojový slovník, aktuálna transformačná matica a zámer vykresľovania všetky zhodujú
Prenosové a vzorkované funkcie
/TR2 má prednosť pred /TR, jedna funkcia sa aplikuje na každý výstupný kanál RGB a pole so štyrmi funkciami aplikuje prvé tri položky nezávisle, pričom zachová položky /Identity a /Default
Aplikovanie nového prenosového stavu nahrádza každý kanál atomicky, takže položky identity nemôžu zdediť vyhľadávacie hodnoty z predchádzajúceho stavu grafiky
Vzorkované funkcie Type 0 podporujú jednu až štyri vstupné a výstupné dimenzie, hodnoty /BitsPerSample 1, 2, 4, 8, 12, 16, 24 a 32, obrátené alebo priame mapovania /Encode, nezávislé rozsahy /Decode, multilineárnu interpoláciu, viacrozmernú kubickú interpoláciu a prirodzené kubické splajny pre jednorozmerné dáta /Order 3
Dekódované vzorkované bajty, overené dimenzie, mapovania a kubické derivácie zdieľajú LRU s ôsmimi položkami ohraničenú na 64 MiB na vlákno vykresľovania, zatiaľ čo príliš veľké alebo chybné funkcie zlyhajú bez čiastočného nahradenia aktívnej prenosovej vyhľadávacej tabuľky
Poltónové obrazovky
Prahové polia Type 6, Type 10 a Type 16 sa vykonávajú priamo s presnými dekódovanými dĺžkami, big-endian 16-bitovými prahmi, porovnaním aditívnych komponentov a kompaktnými periodickými pásmi, ktoré sa vyhýbajú rozširovaniu uhlových alebo dvojobdĺžnikových obrazoviek
Slovníky Type 5 vyberajú nezávislé obrazovky /Red, /Green a /Blue s prepadmi /Gray a povinným /Default, zatiaľ čo každá vybraná obrazovka môže prepísať globálnu prenosovú funkciu
Overené prahové bajty a ich normalizovaná geometria zdieľajú LRU so 64 položkami ohraničenú na 64 MiB na vykresľovač a chybné dimenzie, príliš veľké alokácie, vnorené slovníky Type 5 alebo nezhody dĺžky užitočného zaťaženia ponechajú úplný aktívny stav obrazovky v režime spojitých tónov
Glyfy Type 3
CharProcs Type 3 prechádzajú kompletným enginom operátorov obsahu s aktuálnym rozsahom zdrojov slovníka fontu, podporou Form, orezávaním, obrázkami, vzormi a ohraničenou rekurziou
d0 a d1 poskytujú metriky glyfov, zatiaľ čo procedúra d1 zachováva farbu vybranú volajúcim podľa požiadavky zobrazovacieho modelu PDF
Opakované CharProcs znovu používajú dekódované a tokenizované zoznamy zobrazení, keď sa font, glyf, lineárna matica zariadenia a farebný stav zhodujú; preklad zostáva dynamický, takže opakované znaky na rôznych pozíciách zdieľajú jednu položku
LRU na vykresľovač uchováva najviac 256 položiek a 131 072 tokenov, preskakuje akýkoľvek CharProc nad 16 384 tokenov a hlási svoje správanie cez GetLastType3GlyphCacheStats
Orezané a zmenšené oblasti obrázkov
Osovo zarovnané obrázkové XObjecty požadujú iba viditeľné hranice zdroja a odovzdávajú viditeľnú veľkosť pixelov zariadenia do cesty dekódovania
Obrázok so soft maskou sa dekóduje celý vo veľkosti, v akej sa kreslí, a jeho maska v rovnakej veľkosti, takže maska zostáva zarovnaná s obrázkom, kým orezávanie obmedzuje, čo sa namaľuje; JPEG masky používajú zmenšený DCT dekodér
Pri vykresľovaní sa dekódovaná oblasť aspoň dvakrát väčšia ako veľkosť kreslenia v oboch smeroch zmenší priemerovaním plochy na presnú veľkosť kreslenia skôr, než sa nakreslí alebo uloží do cache; veľký obrázok nakreslený malý sa tak zmestí do decode cache, takže skupina nakreslená dvakrát alebo opakovaná strana ho znovu použije, a jeho soft maska sa aplikuje pixel po pixeli v tejto veľkosti. Stencil image masky si zachovávajú celé rozlíšenie a verejné metódy dekódovania oblastí vracajú svoje zdokumentované veľkosti
JPEG 2000 kombinuje natívne API oblasti dekodéra s úrovňou rozlíšenia mocniny dvoch vybranou tak, aby spĺňala obe cieľové dimenzie pred rekonštrukciou wavelet a rozšírením rastra
Kodestreamy JPEG 2000 adresovateľné po dlaždiciach môžu tiež dekódovať jednu overenú dlaždicu priamo cez THPDFJpeg2000Decoder.LoadTileFromByteArray, pričom dekodér vystavuje metadáta mriežky dlaždíc a limity výstupných bajtov
Keď natívna oblasť pretína viacero nezávislých dlaždíc, LoadRegionFromByteArrayParallel priradí súkromný stav OpenJPEG každému pracovníkovi a skladá dokončené rastre v deterministickom poradí po riadkoch; zrušenie, výstupné limity a efektívny rozpočet špičkovej pamäte môžu zastaviť plánovanie alebo vybrať sekvenčnú záložnú cestu
Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
Canvas.Draw(0, 0, Region);
finally
Region.Free;
end;