|
Erklærer et PDF 1.3+ separationsfarverum (ISO 32000-1 8.6.6.4), hvis nuancetransformation er en Funktion Type 0 samplet opslagstabel (ISO 32000-1 7.10.2); brug dette, når spot-blækfarvekurven er ikke-lineær - nuanceforløb i PANTONE Hexachrome-stil, gammakorrigerede tæthedskurver, håndtegnede tonekurver, der matcher en pressekarakterisering, sRGB-til-spotkonvertering ICC-LUT'er uden det fulde ICC-profilmaskineri; for det simple lineære forløb fra nul til et enkelt fuldstyrke farveendepunkt gælder v2.45.0RegisterSeparationindgangspunktet stadig
Delphi-syntaks:
function RegisterSeparationLUT(constColorantName: AnsiString;constAlternateCS: AnsiString;constSamples:array ofbyte): AnsiString;
C++-syntaks:
AnsiString RegisterSeparationLUT(const AnsiString& ColorantName, const AnsiString& AlternateCS, const unsigned char* Samples, int SamplesCount);
Beskrivelse
HotPDF kalder interntRegisterSampledFunctionfor at opbygge Funktion Type 0-strømmen med/Domain [0 1], /Rangeder dækker hver alt-CS-kanal i[0, 1], /Size [S]hvor S =Length(Samples) / M, /BitsPerSample 8 and /Order 1(lineær interpolation); funktionen er forbundet til et nyt[/Separation /ColorantName /AltCS <FuncRef>]farverums-array delt på tværs af sider, hvilket matcher layoutet som RegisterSeparation producerer – downstreamSetFillColorSpace + SetFillColorkoder ser ingen ændring i API-overfladen mellem de to variantregistreringer
ColorantName - PDF-navn på blækket (f.eks'PANTONE 185 C', 'CutContour', 'White'); mellemrum escaper til#20pr. PDF 1.7 7.3.5 af den eksisterende navneskriversti
AlternateCS - 'DeviceGray'(M = 1),'DeviceRGB'(M = 3) eller'DeviceCMYK'(M = 4); prøvestrømmen leverer M output-bytes pr. gitterpunkt; enhver anden værdi udløser en undtagelse
Samples - rå 8-bit prøvebytes ordnet(c0_0, c1_0, ..., cM-1_0, c0_1, ..., cM-1_S-1)for S gitterpunkterLength(Samples)skal være et positivt multiplum afM; S udledes somLength(Samples) / Mog skal være mindst 2, så funktionen har et interpolerbart område; lineær interpolation mellem gitterpunkter er standarden (PDF 1.7/Order 1).
Returværdi: et autogenereret farverumsnavn (Sep1, Sep2, ...); separationsposten deles med v2.45.0 RegisterSeparation-registreret, så navne stiger monotont på tværs af de to varianter; returnerer en tom streng, nårStrictVersionLocker slået til og den aktiveVersioner under PDF 1.3 (ellers opgraderes dokumentversionen automatisk til 1.3)
Kodeeksempel
// Register a 'HeatLUT' Separation over DeviceRGB whose tint -> RGB
// curve is a 256-sample blue -> green -> red heatmap
var
CSName: AnsiString;
Samples: array[0..767] of byte; // 256 * 3 RGB
I: Integer;
T: Single;
begin
HPDF.BeginDoc;
for I := 0 to 255 do
begin
T := I / 255.0;
if T < 0.5 then
begin
Samples[I*3 + 0] := 0;
Samples[I*3 + 1] := byte(Round(2.0 * T * 255.0));
Samples[I*3 + 2] := byte(Round((1.0 - 2.0*T) * 255.0));
end
else
begin
Samples[I*3 + 0] := byte(Round(2.0 * (T - 0.5) * 255.0));
Samples[I*3 + 1] := byte(Round((1.0 - 2.0*(T - 0.5)) * 255.0));
Samples[I*3 + 2] := 0;
end;
end;
CSName := HPDF.RegisterSeparationLUT('HeatLUT', 'DeviceRGB', Samples);
HPDF.CurrentPage.SetFillColorSpace(CSName);
HPDF.CurrentPage.SetFillColor([0.5]); // midpoint -> pure green
HPDF.CurrentPage.Rectangle(100, 100, 40, 40);
HPDF.CurrentPage.Fill;
HPDF.EndDoc;
end;
Se også
RegisterSeparation, RegisterSampledFunction, RegisterDeviceN, Version, PDF-filterunderstøttelse
|