|
Declareert een PDF 1.3+-DeviceN-kleurruimte die wordt ondersteund door N door de gebruiker geleverde steunkleuren (ISO 32000-1 8.6.6.5). Generaliseert RegisterSeparation van één colorant naar meerdere: zes-kleurenafdruk, metallic / fluorescerende inks, aangepaste PDF/X-inktmixen of elke N-kanaals inktset
Delphi-syntaxis:
function RegisterDeviceN(const ColorantNames: array of AnsiString; const AlternateCS: AnsiString; const TintC1Matrix: array of Extended): AnsiString;
C++-syntaxis:
AnsiString RegisterDeviceN(const AnsiString* ColorantNames, int ColorantNameCount, const AnsiString& AlternateCS, const Extended* TintC1Matrix, int TintC1MatrixCount);
Beschrijving
DeviceN neemt N tintoperanden in [0..1], één per colorant, en berekent M uitvoercomponenten in AlternateCS met een lineaire, gewogen tinttransformatie die HotPDF intern opbouwt als een PostScript-calculator Function Type 4. De uitvoer voor kanaal m is de som over alle colorants n van tint[n] * TintC1Matrix[n*M + m], begrensd op [0..1] door de renderingpipeline
ColorantNames - array met N inktnamen. Elk item wordt als een PDF-naam geschreven; spaties worden volgens PDF 1.7 7.3.5 ge-escaped naar #20. De speciale naam 'None' markeert een ongebruikte colorant-sleuf. De namenlijst definieert de N invoerdimensies van de resulterende kleurruimte
AlternateCS - 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3) of 'DeviceCMYK' (M = 4). Elke andere waarde veroorzaakt een uitzondering
TintC1Matrix - rijgewijze N * M-Extended-array. Rij n, kolom m is de bijdrage van colorant n aan kanaal AlternateCS m bij volle sterkte (tint[n] = 1.0) met alle andere tints op nul. De lengte moet exact Length(ColorantNames) * M zijn
Retourwaarde: een automatisch gegenereerde naam (DevN1, DevN2, ...). Geeft een lege tekenreeks terug wanneer StrictVersionLock aan staat en de actieve Version lager is dan PDF 1.3 (anders wordt de documentversie automatisch opgehoogd naar 1.3)
Codevoorbeeld
// Two-colorant DeviceN over DeviceRGB. Colorant 0 ('Red') is pure
// red at full strength, colorant 1 ('Blue') is pure blue. Mixing
// (0.5, 0.5) yields a 50/50 blend; (1, 1) saturates to magenta
var
CSName: AnsiString;
Mat: array[0..5] of Extended;
begin
HPDF.Version := pdf14;
HPDF.BeginDoc;
Mat[0] := 1.0; Mat[1] := 0.0; Mat[2] := 0.0; // Red row -> (1, 0, 0)
Mat[3] := 0.0; Mat[4] := 0.0; Mat[5] := 1.0; // Blue row -> (0, 0, 1)
CSName := HPDF.RegisterDeviceN(
['Red', 'Blue'], 'DeviceRGB', Mat);
HPDF.CurrentPage.SetFillColorSpace(CSName);
HPDF.CurrentPage.SetFillColor([0.5, 0.5]); // mid-purple
HPDF.CurrentPage.Rectangle(60, 60, 200, 100);
HPDF.CurrentPage.Fill;
HPDF.EndDoc;
end;
Zie ook
RegisterSeparation, RegisterLabColorSpace, Version, PDF-filterondersteuning
|