Išplėstinė atvaizdavimo semantika
Įkelto puslapio atvaizdavimas išsaugo įdėtos Form XObject būsenos, tuo pačiu taikydamas skaidrumo grupes, minkštas kaukes, Type 3 glifo procedūras ir su raiška suvoktą matomo paveikslo srities dekodavimą
Brūkšniuotų takų brūkšniavimas
Vietinis takų atvaizdavimas išsaugo pilnus brūkšnių masyvus ir jų fazę, įskaitant nelyginio ilgio masyvus, trupmeninius ilgius ir nulinio ilgio nudažytus brūkšnius su apvaliais arba kvadratiniais galais; brūkšnių raštas kiekviename subkelyje pradedamas iš naujo
Vienaspalviai brūkšniai ir gradientinio šablono brūkšnių iškirpimai naudoja tą patį apribotą brūkšnių geometrijos kelią, išlaiko jungtis ištisose nudažytose dalyse ir sujungia nudažytas dalis per uždaro kontūro pradinį tašką
Brūkšnių ilgiai išlaiko atvaizduotojo vidutinę dabartinės transformacijos skalę, o kreivių skaidymas naudoja adaptatyvų suplovinimą prietaiso erdvėje; užpildymo dažymas ir dar neatliktas iškirpimas toliau naudoja originalų nesuskaidytą taką
Skaidrumo grupės
- Form XObject
/Matrixreikšmės sudaromos su dabartine darinio matrica prieš paleidžiant grupės turinį - Izoliuotos grupės naudoja atskirą alfa plokštumą, kad juodas turinys išliktų skiriamas nuo skaidrių pikselių
- Knockout grupės pakeičia ankstesnį grupės indėlį persidengiančiose dažytose srityse
- Grupės turinys prasideda nuo Normal maišymo režimo: maišymo režimas, pastovioji alfa ir minkštoji kaukė, galiojantys
Dometu, taikomi visai grupei - Grupė, nudažyta kitu maišymo režimu, savo spalvą ir alfą maišo su fonu; neizoliuota grupė, kurios pačios grafikos būsenų maišymas įprastas, piešiama ant juodo ir ant balto, kad būtų atkurta jos alfa
- Grupės skaidomos į apribotas 768 pikselių plyteles, kol GDI dažymas, pustonių fazė, įdėtos grupės, minkštos kaukės ir komponavimas išlaiko absoliučias prietaiso koordinates
- Formos baitai dekoduojami ir žyminami vieną kartą prieš plytelių vykdymą, o laikinos plytelės vietinės kaukės atleidžiamos prieš kitą plytelę
- Įdėtos grupės palaikomos su apribota rekursija ir visišku grafikos būsenos atkūrimu po kiekvieno Form iškvietimo
Minkštos kaukės
/S /Alphair/S /Luminositykaukės vertinamos iš kaukės grupės- Kaukės grupė piešiama su Normal maišymu, kokį bedbūtų maišymo režimą nešioja ją nustatanti grafikos būsena
- Šviesumo kaukės išsprendžia skaidrumo grupės
/CSir sveria išspręstą spalvą pagal PDF DeviceGray aproksimaciją, kaip įprasta žiūrovėlių; nustatykiteRenderColorimetricLuminosityMasks, jei norite CIE pagrįstoms erdvėms imti kolorimetrinį CIE Y /BCtikrinamas pagal tikslų maišymo erdvės komponentų skaičių ir suteikia konvertuotą šviesumą už nudažyto kaukės turinio- Separation ir DeviceN dažymas konvertuojamas per jo pakaitinę Lab arba ICCBased erdvę, kad dėmės komponentai niekada neištekėtų į minkštą kaukę
/TRperdavimo funkcijos palaiko pavyzdines, eksponentines, sujungimo ir PostScript skaičiuotuvų funkcijas per bendrą funkcijų įvertintuvą/SMask /Noneišvalo aktyvią kaukę, oqarbaQįprastai išsaugo kaukės būseną- Sudarytos kaukės naudojamos pakartotinai tik tada, kai sutampa ir šaltinio žodynas, ir dabartinė darinio matrica, ir atvaizdavimo intencija
Perdavimo ir pavyzdinės funkcijos
/TR2 turi pirmenybę prieš /TR, viena funkcija taikoma kiekvienam RGB išvesties kanalui, o keturių-funkcijų masyvas pirmąsias tris įrašus taiko nepriklausomai, išsaugodamas /Identity ir /Default įrašus
Naujos perdavimo būsenos taikymas atomiškai pakeičia kiekvieną kanalą, todėl tapatybės įrašai negali paveldėti paieškos reikšmių iš ankstesnės grafikos būsenos
Type 0 pavyzdinės funkcijos palaiko nuo vieno iki keturių įvesties ir išvesties matmenų, /BitsPerSample reikšmes 1, 2, 4, 8, 12, 16, 24 ir 32, atvirkštinius arba tiesioginius /Encode atvaizdavimus, nepriklausomus /Decode diapazonus, daugiainijinę interpoliaciją, daugiamatę kubinę interpoliaciją ir natūralias kubines splainas vienmačiam /Order 3 duomenims
Dekoduoti mėginio baitai, patvirtinti matmenys, atvaizdavimai ir kubinės išvestinės dalijasi aštuonių įrašų LRU, apribota 64 MiB vienam atvaizdavimo gijai, o per didelės arba netinkamos funkcijos žlunga be dalinio aktyvios perdavimo paieškos lentelės pakeitimo
Pustonių ekranai
Type 6, Type 10 ir Type 16 ribų masyvai vykdomi tiesiogiai su tiksliais dekodavimo ilgiais, didžiojo baito eiliškumo 16 bitų ribomis, priedų komponentų palyginimu ir kompaktiškomis periodinėmis juostomis, kurios vengia kampinių arba dviejų stačiakampių ekranų išplėtimo
Type 5 žodynai parenka nepriklausomus /Red, /Green ir /Blue ekranus su /Gray ir būtinu /Default atsarginiu variantu, o kiekvienas pasirinktas ekranas gali perrašyti globalią perdavimo funkciją
Patvirtinti ribų baitai ir jų normalizuota geometrija dalijasi 64 įrašų LRU, apribota 64 MiB vienam atvaizduotojui, o netinkami matmenys, per dideli paskirstymai, įdėti Type 5 žodynai arba apkrovos ilgio neatitikimai palieka visą aktyvią ekrano būseną ištisinio tono režimu
Type 3 glifai
Type 3 CharProc veikia per visą turinio operatoriaus variklį su šrifto žodyno dabartine išteklių apimtimi, Form palaikymu, iškirpimu, paveikslais, šablonais ir apribota rekursija
d0 ir d1 teikia glifo metrikas, o d1 procedūra išlaiko iškvietėjo pasirinktą spalvą, kaip reikalaujama PDF atvaizdavimo modelio
Pasikartojantys CharProc pakartotinai naudoja dekoduotus ir žymintus rodymo sąrašus, kai sutampa šriftas, glifas, tiesinė prietaiso matrica ir spalvų būsena; vertimas lieka dinaminis, todėl pasikartojantys simboliai skirtingose pozicijose dalijasi vienu įrašu
LRU vienam atvaizduotojui išlaiko ne daugiau kaip 256 įrašus ir 131 072 žymes, praleidžia bet kurį CharProc virš 16 384 žymių ir praneša savo veikseną per GetLastType3GlyphCacheStats
Iškirstos ir sumažintos paveikslų sritys
Išilgai ašių sulygiuoti paveikslų XObject prašo tik matomų šaltinio ribų ir perduoda matomą prietaiso-pikselio dydį į dekodavimo kelią
Paveikslas su minkštaja kauke dekoduojamas visas dydžiu, kuriuo piešiamas, o jo kaukė — tokiu pat dydžiu, todėl kaukė lieka sulygiuota su paveikslu, kol kirpimas riboja, kas nudažoma; JPEG kaukės naudoja sumažinto dydžio DCT dekoderį
Atvaizduojant dekoduota sritis, abiem kryptimis bent du kartus didesnė už piešiamąjį dydį, prieš piešimą arba podėlio įrašymą plotu vidurkinama tiksliai iki piešiamojo dydžio; didelis piešiamas mažas paveikslas tada telpa į dekodavimo podėlį, tad dukart piešiama grupė arba kartojamas puslapis jį pakartotinai naudoja, o jo minkštoji kaukė taikoma pikselis pikseliui tame dydyje. Šabloninės (stencil) paveikslų kaukės išlaiko pilną raišką, o viešosios sričių dekodavimo metodai grąžina dokumentuotus dydžius
JPEG 2000 derina dekodavimo priemonės vietinį srities API su dviejų laipsnio raiškos lygiu, parinktu abiem tiksliniams matmenims pasiekti prieš bangelių rekonstrukciją ir rastro išplėtimą
Plytelių adresuojami JPEG 2000 kodų srautai gali taip pat dekoduoti vieną patvirtintą plytelę tiesiogiai per THPDFJpeg2000Decoder.LoadTileFromByteArray, o plytelių tinklelio metaduomenys ir išvesties baitų ribos atskleidžiami dekodavimo priemonės
Kai vietinė sritis kerta kelias nepriklausomas plyteles, LoadRegionFromByteArrayParallel priskiria privačią OpenJPEG būseną kiekvienam darbuotojui ir sudaro baigtas rastro dalis deterministine eilutės-stulpelio tvarka; atšaukimas, išvesties ribos ir efektyvus didžiausios atminties biudžetas gali sustabdyti planavimą arba pasirinkti nuoseklų atsarginį variantą
Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
Canvas.Draw(0, 0, Region);
finally
Region.Free;
end;