IPrintOemUni::HalftonePattern 메서드(prcomoem.h)
IPrintOemUni::HalftonePattern 메서드를 Unidrv 지원 프린터와 함께 사용하여 하프톤 연산에 사용되기 전에 하프톤 패턴을 만들거나 수정할 수 있습니다.
구문
HRESULT HalftonePattern(
PDEVOBJ pdevobj,
PBYTE pHTPattern,
DWORD dwHTPatternX,
DWORD dwHTPatternY,
DWORD dwHTNumPatterns,
DWORD dwCallbackID,
PBYTE pResource,
DWORD dwResourceSize
);
매개 변수
pdevobj
DEVOBJ 구조체에 대한 호출자 제공 포인터입니다.
pHTPattern
메서드 제공 하프톤 패턴을 수신하는 버퍼에 대한 호출자 제공 포인터입니다. 버퍼 크기(바이트)는 다음과 같습니다.
(((dwHTPatternX * dwHTPatternY) + 3)/4) * 4 * dwHTNumPatterns
dwHTPatternX
GPD 파일의 *HTPatternSize 특성의 첫 번째 값으로 지정된 하프톤 패턴의 호출자 제공 길이(픽셀)입니다.
dwHTPatternY
GPD 파일의 *HTPatternSize 특성에서 두 번째 값으로 지정된 하프톤 패턴의 호출자 제공 높이(픽셀)입니다.
dwHTNumPatterns
GPD 파일의 *HTNumPatterns 특성에 지정된 대로 호출자가 제공한 패턴 수입니다. 패턴 수는 1 또는 3일 수 있습니다.
dwCallbackID
GPD 파일의 *HTCallbackID 특성에 지정된 대로 하프톤 메서드를 식별하는 호출자 제공 값입니다.
pResource
GPD 파일의 *rcHTPatternID 특성에 지정된 대로 하프톤 패턴을 포함하는 버퍼에 대한 호출자 제공 포인터입니다. NULL일 수 있습니다.
dwResourceSize
pResource가 가리키는 버퍼에 포함된 하프톤 패턴의 호출자 제공 크기입니다. pResource가 NULL인 경우 0입니다.
반환 값
메서드는 다음 값 중 하나를 반환해야 합니다.
반환 코드 | 설명 |
---|---|
S_OK | 작업에 성공했습니다. |
E_FAIL | 작업이 실패했습니다. |
E_NOTIMPL | 메서드가 구현되지 않았습니다. |
설명
IPrintOemUni::HalftonePattern 메서드는 Unidrv가 GDI에 전달하기 전에 하프톤 패턴을 만들거나 수정하는 데 사용됩니다. 그 목적은 독점 하프톤 패턴을 암호화된 리소스로 저장하거나 런타임에 생성할 수 있도록 하는 것입니다.
IPrintOemUni::HalftonePattern 메서드가 구현되고 현재 선택된 하프톤 메서드의 GPD 파일 항목에 *HTCallbackID 특성이 포함된 경우 Unidrv는 하프톤 패턴을 GDI에 전달하기 전에 IPrintOemUni::HalftonePattern 메서드를 호출합니다.
현재 선택된 하프톤 메서드의 GPD 파일 항목에 RC_HTPATTERN 리소스를 식별하는 *rcHTPatternID 항목이 포함된 경우 Unidrv는 패턴을 가져오고 포인터를 pResource 매개 변수 값으로 전달합니다. 이렇게 하면 패턴을 암호화된 리소스로 저장하고 IPrintOemUni::HalftonePattern 메서드를 사용하여 패턴을 디코딩할 수 있습니다. 디코딩된 패턴은 pHTPattern이 가리키는 버퍼에 반환되어야 합니다.
IPrintOemUni::HalftonePattern 메서드를 사용하여 하프톤 패턴을 생성할 수도 있습니다. 이 경우 RC_HTPATTERN 리소스가 필요하지 않으므로 pResource 는 NULL입니다. IPrintOemUni::HalftonePattern 메서드는 패턴을 생성하고 pHTPattern이 가리키는 버퍼에 반환해야 합니다.
IPrintOemUni::HalftonePattern 메서드가 하나의 패턴을 반환하는 경우 모든 색에 사용됩니다. 메서드가 세 가지 패턴을 반환하는 경우 RGB 순서로 지정해야 합니다.
다음 예제에서는 렌더링 플러그 인의 HalftonePattern 메서드 구현을 보여줍니다. 메서드는 HTPattern_DDK 패턴 배열의 길이(바이트)를 계산한 다음 패턴 배열의 바이트를 이 메서드의 pHTPattern 매개 변수가 가리키는 버퍼에 복사합니다. 패턴 배열은 패턴이 모든 색에 사용되는지 또는 별도의 빨간색, 녹색 및 파란색 패턴이 있는지에 따라 하나 또는 세 개의 패턴을 포함할 수 있습니다. 간단히 하기 위해 패턴 배열의 일부 요소가 나열되지는 않습니다.
static BYTE HTPattern_DDK[256] = {
129, 44, 59, 124, 143, 232, 166, ...
...
...
98, 202, 130, 148, 213, 101, 163, 72
};
HRESULT __stdcall IOemUni::HalftonePattern(
PDEVOBJ pdevobj,
PBYTE pHTPattern,
DWORD dwHTPatternX,
DWORD dwHTPatternY,
DWORD dwHTNumPatterns,
DWORD dwCallbackID,
PBYTE pResource,
DWORD dwResourceSize)
{
PBYTE pSrcPattern;
DWORD dwLen = sizeof(HTPattern_DDK);
if (dwLen != (((dwHTPatternX * dwHTPatternY) + 3) / 4) * 4 * dwHTNumPatterns)
return E_FAIL;
pSrcPattern = HTPattern_DDK;
while (dwLen-- > 0)
*pHTPattern++ = *pSrcPattern++;
return S_OK;
}
렌더링 플러그 인에서 HalftonePattern 메서드의 구현에는 GPD 파일의 Halftone 기능이 함께 포함되어야 합니다. 다음 GPD 예제에서는 이전 샘플에서 생성된 사용자 지정 패턴을 설명하는 HT_PAT_DDK_16x16 옵션이 있는 Halftone 기능을 보여 줍니다.
*Feature: Halftone
{
*rcNameID: =HALFTONING_DISPLAY
*HelpIndex: 12005
*DefaultOption: HT_PATSIZE_AUTO
*Option: HT_PATSIZE_AUTO
{
*rcNameID: =HT_AUTO_SELECT_DISPLAY
}
*Option: HT_PATSIZE_SUPERCELL_M
{
*rcNameID: =HT_SUPERCELL_DISPLAY
}
*Option: HT_PATSIZE_6x6_M
{
*rcNameID: =HT_DITHER6X6_DISPLAY
}
*Option: HT_PATSIZE_8x8_M
{
*rcNameID: =HT_DITHER8X8_DISPLAY
}
*Option: HT_PAT_DDK_16x16
{
*Name: "DDK 16x16"
*HTPatternSize: PAIR(16, 16)
*HTNumPatterns: 1
*HTCallbackID: 1
}
}
IPrintOemUni::HalftonePattern 메서드는 선택 사항입니다. 렌더링 플러그 인이 이 메서드를 구현하는 경우 플러그 인의 IPrintOemUni::GetImplementedMethod 메서드는 "HalftonePattern"을 입력으로 수신할 때 S_OK 반환해야 합니다.
하프톤에 대한 자세한 내용은 하프톤 기능에 대한 사용자 지정된 하프톤 및 옵션 특성을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | prcomoem.h(Prcomoem.h 포함) |