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');