다음을 통해 공유


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가 가리키는 버퍼에 포함된 하프톤 패턴의 호출자 제공 크기입니다. pResourceNULL인 경우 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 리소스가 필요하지 않으므로 pResourceNULL입니다. 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 포함)

추가 정보

IPrintOemUni 인터페이스

IPrintOemUni::ImageProcessing