|
THotPDF.RegisterFreeFormGouraudShading
|
Κορυφή |
|
Δηλώνει PDF 1.3+ free-form Gouraud-shaded triangle mesh shading (ISO 32000-1 8.7.4.5.4, /ShadingType 4) και το τυλίγει σε inline Pattern Type 2 entry στο page Resources/Pattern dictionary. Χρησιμοποιήστε το returned pattern name με THPDFPage.SetFillPattern ή THPDFPage.SetStrokePattern για να ζωγραφίσετε vector gradient του οποίου το χρώμα μεταβάλλεται ομαλά σε κάθε τρίγωνο
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 εκπέμπεται ως single indirect stream με /ShadingType 4, /BitsPerCoordinate 16, /BitsPerComponent 8 και /BitsPerFlag 8. Κάθε vertex πακετάρεται σε stream order ως 8 + NumComponents − 3 bytes - 1-byte flag (πάντα 0 για independent triangles), 2 big-endian bytes για το X coordinate, 2 big-endian bytes για το Y coordinate και NumComponents 8-bit color components. Το /Decode array αντιστοιχίζει τα 16-bit coordinates πίσω στο παρεχόμενο [XMin, XMax] x [YMin, YMax] user-space rectangle και κάθε color component πίσω στο [0, 1] Τα Vertices καταναλώνονται τρία-τρία ως independent triangles. Ο αριθμός Extended values που περνάτε στο Vertices πρέπει να είναι ακριβώς (2 + NumComponents) * 3 * TriangleCount· ο helper προκαλεί exception όταν το array length δεν είναι multiple του stride ή όταν το vertex count δεν είναι multiple του three
XMin, YMin, XMax, YMax - το user-space rectangle που περικλείει το mesh. Αυτές οι τέσσερις values γίνονται οι πρώτες τέσσερις entries του /Decode, ώστε τα 16-bit-encoded vertex coordinates να αντιστοιχίζονται ξανά στο PDF user space. Τοποθετήστε τα στα ίδια user-space coordinates όπου θα ζωγραφίσετε - για Rectangle του HotPDF με screen-coordinate στο (X, Y, W, H), το αντίστοιχο PDF user-space rectangle είναι (X, PageHeight - Y - H) έως (X + W, PageHeight - Y) NumComponents - αριθμός color components ανά vertex. Περάστε 1 για DeviceGray, 3 για DeviceRGB ή 4 για DeviceCMYK. Οποιαδήποτε άλλη τιμή προκαλεί exception. Το /ColorSpace entry του resulting shading ορίζεται ανάλογα Vertices - flat array από Extended values σε σειρά (X, Y, c1...cN), επαναλαμβανόμενη για κάθε vertex. Τα coordinates γίνονται clamped στο [XMin, XMax] x [YMin, YMax] box και quantised σε 16-bit integers· τα color components γίνονται clamped στο [0, 1] και quantised σε 8-bit integers. Adjacent triangles που χρειάζεται να μοιράζονται edge πρέπει να επαναλαμβάνουν τα shared vertices verbatim, επειδή το registered shading χρησιμοποιεί flag 0 για κάθε vertex (independent triangles)
Return value: auto-generated pattern name (Sh1, Sh2, ...) καταχωρημένο στο Resources/Pattern dictionary της τρέχουσας σελίδας. Επιστρέφει κενό string όταν το StrictVersionLock είναι on και το active Version είναι κάτω από PDF 1.3 (διαφορετικά το document version γίνεται auto-bump σε 1.3)
Code Example
See Also RegisterDeviceN, RegisterSeparation, RegisterLabColorSpace, Version, PDF Filter Support
|