THotPDF.RegisterSeparationLUT Metodo THotPDF.RegisterSeparationLUT Metodo THotPDF.RegisterSeparationLUT Metodo THotPDF.RegisterSeparationLUT Metodo THotPDF.RegisterSeparationLUT Metodo THotPDF.RegisterSeparationLUT Metodo THotPDF.RegisterSeparationLUT Metodo

 

THotPDF.RegisterSeparationLUT

THotPDF

 

Top

Dichiara uno spazio colore Separation PDF 1.3+ (ISO 32000-1 8.6.6.4) la cui trasformazione tint è una lookup table campionata Function Type 0 (ISO 32000-1 7.10.2). Usalo quando la curva di colore dell'inchiostro spot è non lineare - rampe di tint in stile PANTONE Hexachrome, curve di densità con correzione gamma, curve tonali disegnate a mano che corrispondono a una caratterizzazione di stampa, LUT ICC di conversione sRGB→spot senza la macchina completa dei profili ICC. Per la semplice rampa lineare da zero a un singolo endpoint di colore a piena forza, la v2.45.0 RegisterSeparation continua a valere.

 

Sintassi Delphi:

function RegisterSeparationLUT(const ColorantName: AnsiString; const AlternateCS: AnsiString; const Samples: array di byte): AnsiString;

 

Sintassi C++:

AnsiString RegisterSeparationLUT(const AnsiString& ColorantName, const AnsiString& AlternateCS, const unsigned char* Samples, int SamplesCount);

 

Descrizione

HotPDF chiama internamente RegisterSampledFunction to build the Function Type 0 stream with /Domain [0 1], /Range coprendo ogni canale alt-CS in [0, 1], /Size [S] where S = Length(Samples) / M, /BitsPerSample 8 e /Order 1 (linear interpolation). The function is wired into a fresh [/Separation /ColorantName /AltCS <FuncRef>] di spazio colore condivisa tra le pagine, con il layout che RegisterSeparation produce - a valle SetFillColorSpace + SetFillColor i percorsi di codice non vedono alcun cambiamento di superficie API tra le due varianti di registrar.

 

ColorantName - PDF Name of the ink (e.g. 'PANTONE 185 C', 'CutContour', 'White'). Spaces are escaped to #20 secondo PDF 1.7 7.3.5 tramite il percorso esistente di scrittura dei nomi.

AlternateCS - 'DeviceGray' (M = 1), 'DeviceRGB' (M = 3), or 'DeviceCMYK' (M = 4). The sample stream supplies M output bytes per grid point. Any other value raises an exception.

Samples - byte di campioni a 8 bit grezzi ordinati (c0_0, c1_0, ..., cM-1_0, c0_1, ..., cM-1_S-1) for S grid points. Length(Samples) deve essere un multiplo positivo di M; S is inferred as Length(Samples) / M e deve essere almeno 2 così la funzione ha intervallo interpolabile. L'interpolazione lineare tra i punti della griglia è il predefinito (PDF 1.7 /Order 1).

 

Valore restituito: an auto-generated color-space name (Sep1, Sep2, ...). La voce Separation è condivisa con il registry RegisterSeparation della v2.45.0, quindi i nomi avanzano in modo monotono tra le due varianti. Restituisce una stringa vuota quando StrictVersionLock è attivo e la Version is below PDF 1.3 (otherwise the document version auto-bumps to 1.3).

 

Esempio di codice

// 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;

 

Vedi anche:

RegisterSeparation, RegisterSampledFunction, RegisterDeviceN, Version, Supporto dei filtri PDF