|
Déclare un espace colorimétrique DeviceN PDF 1.3+ reposant sur N encres de tons directs fournies par l'utilisateur (ISO 32000-1 8.6.6.5). Généralise RegisterSeparation d'un seul colorant à plusieurs : impression six couleurs, encres métalliques / fluorescentes, mélanges d'encres PDF/X personnalisés ou tout jeu d'encres à N canaux
Syntaxe Delphi :
function RegisterDeviceN(const ColorantNames: array of AnsiString; const AlternateCS: AnsiString; const TintC1Matrix: array of Extended): AnsiString;
Syntaxe C++ :
AnsiString RegisterDeviceN(const AnsiString* ColorantNames, int ColorantNameCount, const AnsiString& AlternateCS, const Extended* TintC1Matrix, int TintC1MatrixCount);
Description
DeviceN prend N opérandes de teinte dans [0..1], un par colorant, et calcule M composantes de sortie dans AlternateCS à l'aide d'une transformation de teinte linéaire à mélange pondéré que HotPDF construit en interne sous forme de Function Type 4 calculatrice PostScript. La sortie du canal m est la somme sur tous les colorants n de tint[n] * TintC1Matrix[n*M + m], bornée à [0..1] par le pipeline de rendu
ColorantNames - tableau de N noms d'encre. Chaque entrée est écrite comme un nom PDF ; les espaces sont échappés en #20 selon PDF 1.7 7.3.5. Le nom spécial 'None' marque un emplacement de colorant inutilisé. La liste des noms définit les N dimensions d'entrée de l'espace colorimétrique résultant
AlternateCS - 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3) ou 'DeviceCMYK' (M = 4). Toute autre valeur déclenche une exception
TintC1Matrix - tableau Extended en ordre ligne-major de N * M. La ligne n, colonne m, correspond à la contribution du colorant n au canal m de AlternateCS à pleine intensité (tint[n] = 1.0) avec toutes les autres teintes à zéro. La longueur doit être exactement Length(ColorantNames) * M
Valeur de retour : un nom généré automatiquement (DevN1, DevN2, ...). Renvoie une chaîne vide lorsque StrictVersionLock est activé et que la Version courante est inférieure à PDF 1.3 (sinon la version du document est relevée automatiquement à 1.3)
Exemple de code
// 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;
Voir aussi
RegisterSeparation, RegisterLabColorSpace, Version, Prise en charge des filtres PDF
|