NewRGBCoonsPatchMesh

음영, 그래픽

설명

Coons 패치 메시 셰이딩, 즉 PDF 셰이딩 유형 6을 만들어 DeviceRGB 색상의 ShaderName으로 등록함. 각 패치는 열두 개의 제어점, 즉 패치의 네 모서리와 변마다 두 개의 제어점을 P1..P12 순서로 담고 있고(모서리는 P1, P4, P7, P10) 모서리마다 색상이 하나씩 붙음. 패치는 변을 공유하지 않고 독립적으로 출력됨

구문

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 사이 값으로 담음
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');