NewRGBTensorPatchMesh
التظليل، الرسومات
الوصف
ينشئ تظليل شبكة رُقع جداء حدودي، وهو نوع التظليل 7 في PDF، ويسجّله تحت الاسم ShaderName بلون DeviceRGB. تحمل كل رقعة ست عشرة نقطة تحكّم، زوايا الرقعة الأربع وثماني نقاط تحكّم للحواف وأربع نقاط تحكّم داخلية، بترتيب P1..P16 مع لون واحد لكل زاوية. تُصدَر الرقع باستقلال دون مشاركة حواف
الصيغة
Delphi
Function TPDFlib.NewRGBTensorPatchMesh(Const ShaderName: WideString;
Const Patches: Array Of TPLMeshPatchCorners;
BitsPerCoordinate, BitsPerComponent: Integer;
Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;المعاملات
| ShaderName | الاسم الذي يُسجَّل المظلّل تحته؛ مرّره إلى SetFillShader أو SetLineShader للرسم بالشبكة |
|---|---|
| Patches | مصفوفة من سجلات TPLMeshPatchCorners؛ تحمل PX/PY إحداثيات نقاط التحكّم في خانات P1..P16 المواضع 0..15، مع نقاط التحكّم الداخلية P13..P16 في المواضع 12..15، وتحمل CR/CG/CB ألوان الزوايا الأربع في النطاق من 0 إلى 1 |
| BitsPerCoordinate | بتات التكميم لإحداثيات نقاط التحكّم، بين 1 و32 |
| BitsPerComponent | بتات التكميم لكل مكوّن لوني، بين 1 و16 |
| BoundsX0, BoundsY0, BoundsX1, BoundsY1 | مستطيل فك الترميز الذي يخرط إحداثيات نقاط التحكّم المحزوكة إلى فضاء إحداثيات التظليل |
القيم المُعادة
| 0 | لم تُنشأ الشبكة، لعدم تحديد مستند، أو لأن مصفوفة الرقع فارغة، أو لأن أحد معاملي البتات خارج النطاق |
|---|---|
| 1 | سُجِّلت الشبكة تحت الاسم ShaderName |
ملاحظات
تتبع الإحداثيات نظام الأصل أعلى اليسار الخاص بالمكتبة وتُترجم داخليًا (ISO 32000-1 §8.7.4.5.8). تمنح نقاط التحكّم الداخلية تحكمًا أدق في جريان اللون داخل الرقعة مقارنة بمنحنيات الحدود ثنائية التكعيب في NewRGBCoonsPatchMesh
مثال
Patch:= Default(TPLMeshPatchCorners);
Patch.PX[0]:= 100; Patch.PY[0]:= 100; // P1 corner
Patch.PX[3]:= 300; Patch.PY[3]:= 100; // P4 corner
Patch.PX[6]:= 300; Patch.PY[6]:= 250; // P7 corner
Patch.PX[9]:= 100; Patch.PY[9]:= 250; // P10 corner
// Inner control points P13..P16 in slots 12..15
Patch.PX[12]:= 166; Patch.PY[12]:= 150;
Patch.PX[13]:= 233; Patch.PY[13]:= 150;
Patch.PX[14]:= 233; Patch.PY[14]:= 200;
Patch.PX[15]:= 166; Patch.PY[15]:= 200;
Patch.CR[0]:= 1; Patch.CG[0]:= 0; Patch.CB[0]:= 0;
Patch.CR[1]:= 0; Patch.CG[1]:= 0; Patch.CB[1]:= 1;
Patch.CR[2]:= 0; Patch.CG[2]:= 1; Patch.CB[2]:= 0;
Patch.CR[3]:= 1; Patch.CG[3]:= 1; Patch.CB[3]:= 0;
SetLength(Patches, 1);
Patches[0]:= Patch;
PDF.NewRGBTensorPatchMesh('tensor', Patches, 16, 8,
100, 100, 300, 250);
PDF.SetFillShader('tensor');