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에 전달함 |
|---|---|
| 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');