THotPDF.RegisterLabColorSpace Method

 

THotPDF.RegisterLabColorSpace

THotPDF

 

Вверх

Регистрирует цветовое пространство CIELab из PDF 1.3 (ISO 32000-1 8.6.5.3) под автогенерируемым именем ресурса (Lab1, Lab2, ...). Используйте возвращённое имя с THPDFPage.SetFillColorSpace / SetStrokeColorSpace, а затем SetFillColor / SetStrokeColor с тремя компонентами L*a*b*

 

Синтаксис Delphi:

function RegisterLabColorSpace(WhitePointX, WhitePointY, WhitePointZ: Single; RangeAMin, RangeAMax, RangeBMin, RangeBMax: Single): AnsiString;

 

Синтаксис C++:

AnsiString RegisterLabColorSpace(float WhitePointX, float WhitePointY, float WhitePointZ, float RangeAMin, float RangeAMax, float RangeBMin, float RangeBMax);

 

Описание

Цветовое пространство CIELab описывает цвета независимо от устройства отображения или печати: L* выражает светлоту в [0..100], a* — зелёно/красную ось, b* — сине/жёлтую ось (обычно [-128..127]). Соответствующие стандарту PDF viewer'ы конвертируют L*a*b* в цвет устройства через настроенный WhitePoint иллюминант. Распространённые иллюминанты:

 

D50 — стандарт ICC для печати. WhitePoint = [0.9505, 1.0, 1.089].

D65 — стандарт sRGB / дисплеев. WhitePoint = [0.95047, 1.0, 1.08883].

 

WhitePoint Y обязан равняться 1.0 по таблице 64 спецификации; X и Z должны быть положительными. Передача всех четырёх параметров Range нулями откатывается к неявному дефолту спецификации [-100 100 -100 100]; передайте любую ненулевую комбинацию, чтобы переопределить

 

Возвращаемое значение: автогенерируемое имя ресурса (Lab1, Lab2, ...). Возвращает пустую строку, когда StrictVersionLock включён, а активная Версия ниже PDF 1.3 (иначе версия автоматически поднимается до 1.3)

 

Пример кода

// Register a D50 Lab space for print, paint a magenta swatch
var
  CSName: AnsiString;
begin
  HPDF.Version := pdf14;
  HPDF.BeginDoc;
  CSName := HPDF.RegisterLabColorSpace(
    0.9505, 1.0, 1.089,        // D50 WhitePoint
    -128, 127, -128, 127);     // standard a* and b* range
  HPDF.CurrentPage.SetFillColorSpace(CSName);
  HPDF.CurrentPage.SetFillColor([50.0, 60.0, -50.0]);  // L* a* b*
  HPDF.CurrentPage.Rectangle(60, 60, 200, 100);
  HPDF.CurrentPage.Fill;
  HPDF.EndDoc;
end;

 

См. также

Версия, Сжатие, Поддержка фильтров PDF