|
THotPDF.RegisterFreeFormGouraudShading
|
Вгору |
|
Оголошує PDF 1.3+ сітку трикутників Gouraud shading вільної форми (ISO 32000-1 8.7.4.5.4, /ShadingType 4) і додає її як inline Pattern Type 2 у словник Resources/Pattern сторінки Повернене ім'я pattern використовується з THPDFPage.SetFillPattern або THPDFPage.SetStrokePattern, щоб намалювати векторний градієнт із плавною зміною кольору всередині кожного трикутника
Delphi syntax: function RegisterFreeFormGouraudShading(XMin, YMin, XMax, YMax: Single; NumComponents: Integer; const Vertices: array of Extended): AnsiString;
C++ syntax: AnsiString RegisterFreeFormGouraudShading(float XMin, float YMin, float XMax, float YMax, int NumComponents, const Extended* Vertices, int VertexElementCount);
Опис Shading записується як один непрямий stream з /ShadingType 4, /BitsPerCoordinate 16, /BitsPerComponent 8 і /BitsPerFlag 8 Кожна вершина кодується у stream як flag byte, дві big-endian bytes координати X, дві big-endian bytes координати Y і NumComponents компонентів кольору масив /Decode перетворює 16-bit coordinates назад у прямокутник [XMin, XMax] x [YMin, YMax], а компоненти кольору - у [0, 1] Vertices обробляються групами по три як незалежні трикутники Кількість значень Extended у Vertices має точно дорівнювати (2 + NumComponents) * 3 * TriangleCount; helper raises exception, якщо довжина array не кратна stride або кількість vertices не кратна трьом
XMin, YMin, XMax, YMax - прямокутник user-space, який обмежує mesh Ці чотири values стають першими entries у /Decode, щоб 16-bit encoded vertex coordinates поверталися в PDF user space Розміщуйте їх у тих самих coordinates, у які буде виконано paint; для HotPDF Rectangle at (X, Y, W, H) відповідний PDF user-space rectangle є (X, PageHeight - Y - H) до (X + W, PageHeight - Y) NumComponents - кількість компонентів кольору на vertex Передайте 1 для DeviceGray, 3 для DeviceRGB або 4 для DeviceCMYK Інші values raise exception, а /ColorSpace resulting shading задається відповідно Vertices - flat array значень Extended у порядку (X, Y, c1...cN), repeated для кожної vertex Coordinates clamped до [XMin, XMax] x [YMin, YMax] і quantised до 16-bit integers; color components clamped до [0, 1] і quantised до 8-bit integers Adjacent triangles, які мають share edge, повинні повторити shared vertices verbatim, бо registered shading використовує flag 0 для кожної vertex
Return value: auto-generated pattern name (Sh1, Sh2, ...), registered у Resources/Pattern dictionary current page Повертає empty string, коли StrictVersionLock увімкнено і active Version нижча за PDF 1.3; інакше document version auto-bumps to 1.3
Code Example
See Also RegisterDeviceN, RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support
|