|
THotPDF.RegisterSampledFunction
|
Вверх |
|
Объявляет PDF 1.3+ Function Type 0 (Sampled) indirect stream object (ISO 32000-1 7.10.2). Sampled functions выражают произвольное input-to-output mapping как регулярную N-dimensional grid из M-dimensional output samples; renderer линейно интерполирует между grid points для оценки промежуточных inputs. Используйте там, где ICC profile machinery избыточна, но нужен hand-tuned lookup table
Delphi syntax: function RegisterSampledFunction(const Domain: array of Single; const Range: array of Single; const Size: array of Integer; BitsPerSample: Integer; const Samples: array of byte; Order: Integer = 1): THPDFStreamObject;
C++ syntax: THPDFStreamObject* RegisterSampledFunction(const float* Domain, int DomainCount, const float* Range, int RangeCount, const int* Size, int SizeCount, int BitsPerSample, const unsigned char* Samples, int SamplesCount, int Order = 1);
Описание The function is emitted as an indirect stream with Order - optional, default 1. Accepts 1 (linear interpolation, PDF 1.7 default) or 3 (cubic-spline interpolation) per PDF 1.7 Table 38. Cubic gives smoother transitions at low sample-grid densities (e.g. 17-point ICC tone curves) but some older mobile readers silently fall back to linear when they encounter an Order value they do not implement. Available since HotPDF v2.54.0. For ASCII-input use cases - the typical authoring path - a single 1-input / M-output function with
Domain - 2N Single values, ordered Range — 2M Single values с той же формой для M output dimensions; output samples зажимаются к этому range после decoding Size — N integers, задающие grid-point count вдоль каждой input axis. Length(Size) должен равняться N. Total grid points — произведение всех entries Size BitsPerSample - one of 1, 2, 4, 8, 12, 16, 24, or 32 per PDF 1.7 Table 38. Samples — raw bit-packed sample stream. Длина должна быть не меньше ceil(GridPoints * M * BitsPerSample / 8) bytes. HotPDF дословно копирует переданные bytes в indirect stream object; корректность bit-pack является ответственностью caller
Возвращаемое значение: indirect THPDFStreamObject, который callers могут прикрепить везде, где ожидается Function dictionary, обычно передав его indirect reference в другой dict через AddValue или в shading / separation builder. Объект принадлежит списку IndirectObjects документа и освобождается в конце документа. Возвращает nil при StrictVersionLock и active Version ниже PDF 1.3; иначе версия автоматически повышается до 1.3
Code Example
См. также RegisterAxialGradient, RegisterDeviceN, RegisterSeparation, Version, PDF Filter Support
|