Geavanceerde renderingsemantiek

Rendering van geladen pagina's behoudt geneste Form-XObject-status terwijl het transparantiegroepen, soft masks, Type 3-glyphprocedures en resolutiebewuste decodering van zichtbare beeldregio's toepast

Gestreepte padlijnstreken

Native padrendering behoudt volledige dash-arrays en hun fase, inclusief arrays met oneven lengte, fractionele lengtes en nul-lange geschilderde streepjes met ronde of vierkante caps; het dashpatroon start opnieuw bij elk subpad

Effen lijnstreken en gradient-patroon-strokeclips delen één begrensd dash-geometriepad, behouden verbindingen binnen doorlopende geschilderde secties en verbinden geschilderde secties over het startpunt van een gesloten contour heen

Dashlengtes behouden de gemiddelde current-transformation-schaal van de renderer, terwijl curve-splitsing adaptieve apparaatruimte-flattening gebruikt; vulling en pending clipping blijven het originele, ongesplitste pad gebruiken

Transparantiegroepen

Soft masks

Overdrachts- en bemonsterde functies

/TR2 heeft voorrang op /TR, één functie geldt voor elk RGB-uitvoerkanaal en een vier-functiearray past de eerste drie vermeldingen onafhankelijk toe terwijl /Identity- en /Default-vermeldingen worden behouden

Toepassen van een nieuwe overdrachtsstatus vervangt elk kanaal atomair, dus identiteitsvermeldingen kunnen geen opzoekwaarden overerven van een eerdere grafische status

Type 0-bemonsterde functies ondersteunen een tot vier invoer- en uitvoerdimensies, /BitsPerSample-waarden 1, 2, 4, 8, 12, 16, 24 en 32, omgekeerde of voorwaartse /Encode-mappingen, onafhankelijke /Decode-bereiken, multilineaire interpolatie, multidimensionale kubische interpolatie en natuurlijke kubische splines voor eendimensionale /Order 3-gegevens

Gedecodeerde samplebytes, gevalideerde dimensies, mappingen en kubische afgeleiden delen een LRU met acht vermeldingen, begrensd op 64 MiB per rendering-thread, terwijl overgrote of ongeldige functies falen zonder de actieve overdrachts-opzoektabel gedeeltelijk te vervangen

Halftone-schermen

Type 6-, Type 10- en Type 16-drempelarrays worden rechtstreeks uitgevoerd met exacte gedecodeerde lengtes, big-endian 16-bit-drempels, additieve-componentvergelijking en compacte periodieke strips die schuine of twee-rechthoeksschermen vermijden uit te breiden

Type 5-woordenlijsten selecteren onafhankelijke /Red-, /Green- en /Blue-schermen met /Gray- en vereiste /Default-teugval, terwijl elk geselecteerd scherm de globale overdrachtsfunctie kan overschrijven

Gevallideerde drempelbytes en hun genormaliseerde geometrie delen een LRU met 64 vermeldingen, begrensd op 64 MiB per renderer, en ongeldige dimensies, overgrote toewijzingen, geneste Type 5-woordenlijsten of lengteverschillen in payload laten de volledige actieve schermstatus in continue-tonemodus

Type 3-glyphs

Type 3-CharProcs worden uitgevoerd door de volledige content-operator-engine met de huidige resource-scope van de lettertypewoordenlijst, Form-ondersteuning, clipping, afbeeldingen, patronen en begrensde recursie

d0 en d1 leveren glyphmetrieken terwijl een d1-procedure de door de aanroeper gekozen kleur behoudt, zoals vereist door het PDF-imagingmodel

Herhaalde CharProcs hergebruiken gedecodeerde en getokeniseerde display-lists wanneer lettertype, glyph, lineaire apparaatmatrix en kleurstatus overeenkomen; translatie blijft dynamisch zodat herhaalde tekens op verschillende posities één vermelding delen

De per-renderer LRU behoudt maximaal 256 vermeldingen en 131.072 tokens, slaat elke CharProc boven 16.384 tokens over en rapporteert zijn gedrag via GetLastType3GlyphCacheStats

Geclipte en verkleinde beeldregio's

As-uitgelijnde beeld-XObjecten vragen alleen zichtbare bronbereiken aan en geven de zichtbare apparaatpixelgrootte door aan het decodeerpad

Een afbeelding met een soft mask wordt als geheel gedecodeerd op de grootte waarop hij wordt getekend, en zijn mask op dezelfde grootte, zodat het mask uitgelijnd blijft met de afbeelding terwijl clipping beperkt wat wordt geschilderd; JPEG-masks gebruiken de DCT-decoder voor verminderde grootte

Bij rendering wordt een gedecodeerde regio die in beide richtingen ten minste tweemaal de getekende grootte is, vóór het tekenen of cachen via vlakgemiddelde exact teruggebracht tot de getekende grootte; een grote afbeelding die klein wordt getekend past dan in de decodeercache, zodat een groep die tweemaal wordt getekend of een herhaalde pagina hem hergebruikt, en zijn soft mask wordt op die grootte pixel voor pixel toegepast. Stencil-imagemasks behouden hun volledige resolutie, en de openbare regio-decoderingsmethoden geven hun gedocumenteerde groottes terug

JPEG 2000 combineert de native region-API van de decoder met een machts-van-twee-resolutieniveau dat is geselecteerd om beide doeldimensies te halen vóór wavelet-reconstructie en rasteruitbreiding

Tegel-adresseerbare JPEG 2000-codestreams kunnen ook één gevalideerde tegel rechtstreeks decoderen via THPDFJpeg2000Decoder.LoadTileFromByteArray, met tegelraster-metagegevens en uitvoerbyte-limieten die door de decoder worden blootgelegd

Wanneer een native regio meerdere onafhankelijke tegels kruist, wijst LoadRegionFromByteArrayParallel per worker privé-OpenJPEG-status toe en stelt voltooide rasters samen in deterministische rij-hoofdvolgorde; annulering, uitvoerlimieten en het effectieve piekgeheugenbudget kunnen planning stoppen of de sequentiële teugval selecteren

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

Gerelateerde API's