CreatePdfLittleCmsColourTransform implementuje IPdfColourTransform pro původní buffery komponent Gray, RGB, CMYK a ICCBased a helper převodu barev dokumentu
Zadejte explicitní absolutní cestu ke knihovně stejné architektury jako proces; nativní knihovna musí exportovat API LittleCMS 2 s cdecl. Přiložený build helper vytváří toto ABI ze zdrojů LittleCMS 2.19 s licencí MIT
DLL sestavená s konfigurací Microsoft stdcall není kompatibilní s providerem Win32; z nedekorovaných exportovaných názvů nelze spolehlivě určit konvenci volání
TryCreatePdfLittleCmsColourTransform vrací diagnostiku závislostí a při chybě ponechá transformaci nil, aniž mění vyhledávací cestu procesu
Každé volání vlastní svůj nativní kontext, profily i transformaci; provider lze sdílet, ale volající nesmí po dobu volání měnit buffery vzorků
Buffery obsahují těsně zabalené celé pixely s 1, 3 nebo 4 komponentami a 8bitovými bajty nebo 16bitovými unsigned slovy v nativním pořadí bajtů; obrazové vzorky PDF v big-endian pořadí převede helper dokumentu před voláním provideru
DeviceRGB bez profilu používá sRGB a DeviceGray bez profilu profil D50 s gamma 2.2; DeviceCMYK a ICCBased vyžadují explicitní zdrojový ICC profil a barevný prostor dat každého profilu musí odpovídat deklarovanému počtu komponent
Cílem je DeviceGray, DeviceRGB nebo DeviceCMYK s odpovídajícím ICC profilem; vynechání cílového profilu je podporováno pouze pro výchozí Gray a RGB tohoto provideru
Default volí relativní kolorimetrický intent, kompenzaci černého bodu, 256 MiB vzorků a 16 MiB ICC profilu; limit profilu má horní hranici 16 MiB
Zrušení se kontroluje před nativním nastavením, po něm a mezi bloky nejvýše 65,536 pixelů; nativní otevření profilu ani jednotlivý blok transformace nemají cancellation Callback
Neúspěšná transformace vyprázdní cílový buffer a vyvolá EPdfColourBackendError; při zrušení zůstane zachována EPdfOperationCancelled
Skutečné transformace LittleCMS 2.19 a testovací PDF pro uložení, opětovné otevření a vykreslení jsou ověřené v Delphi i FPC na Win32 a Win64
type
EPdfColourBackendError = class(EPdfProduction);
TPdfLittleCmsOptions = record
RenderingIntent: Cardinal;
BlackPointCompensation: Boolean;
MaxSampleBytes: Integer;
MaxProfileBytes: Integer;
CancellationToken: IPdfCancellationToken;
class function Default: TPdfLittleCmsOptions; static;
end;
function CreatePdfLittleCmsColourTransform(const LibraryPath: string;
const Options: TPdfLittleCmsOptions): IPdfColourTransform;
function TryCreatePdfLittleCmsColourTransform(const LibraryPath: string;
const Options: TPdfLittleCmsOptions; out Transform: IPdfColourTransform;
out ErrorText: string): Boolean;
function CreatePdfLittleCmsGrayProfile(const LibraryPath: string;
Gamma: Double = 2.2): TBytes;
function CreatePdfLittleCmsSrgbProfile(const LibraryPath: string): TBytes;
CreatePdfLittleCmsGrayProfile přijímá konečnou gamma od 0.1 do 10; oba helpery profilů serializují skutečné nativní ICC profily pro vložení nebo další použití
pwsh Native/ColourLittleCms/Build-LittleCms.ps1 -SourceDirectory C:/deps/lcms2.19 -OutputDirectory C:/deps/lcms-bin -Platform Win64
Helper vyžaduje kompatibilní instalaci MinGW GCC a existující checkout zdrojů LittleCMS 2.19, kopíruje příslušné nativní licenční poznámky do výstupního adresáře a nestahuje ani neinstaluje závislosti