NewRGBTensorPatchMesh

음영, 그래픽

설명

텐서 곱 패치 메시 셰이딩, 즉 PDF 셰이딩 유형 7을 만들어 DeviceRGB 색상의 ShaderName으로 등록함. 각 패치는 열여섯 개의 제어점, 즉 패치의 네 모서리, 여덟 개의 변 제어점, 네 개의 내부 제어점을 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에 전달함
PatchesTPLMeshPatchCorners 레코드 배열. 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');