NewRGBCoonsPatchMesh

シェーディング, グラフィック

説明

Coonsパッチメッシュシェーディング(PDFシェーディングタイプ6)を作成し、ShaderNameの名前でDeviceRGB色として登録します。各パッチは12個の制御点、すなわち4つのパッチコーナーと辺ごとに2つの制御点を、P1..P12の順序で持ち(コーナーはP1、P4、P7、P10)、コーナーごとに1つの色が付きます。パッチは辺を共有せず、独立に出力されます

構文

Delphi

Function TPDFlib.NewRGBCoonsPatchMesh(Const ShaderName: WideString;
  Const Patches: Array Of TPLMeshPatchCorners;
  BitsPerCoordinate, BitsPerComponent: Integer;
  Const BoundsX0, BoundsY0, BoundsX1, BoundsY1: Double): Integer;

パラメータ

ShaderNameシェーダーを登録する名前。SetFillShader または SetLineShader に渡してメッシュを描画します
PatchesTPLMeshPatchCornersレコードの配列。PX/PYはP1..P12のスロット0..11に制御点座標を保持し、CR/CG/CBは0から1の範囲の4つのコーナー色を保持します
BitsPerCoordinate制御点座標の量子化ビット数。1から32の間で指定します
BitsPerComponent色成分ごとの量子化ビット数。1から16の間で指定します
BoundsX0, BoundsY0, BoundsX1, BoundsY1パックされた制御点座標をシェーディング座標空間へ写像するデコード矩形

戻り値

0メッシュは作成されませんでした。ドキュメントが選択されていない、パッチ配列が空、またはビットパラメータが範囲外です
1メッシュはShaderNameの名前で登録されました

備考

座標はライブラリの左上原点系に従い、内部で変換されます(ISO 32000-1 §8.7.4.5.7)。内部制御点を持つパッチについては NewRGBTensorPatchMesh を参照してください

例

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
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.NewRGBCoonsPatchMesh('patch', Patches, 16, 8,
  100, 100, 300, 250);
PDF.SetFillShader('patch');