Avansert renderingssemantikk

Rendering av lastede sider bevarer nestet Form XObject-tilstand mens den bruker transparensgrupper, myke masker, Type 3-glyfprosedyrer og oppløsningsbevisst avkoding av synlige bildeområder

Stiplede banestreker

Native bane-rendering bevarer komplette dash-arrayer og fasen deres, inkludert arrayer med oddetallslengde, fraksjonelle lengder og null-lange malte dasher med runde eller firkantede caps; dash-mønsteret starter på nytt for hver delbane

Solidfargede streker og gradient-mønster-stroke-klipp deler én avgrenset dash-geometribane, beholder skjøter inne i sammenhengende malte seksjoner og kobler malte seksjoner over startpunktet til en lukket kontur

Dash-lengder beholder rendererens gjennomsnittlige skalering av gjeldende transformasjon, mens kurvesplitting bruker adaptiv flattening i enhetsrom; fyllmaling og ventende klipping fortsetter å bruke den opprinnelige usplittede banen

Transparensgrupper

Myke masker

Overførings- og samplede funksjoner

/TR2 har forrang over /TR, en enkelt funksjon gjelder for hver RGB-utgangskanal, og en firefunksjons-tabell bruker de tre første oppføringene sine uavhengig mens den bevarer /Identity- og /Default-oppføringer

Å bruke en ny overføringstilstand erstatter hver kanal atomisk, så identitetsoppføringer kan ikke arve oppslagsverdier fra en tidligere grafikk-tilstand

Type 0 samplede funksjoner støtter én til fire inngangs- og utgangsdimensjoner, /BitsPerSample-verdier 1, 2, 4, 8, 12, 16, 24 og 32, reverserte eller framoverskridende /Encode-kartlegginger, uavhengige /Decode-områder, multilineær interpolasjon, flerdimensjonal kubisk interpolasjon og naturlige kubiske splines for endimensjonale /Order 3-data

Avkodede sample-byte, validerte dimensjoner, kartlegginger og kubiske derivater deler en åtte-post-LRU taket på 64 MiB per renderingstråd, mens overstore eller feilformede funksjoner feiler uten delvis å erstatte den aktive overførings-oppslagstabellen

Halftone-skjermer

Type 6-, Type 10- og Type 16-terskelmatriser kjører direkte med eksakte dekodede lengder, big-endian 16-bits terskler, additiv-komponent-sammenligning og kompakte periodiske striper som unngår å utvide vinklede eller to-rektangel-skjermer

Type 5-ordbøker velger uavhengige /Red-, /Green- og /Blue-skjermer med /Gray- og nødvendige /Default-fallback-er, mens hver valgte skjerm kan overstyre den globale overføringsfunksjonen

Validerte terskel-byte og deres normaliserte geometri deler en 64-post-LRU taket på 64 MiB per renderer, og feilformede dimensjoner, overstore allokeringer, nestede Type 5-ordbøker eller nyttelastlengde-avvik etterlater hele den aktive skjermtilstanden i kontinuerlig-tone-modus

Type 3-glyfer

Type 3-CharProcs kjører gjennom hele innholdsoperator-motoren med fontordbokens nåværende ressursomfang, Form-støtte, klipping, bilder, mønstre og avgrenset rekursjon

d0 og d1 gir glyf-metrikker mens en d1-prosedyre beholder kalleren-valgte fargen som PDF-imagingmodellen krever

Gjentatte CharProcs gjenbruker dekodede og tokeniserte visningslister når font, glyf, lineær enhetsmatrise og fargetilstand stemmer; oversettelse forblir dynamisk slik at gjentatte tegn ved ulike posisjoner deler én oppføring

Per-renderer-LRU-en beholder høyst 256 oppføringer og 131 072 tokens, hopper over enhver CharProc over 16 384 tokens, og rapporterer oppførselen sin gjennom GetLastType3GlyphCacheStats

Klippede og nedskalerte bildeområder

Aksejusterte bilde-XObject-er ber bare om synlige kildegrenser og sender den synlige enhets-pikselstørrelsen inn i avkodingsbanen

Et bilde med myk maske dekodes i sin helhet i størrelsen det tegnes i, og masken dets i samme størrelse, slik at masken forblir justert mot bildet mens klippingen begrenser det som males; JPEG-masker bruker DCT-dekoderen med redusert størrelse

Ved rendering krympes et dekodet område som er minst dobbelt så stort som tegnestørrelsen i begge retninger til nøyaktig tegnestørrelsen ved gjennomsnitt av arealer før det tegnes eller cached; en stort bilde som tegnes lite passer da i avkode-cachen, slik at en gruppe som tegnes to ganger eller en gjentatt side gjenbruker det, og den myke masken brukes piksel for piksel i den størrelsen. Stencil-bildemasker beholder sin fulle oppløsning, og de offentlige område-avkodingsmetodene returnerer sine dokumenterte størrelser

JPEG 2000 kombinerer dekoderens native område-API med et power-of-two-oppløsningsnivå valgt for å møte begge måldimensjonene før wavelet-rekonstruksjon og rastreringsutvidelse

Flisdresserbare JPEG 2000-kodestrømmer kan også dekode én validert flise direkte gjennom THPDFJpeg2000Decoder.LoadTileFromByteArray, med flisegitter-metadata og utgående bytegrenser eksponert av dekoderen

Når et native område krysser flere uavhengige fliser, tildeler LoadRegionFromByteArrayParallel privat OpenJPEG-tilstand per arbeider og komponerer fullførte rastre i deterministisk rad-og-kolonne-rekkefølge; kansellering, utgangsgrenser og det effektive topp-minnebudsjettet kan stoppe planlegging eller velge den sekvensielle fallback-en

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

Relaterte API-er