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

Mäkké masky

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;

Súvisiace API