Pluggable Page Render Backends

HotPDF gali nukreipti įkeltų puslapių taškų atvaizdavimą per programos nustatytą posistemę, palikdamas esamą atvaizduoklį kaip bekonfigūracionį numatytąjį ir neprivalomą atsarginį

Integruotoji savoji posistemė

PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);

THPDFNativeGDIRenderBackend atskleidžia įsitvirtinusią Windows savąją GDI atvaizduoklę per tą pačią viešąją posistemės sąsają, kurią naudoja išorinės implementacijos

Jos galimybės deklaruoja prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement ir prbcThreadSafe, nereikalaudamos prbcDeviceAcceleration

SIMD eilučių posistemė

var
  Backend: IHPDFPageRenderBackend;
begin
  Backend := THPDFSIMDScanlineRenderBackend.Create;
  PDF.PageRenderBackend := Backend;
  Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;

THPDFSIMDScanlineRenderBackend pirmiausiai atlieka pirminę visos sukompiliuotos display-list patikrą, paskui palaikomus DeviceRGB arba DeviceGray stačiakampių užpildymus rašo tiesiai į galutinį 32 bitų bitmap paviršių 64 baitų porcijomis ir 16 baitų vektoriniais galiniais

Sudėtiniai stačiakampių kontūrai laikosi nonzero arba even-odd užpildymo taisyklės kaip vienas piešimo veiksmas, išsaugodami angas, transformuotą path dalies kryptį ir anksčiau nupieštą turinį; rastravimas patikrina atšaukimą apribotomis porcijomis ir išmeta dalinius paviršius

Posistemė priima grafikos būsenos išsaugojimą ir atkūrimą, ortogonalius mastelio, postūmio ir stačiakampio pasukimo matricas, užpildymo spalvos keitimus, stačiakampius, užpildymo operatorius ir kontūro atstatymą; tekstą, savavales kontūrus, brūkšnius, vaizdus, permatomumą, apkarpytį, raštus, šydymus, nepalaikomas spalvų erdves ir neortogonaliąsias transformacijas atmeta dar prieš skirdama bitmap

Jos gebėjimai deklaruoja prbcSIMD, prbcThreadSafe ir prbcDeterministic, nereikalaudami įrenginio spartintuvo, permatomumo ar spalvų valdymo

THPDFSIMDRenderBackendStatistics praneša tiesioginius paviršius, atvaizduotus stačiakampius, vektorinius blokus, skaliarinius galinius taškus ir tikslų atmestąjį operatorių, kai reikia atsarginio kelio

Savas posistemės (backend) kontraktas

Įgyvendinkite IHPDFPageRenderBackend ir priskirkite jį THotPDF.PageRenderBackend

THPDFPageRenderBackendRequest pateikia pageidaujamąjį puslapio indeksą ir DPI, sukompiliuotąjį THPDFPageDisplayList ir THPDFRenderDocAccess sprėndėją srautams, vaizdams, šriftams, pasirinktajam turiniui, spalvų valdymui ir atšaukimui

Posistemė gali apžiūrėti kiekvieną sukompiliuotą operatorių per THPDFPageDisplayList.GetToken, vėl neanalizuodama puslapio turinio

Grąžinkite True su naujai skirtu TBitmap, kad bitmap nuosavybę perduotumėte HotPDF; grąžinkite False be bitmap, jei atmetate užklausą

Lygiagretumas ir atsarginis kelias

Posistemės, deklaruojančios prbcThreadSafe, gali dirbti lygiagrečiai per abu lygiagrečius puslapių atvaizdavimo konvejerius

Posistemės be to gebėjimo suretikalinamos per atskirą kvietimų raktą, o display-list kompiliavimas lieka lygiagretus

rbfpSoftwareFallback neprieinamą, atmestą arba nesėkmingą posistemės užklausą pakartoja su esama atvaizduokle, o rbfpFail iškelia EHPDFRenderBackend

Posistemė gali papildomai įgyvendinti IHPDFPageRenderBackendFailureInfo arba grąžinti atskirai užklausai skiriamą diagnostikos priežastį, tad lygiagretūs atmetimai išlaiko tikslaus atvaizdavimo bandymo priežastį

Posistemės pakeitimas panaikina atmintyje ir nuolatiniame podėlyje saugomus atvaizduotų puslapių įrašus, tad skirtingų atvaizduoklių vaizdai niekada nesimaišo

Diagnostika ir vaizdo vartai

THPDFRenderBackendStatistics praneša bandymus, sėkmes, nesėkmes, programinius atsarginius kelius, suretikalintus kvietimus, praėjusį laiką, posistemės vardą ir paskutinės nesėkmės priežastį

Įtaisytasis atitikmens fiksatorius naudoja persidengiantį permatomumą ir deklaruoja didžiausiąjį Delta E 0, alfa komponavimo RGB paklaidą 0 ir besiskiriančių taškų skaičių 0, lyginant su numatytąja atvaizduokle Win32 ir Win64 aplinkose

Susijusios API