Avanceret gengivelsessemantik

Gengivelse af indlæste sider bevarer indlejret Form XObject-tilstand, mens den anvender gennemsigtighedsgrupper, bløde masker, Type 3-glyfprocedurer og opløsningsbevidst afkodning af synlige billedområder

Stiplede streger

Den oprindelige kurvegengivelse bevarer komplette dash-arrays og deres fase, inklusive arrays med ulige længde, brøkdellængder og malede dash-segmenter med længden nul med runde eller kvadratiske ender; dash-mønsteret starter forfra ved hver delkurve

Ensfarvede streger og stregklip med gradientmønstre deler én afgrænset dash-geometrivej, bevarer hjørnesamlinger inden for sammenhængende malede sektioner og forbinder malede sektioner hen over en lukket konturs startpunkt

Dash-længder bevarer renderens gennemsnitlige skalering af den aktuelle transformation, mens kurveopdeling bruger adaptiv udfladning i enhedsrum; udfyldning og ventende klipning fortsætter med den oprindelige uopdelte kurve

Gennemsigtighedsgrupper

Bløde masker

Overførsels- og samplede funktioner

/TR2 har forrang over /TR, en enkelt funktion gælder for hver RGB-udgangskanal, og et array med fire funktioner anvender sine første tre poster uafhængigt, mens /Identity- og /Default-poster bevares

Anvendelse af en ny overførselstilstand erstatter alle kanaler atomisk, så identitetsposter ikke kan arve opslagsværdier fra en tidligere grafiktilstand

Type 0-samplede funktioner understøtter én til fire input- og outputdimensioner, /BitsPerSample-værdierne 1, 2, 4, 8, 12, 16, 24 og 32, omvendte eller fremadrettede /Encode-afbildninger, uafhængige /Decode-områder, multilineær interpolation, multidimensional kubisk interpolation og naturlige kubiske splines for endimensionelle /Order 3-data

Afkodede samplebytes, validerede dimensioner, afbildninger og kubiske afledte deler en LRU med otte poster og højst 64 MiB pr. gengivelsestråd, mens for store eller ugyldige funktioner fejler uden delvist at erstatte den aktive overførselsopslagstabel

Halvtoneskærme

Type 6-, Type 10- og Type 16-tærskelarrays udføres direkte med nøjagtige afkodede længder, big-endian 16-bit-tærskler, additiv komponent-sammenligning og kompakte periodiske strimler, der undgår at udvide vinklede eller to-rektangels skærme

Type 5-dictionaries vælger uafhængige /Red-, /Green- og /Blue-skærme med /Gray- og påkrævede /Default-fallbacks, mens hver valgt skærm kan tilsidesætte den globale overførselsfunktion

Validerede tærskelbytes og deres normaliserede geometri deler en LRU med 64 poster og højst 64 MiB pr. renderer, og ugyldige dimensioner, for store allokeringer, indlejrede Type 5-dictionaries eller uoverensstemmelser i nyttelastlængde efterlader hele den aktive skærmtilstand i kontinuertonetilstand

Type 3-glyffer

Type 3 CharProcs kører gennem den komplette indholdsoperator-motor med skriftdictionaryets aktuelle ressourceområde, Form-understøttelse, klipning, billeder, mønstre og afgrænset rekursion

d0 og d1 leverer glyfmålinger, mens en d1-procedure bevarer den farve, som kalderen valgte, som krævet af PDF-billedmodellen

Gentagne CharProcs genbruger afkodede og tokeniserede displaylister, når skrifttype, glyf, lineær enhedsmatrix og farvetilstand matcher, og oversættelsen forbliver dynamisk, så gentagne tegn på forskellige placeringer deler én post

LRU'en pr. renderer bevarer højst 256 poster og 131.072 tokens, omgår enhver CharProc over 16.384 tokens og rapporterer sin adfærd gennem GetLastType3GlyphCacheStats

Klipte og nedskalerede billedområder

Aksejusterede billed-XObjects anmoder kun om synlige kildegrænser og sender størrelsen i synlige enhedspixels til afkodningsstien

Et billede med en blød maske afkodes som helhed i den størrelse, det tegnes i, og dets maske i samme størrelse, så masken forbliver justeret med billedet, mens klipning begrænser, hvad der males; JPEG-masker bruger den reducerede DCT-afkoder

Ved gengivelse skrumper et afkodet område, der er mindst dobbelt så stort som tegnestørrelsen i begge retninger, til præcis tegnestørrelsen ved gennemsnitsdannelse af arealet, før det tegnes eller caches; et stort billede, der tegnes småt, kommer derfor med i decode-cachen, så en gruppe, der tegnes to gange, eller en gentagen side genbruger det, og dets bløde maske anvendes pixel for pixel i den størrelse. Stencil image-masker bevarer deres fulde opløsning, og de offentlige områdedekodningsmetoder returnerer deres dokumenterede størrelser

JPEG 2000 kombinerer dekoderens oprindelige område-API med et opløsningsniveau som potens af to, der vælges for at opfylde begge måldimensioner før wavelet-rekonstruktion og rasterudvidelse

Fliseadresserbare JPEG 2000-kodestrømme kan også afkode én valideret flise direkte gennem THPDFJpeg2000Decoder.LoadTileFromByteArray, hvor metadata for flisegitter og grænser for outputbytes eksponeres af dekoderen

Når et oprindeligt område skærer flere uafhængige fliser, tildeler LoadRegionFromByteArrayParallel privat OpenJPEG-tilstand til hver worker og sammensætter fuldførte rastere i deterministisk række-major-rækkefølge, mens annullering, outputgrænser og det effektive spidsbelastningshukommelsesbudget kan stoppe planlægningen eller vælge det sekventielle fallback

Region := PDF.DecodeLoadedImageRegion(ImageStream, 128, 64, 640, 480);
try
  Canvas.Draw(0, 0, Region);
finally
  Region.Free;
end;

Relaterede API'er