Display Lists and Print Production

HotPDF sukompiliuoja įkeltus puslapių srautus į pakartotinai naudojamus THPDFPageDisplayList egzempliorius su THPDFDisplayListInfo metrikomis ir turinio objektų ribiniais stačiakampiais

Dokumento atvaizdavimas podėliuoja sukompiliuotus sąrašus, o kvietėjai gali prašyti nepriklausomai valdomą sąrašą kartotiniam vykdymui arba sritiniams objektų užklausimams

Bendrasis gamybos interpretatorius

Nežingsninis taškų atvaizdas, tiesioginis DC, Form ir display-list atkūrimas visi perduoda prieš tai suskaidytąjį turinį per HPDFInterpretContentTokensDevice, kuris valdo operatorių apėjimą ir atšaukimo ribas

THPDFPageRenderer įgyvendina IHPDFContentOperatorDevice, todėl bendrasis apėjimas kviečia visą jo grafikos, teksto, išteklių, apkarpytimo, raštų, permatomumo, pažymėtojo turinio ir vaizdų būsenos mašiną, nesumažindamas gamybinio atvaizdavimo iki mažesniojo semantinio atgalinių kvietimų paviršiaus

Display list'ai, kol srautai kompiliuojami, podėliuoja operatorių žetonų indeksus ir atkuria tik tuos indeksus, išvengdami kartotinių operandų apėjimų; THPDFPageDisplayList.OperatorCount ir THPDFDisplayListInfo.OperatorCount atskleidžia podėliuotąjį komandų skaičių

Semantiniai įrenginiai, įgyvendinantys tik IHPDFContentDevice, išlaiko gebėjimais filtruotus atgalinius kvietimus, o pilnieji operatorių įrenginiai vienu metu gauna po vieną patvirtintą operatorių su po vieną atšaukimo kontrolės tašką operatoriui

Apribotas ir lygiagretus atvaizdavimas

THPDFRenderTileEvent vienu metu gauna po vieną kvietėjo dydžio plytelę arba horizontaliąją juostą, tad didžiausioji rastrinė atmintis nepriklauso nuo viso puslapio dydžio

RenderLoadedPagesParallel display-list kompiliavimą persidengia su atkūrimu, pirmąjį paruoštą puslapį pradeda nelaukdamas pilnos kompiliavimo kliūties, dinamiškai subalansuoja abu etapus tarp apribotų darbuotojų ir grąžina THPDFBitmapArray įvesties tvarka

Kompiliavimas vyksta už display-list podėlio rakto ribų, o dvigubai tikrintas priėmimas ir saugomieji naudojimo skaitikliai leidžia nesusijusius puslapius kompiliuoti lygiagrečiai, nedubliuojant išduotų įrašų ar neišrodant sąrašo atkūrimo metu

THPDFParallelRenderPipelineInfo atskleidžia podėlio atitikimus, kompiliacijas, užbaigimus, didžiausiąjį kompiliavimo ir atvaizdavimo lygiagretumą, prie pirmojo rezultato sukompiliuotus puslapius, pirmojo rezultato delsą ir visą praėjusį laiką

RenderLoadedPagesParallelOrdered atgalinius kvietimus įvesties tvarka išdala kviečiančiojoje gijoje ir atlaisvina kiekvieną paskolintąją bitmap grįžus kvietimui, o kvietėjo pasirinktoji išvesties gylio riba gamintojui taiko atgalinį spaudimą ir rezervuoja vietą kitam reikalingam puslapiui, tad lėtas ankstesnysis puslapis negali užstrigti už vėlesnių rezultatų

Surikiuotasis srautinimas laiko ne daugiau kaip po vieną display list ir aktyvų atvaizdavimą darbuotojui bei apribotą užbaigtų bitmap eilę, vietoj to, kad visa užduoties išvestis liktų rezidentinė

Keičiamosios atvaizdavimo posistemės tuos pačius sukompiliuotus sąrašus vartoja per nevaldantį dokumento išteklių rodinį, tad sinchroninis ir lygiagretusis keliai vengia pakartotinės puslapio turinio analizės, o posistemės gebėjimai lemia, ar kvietimai gali persidengti, ar reikia nuoseklaus išsiuntimo

Viso proceso didžiausios atminties planuotojas dabar riboja abi lygiagretąsias API: didžiausias puslapio įvertinimas sumažina pradinį darbuotojų skaičių, kiekvienas pasisavintas puslapis rezervuoja visą savo numatytąjį darbo rinkinį, o surikiuotoji išvestis išlaiko tą rezervavimą iki atgalinių kvietimų išdavimo

Planuotojo atšaukimas pažadina biudžeto laukiančiuosius atšaukus atgalinį kvietimą arba nesėkus darbuotojui, o telemetrija atskleidžia pageidautinus ir faktinius darbuotojus, didžiausiąjį rezervavimo svorį, atidėtuosius puslapius ir bendrąjį laukimo laiką

RenderLoadedPageTilesParallel ir RenderLoadedPageBandsParallel paskolintąsias eiliškumu pagrįstas plyteles arba iš viršaus į apačią einančias juostas išdala atskirtiems darbuotojams, kiekvienam valdant ne daugiau kaip po vieną plytelę, o kvietėjo nustatytoji darbo atminties riba sumažina lygiagretumą dar prieš pirmąjį pasisavinimą

Lygiagretieji atvaizdavimo kontekstai nekeičiamąsias Type 3 glifų žetonų sekas ir rastro slenksčių rasteres kopijuoja iš vieno apriboto LRU podėlio, išlaikydami atvaizduoklės lokalų keičiamosios grafikos būsenos ir GDI išteklių valdymą

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded ir SaveLoadedPagesToTiffStreamBanded tą pačią juostinę atvaizduoklę vartoja per srautinius PNG arba TIFF koduotojus, tad labai dideli puslapia suspaustą išvestį išveda eilute po eilutės, nelikdami laikyti pilno kadro buferio, o THPDFBandImageExportInfo praneša atvaizduotąsias juostas, užkoduotąsias eilutes, darbuotojus, didžiausiuosius rezervavimo baitus, išvesties baitus, praėjusį laiką ir atšaukimą

Bendrasis vaizdų iškodavimas koordinuojamas atskirai, tad vektorinis puslapių darbas lieka lygiagretus, nepažeisdamas iškoduotų vaizdų podėlio įrašų

PrefetchLoadedPages šildo rastrinius įrašus su atskiruoju atšaukimo žetonu, kompiliuodamas ir atvaizduodamas už podėlio rakto ribų, o priekio plano puslapių atvaizdavimas pakeičia darbuotoją dar prieš pradedant delsai jautrų darbą

THPDFLoadedPagePrefetchInfo praneša suplanuotą, pradėtą, užbaigtą, podėliuotą, atvaizduotą, nesėkmingą, atšauktą ir priekio plano pakeistą darbą, be to, paskutinę ir didžiausiąją atšaukimo delsą

Permatomumo ir spausdinimo valdikliai

Permatomumo suplotinimas pirmiausiai patikrina display-list permatomumo skaičių ir kvietėjo nustatytąją taškų lubą, paskui puslapio piešinį pakeičia bedakiu Flate suspaustu sukalibruotu RGB vaizdu

Puslapiai su Separation arba DeviceN dažikliais lieka vektoriniu turiniu, o aptikti dažikliai ir išlaikymo būsena atskleidžiami kvietėjui

Atvaizduoklė vykdo perdavimo funkcijas ir Type 1, 5, 6, 10 arba 16 rastro (halftone) žodynus iš ExtGState, išlaikydama nepriklausomąsias RGB rasteres ir jų perdavimo perrašymus per q ir Q

THPDFInkCoverageInfo praneša vidutinę CMYK dangą, didžiausiąją visuminę plotų dangą ir taškų, viršijančių pasirinktąją ribą, skaičių

Procesinių ir papildomųjų (spot) plokštelių išvestis palaiko DeviceCMYK, Separation ir DeviceN dažiklius

Įkeltų puslapių spalvų perrašymas ta pačia pilna atvaizduokle sudėtingus puslapius konvertuoja į Gray, RGB arba CMYK, paprastąjį įrengininės spalvos puslapio turinį laikydamas vektoriais ir taikydamas aiškią papildomųjų (spot) plokštelių politiką

THPDFTrappingInfo sujungia dokumento trapping deklaracijas, puslapio metaduomenis ir TrapNet struktūrinę diagnostiką

ICC darbo eiga

Atvaizdavimo transformacija gali sujungti PDF šaltinio profilį, maišymo spalvų erdvę, spaudinio (proof) profilį, išvesties profilį ir sRGB rastrinę paskirtį

Visos keturios ICC atvaizdavimo intencijos ir tikroji juodojo taško kompensacija nuosekliai taikomos vektorinėms spalvoms ir vaizdų ėminiams per visą konvejerį

Visos transformacijos dalijamos tarp vektorinio, vaizdų, puslapių ir lygiagretaus atvaizdavimo kelių per gijoms saugų 64 MiB LRU podėlį, kurio raktas — šaltinio, spaudinio ir išvesties profilių turinys, faktinė atvaizdavimo intencija ir juodojo taško kompensacija

Permatomumo suplotinimas naudoja tą patį transformacijų konvejerį, paskui išveda be siūlių D65 CalRGB plyteles, kvietėjo valdomomis visuminių rastrų ir atskiroms plytelėms skirtomis taškų lubomis

Pagrindinės API