Avancerad renderingssemantik

Rendering av inlästa sidor bevarar nästlade Form XObject-tillstånd samtidigt som transparensgrupper, mjuka masker, Type 3-glyfprocedurer och upplösningsmedveten avkodning av synliga bildregioner tillämpas

Streckade pennstreck

Inbyggd banrendering bevarar fullständiga streckmönster och deras fas, inklusive arrayer med udda längd, bråktalslängder och nollängdsstreck som målas med rund eller fyrkantig ändkappa; streckmönstret börjar om vid varje delbana

Streck i helfärg och klippning av gradientmönsterstreck delar en gemensam avgränsad streckgeometriväg, behåller skarvar inuti sammanhängande målade avsnitt och fogar ihop målade avsnitt över en sluten konturs startpunkt

Strecklängder behåller renderarens medelvärde av den aktuella transformationens skala, medan kurvuppdelning använder adaptiv plattning i enhetsrymden; fyllnadsmålning och väntande klippning fortsätter att använda den ursprungliga, oudelade banan

Transparensgrupper

Mjuka masker

Överförings- och provtagna funktioner

/TR2 har företräde framför /TR, en enda funktion tillämpas på varje RGB-utgångskanal, och en fyrafunktions-array tillämpar sina första tre poster oberoende samtidigt som /Identity- och /Default-poster bevaras

Tillämpning av ett nytt överföringstillstånd ersätter varje kanal atomärt, så identitetsposter kan inte ärva uppslagsvärden från ett tidigare grafikstillstånd

Typ 0-provtagna funktioner stöder en till fyra in- och utgångsdimensioner, /BitsPerSample-värdena 1, 2, 4, 8, 12, 16, 24 och 32, omvända eller framåt-/Encode-mappningar, oberoende /Decode-intervall, flerlinjär interpolering, flerdimensionell kubisk interpolering och naturliga kubiska splines för endimensionell /Order 3-data

Avkodade provbyte, validerade dimensioner, mappningar och kubiska derivator delar en åttaposters LRU med tak på 64 MiB per renderingstråd, medan överdimensionerade eller felformaterade funktioner misslyckas utan att delvis ersätta den aktiva överföringsuppslagstabellen

Halvtonsskärmar

Typ 6-, Typ 10- och Typ 16-tröskelarrayer körs direkt med exakta avkodade längder, big-endian 16-bitars-trösklar, jämförelse av additiva komponenter och kompakta periodiska band som undviker att expandera vinklade eller två-rektangulära skärmar

Typ 5-ordlistor väljer oberoende /Red-, /Green- och /Blue-skärmar med /Gray- och obligatoriska /Default-fallbacks, medan varje vald skärm kan åsidosätta den globala överföringsfunktionen

Validerade tröskelbyte och deras normaliserade geometri delar en 64-posters LRU med tak på 64 MiB per renderare, och felformaterade dimensioner, överdimensionerade allokeringar, nästlade Typ 5-ordlistor eller längd-mismatchar i nyttolasten lämnar det fullständiga aktiva skärmtillståndet i kontinuerlig-tonläge

Type 3-glyfer

Type 3-CharProc:er körs genom den fullständiga innehållsoperator-motorn med teckensnittsordlistans aktuella resursomfång, Form-stöd, klippning, bilder, mönster och begränsad rekursion

d0 och d1 tillhandahåller glyfmetriker medan en d1-procedur behåller den anropare-valda färgen som krävs av PDF-avbildningsmodellen

Upprepade CharProc:er återanvänder avkodade och tokeniserade visningslistor när teckensnitt, glyf, linjär enhetsmatris och färgtillstånd matchar; översättningen förblir dynamisk så att upprepade tecken vid olika positioner delar en post

Den per-renderare LRU:n behåller högst 256 poster och 131,072 token, förbigår alla CharProc över 16,384 token och rapporterar sitt beteende genom GetLastType3GlyphCacheStats

Klippta och nedskalade bildregioner

Axeljusterade bild-XObjects begär endast synliga källgränser och skickar den synliga enhetspixelstorleken vidare i avkodningssökvägen

En bild med mjuk mask avkodas i sin helhet i den storlek den ritas i, och dess mask i samma storlek, så att masken förblir justerad mot bilden medan klippningen begränsar vad som målas; JPEG-masker använder DCT-avkodaren med reducerad storlek

Vid rendering krymper en avkodad region som är minst dubbla den ritade storleken i båda riktningar till exakt den ritade storleken genom area-medelvärdesbildning innan den ritas eller cachas; en stor bild som ritas liten får då plats i avkodningscachen, så att en grupp som ritas två gånger eller en upprepad sida återanvänder den, och dess mjuka mask appliceras pixel för pixel i den storleken. Stencil-bildmasker behåller sin fulla upplösning, och de publika regionsavkodningsmetoderna returnerar sina dokumenterade storlekar

JPEG 2000 kombinerar avkodarens inbyggda region-API med en tvånpotens-upplösningsnivå som väljs för att uppfylla båda måldimensionerna före wavelet-rekonstruktion och rasterexpansion

Platt-adresserbara JPEG 2000-kodströmmar kan även avkoda en validerad platta direkt genom THPDFJpeg2000Decoder.LoadTileFromByteArray, med plattgridsmetadata och utgångsbytesgränser exponerade av avkodaren

När en nativ region skär flera oberoende plattor tilldelar LoadRegionFromByteArrayParallel privat OpenJPEG-tillstånd per arbetare och komponerar färdiga raster i deterministisk rad-huvudordning; annullering, utgångsgränser och den effektiva toppminnesbudgeten kan stoppa schemaläggningen eller välja sekventiell fallback

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

Relaterade API:er