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

Minkštos kaukės

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;

Susijusios API