다음을 통해 공유


IPrintOemUni::ImageProcessing 메서드(prcomoem.h)

이 메서드는 IPrintOemUni::ImageProcessing Unidrv 지원 프린터와 함께 사용하여 이미지 비트맵 데이터를 수정하여 색 서식 또는 하프톤을 수행할 수 있습니다. 메서드는 수정된 비트맵을 Unidrv로 반환하거나 인쇄 스풀러에 직접 보낼 수 있습니다.

구문

HRESULT ImageProcessing(
        PDEVOBJ           pdevobj,
        PBYTE             pSrcBitmap,
        PBITMAPINFOHEADER pBitmapInfoHeader,
        PBYTE             pColorTable,
        DWORD             dwCallbackID,
        PIPPARAMS         pIPParams,
  [out] OUT PBYTE         *ppbResult
);

매개 변수

pdevobj

DEVOBJ 구조체에 대한 호출자 제공 포인터입니다.

pSrcBitmap

입력 DIB에 대한 호출자 제공 포인터입니다.

pBitmapInfoHeader

pSrcBitmap이 가리키는 비트맵을 설명하는 BITMAPINFOHEADER 구조체에 대한 호출자 제공 포인터입니다. BITMAPINFOHEADER 구조체는 Microsoft Windows SDK 설명서에 설명되어 있습니다.

pColorTable

색 테이블에 대한 호출자 제공 포인터입니다. 이 매개 변수는 출력 형식이 픽셀당 8비트인 경우에만 사용됩니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

비트맵을 해석할 때 색 테이블을 검사해야 합니다. Unidrv는 비트맵에서 색을 수정할 수 있지만 색 테이블에서 해당 조정을 통해 순 변경이 발생하지 않습니다. 그러나 색 테이블 변경 내용을 무시하고 비트맵만 검사하면 이미지가 제대로 인쇄되지 않을 수 있습니다. 예제는 HT_Get8BPPMaskPalettepPaletteEntry 매개 변수에 대한 설명을 참조하세요.

dwCallbackID

ColorMode 기능에 대해 현재 선택된 옵션의 *IPCallbackID 특성에 할당된 호출자 제공 값입니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

pIPParams

IPPARAMS 구조체에 대한 호출자 제공 포인터입니다.

[out] ppbResult

버퍼의 주소를 포함하는 메모리 위치에 대한 포인터입니다. 버퍼의 내용은 변환된 DIB를 보내야 하는 위치에 따라 달라집니다.

이 메서드는 변환된 DIB를 Unidrv로 다시 보내고 변환에 성공하면 *ppbResult 를 변환된 DIB가 포함된 버퍼의 주소로 설정해야 하며 S_OK 반환해야 합니다. 변환에 실패하면 메서드는 *ppbResultNULL로 설정하고 E_FAIL 반환해야 합니다.

이 메서드가 변환된 DIB를 스풀러에 보내려고 하고 변환에 성공하면 메서드는 *ppbResultTRUE로 설정하고 S_OK 반환해야 합니다. 변환이 실패하면 메서드는 *ppbResultFALSE 로 설정하고 E_FAIL 반환해야 합니다. 자세한 내용은 설명 섹션에서 *DevBPP 및 *DevNumOfPlanes 특성에 대한 설명을 참조하세요.

반환 값

메서드는 다음 값 중 하나를 반환해야 합니다.

반환 코드 Description
S_OK
작업에 성공했습니다.
E_FAIL
작업이 실패했습니다.
E_NOTIMPL
메서드가 구현되지 않았습니다.
 

원본 비트맵 특성

대상 비트맵 특성

설명

메서드는 IPrintOemUni::ImageProcessing 인쇄 스풀러로 전송되기 전에 이미지 비트맵을 수정하는 데 사용됩니다. 그 목적은 Unidrv에서 지원하지 않는 색 모드 및 하프톤 메서드에 대한 사용자 지정 지원을 제공하는 것입니다. 비트맵을 인쇄 스풀러로 보내는 프린터 드라이버(Unidrv로 다시 보내는 것과 반대)는 프린터 의 GPD 파일에서 *DevBPP 및 *DevNumOfPlanes 특성을 0으로 설정해야 합니다.

메서드가 구현되고 현재 색 형식의 GPD 파일 항목에 *IPCallbackID 특성이 포함된 경우 Unidrv는 비트맵을 사용할 수 있게 될 때마다 메서드를 호출합니다. 호출은 GDI가 비트맵을 렌더링한 다음 스풀러로 전송된 후에 이루어집니다. *IPCallbackID 특성에 대한 자세한 내용은 ColorMode 기능에 대한 옵션 특성을 참조하세요.

dwCallbackID에 지정된 현재 색 모드가 Unidrv에서 지원하는 IPrintOemUni::ImageProcessing 색 모드인 경우 메서드는 수신된 비트맵에서 하프톤 작업을 수행하고 스풀링을 위해 Unidrv로 반환해야 합니다. 현재 색 모드가 Unidrv에서 지원하지 않는 모드인 경우 메서드는 하프톤 작업을 수행한 다음 비트맵을 스풀링해야 합니다.

메서드가 하프톤 작업만 수행하는 경우 다음을 수행해야 합니다.

  • IPPARAMS 구조체의 pHalftoneOption 멤버에 표시된 대로 데이터에 대해 하프톤 작업을 수행합니다.
  • 수정된 이미지 데이터를 버퍼에 배치하고 버퍼의 주소를 메서드의 반환 값으로 제공하여 Unidrv로 반환합니다. 반환된 버퍼는 pSrcBitmap에서 가리키는 버퍼이거나 로컬로 할당된 버퍼일 수 있습니다.
Unidrv에서 하프톤 작업을 사용자 지정하는 방법에 대한 자세한 내용은 사용자 지정된 하프톤을 참조하세요.

사용자 지정된 색 서식을 처리하려면 메서드가 IPrintOemUni::ImageProcessing 다음을 수행해야 합니다.

Unidrv에서 색 서식 작업을 사용자 지정하는 방법에 대한 자세한 내용은 사용자 지정된 색 형식을 참조하세요.

dwCallbackID 매개 변수는 수행해야 하는 색 서식의 형식(있는 경우)을 나타냅니다. 프린터의 GPD 파일 내에서 ColorMode 기능에 대한 각 *옵션 항목은 색 형식을 설명합니다. 형식에서 메서드를 처리 IPrintOemUni::ImageProcessing 해야 하는 경우 해당 *옵션 항목에 *IPCallbackID 특성이 포함되어야 합니다. Unidrv는 메서드를 IPrintOemUni::ImageProcessing 호출할 때 ColorMode 기능에 대해 현재 선택된 옵션과 연결된 특성 값을 제공합니다. 이 값은 dwCallbackID 매개 변수의 값입니다.

IPrintOemUni::ImageProcessing 메서드가 색 서식 지정 작업을 수행하고 이미지 데이터를 스풀링하거나 하프톤 작업을 수행하고 처리된 비트맵을 Unidrv로 반환하는 경우 대상 비트맵 또는 기타 용도에 상당한 양의 메모리를 할당하는 경우 IPrintOemUni::MemoryUsage 메서드를 내보내야 합니다. 그렇지 않으면 시스템 성능이 저하될 수 있습니다.

메서드가 구현되면 페이지의 모든 래스터 지역에 대해 호출됩니다. 그러나 지역이 비어 있으면 IPPARAMS 구조체의 bBlankBand 멤버가 TRUE로 설정됩니다. 이는 블록이 비어 있고 데이터가 유효하지 않음을 나타냅니다. 밴드는 성능을 최적화하기 위해 빈 영역과 비블랭크 영역의 번갈아 있는 블록으로 나눌 수 있으므로 블록 크기가 항상 밴드 크기에 해당하지는 않습니다.

pSrcBitmappBitmapInfoHeader에서 설명하는 원본 비트맵에는 다음과 같은 특성이 있습니다.

  • DIB 콘텐츠는 하향식으로 정렬되고 압축되지 않습니다.
  • 데이터 형식은 색 형식 처리에 나열된 형식입니다.
  • 서식에 색 테이블이 필요한 경우 pColorTable이 테이블을 가리켰습니다.
  • 색 데이터는 GDIINFO 구조체의 ulPrimaryOrder 멤버 설명에 설명된 대로 PRIMARY_ORDER_CBA 형식입니다. 즉, 색 형식이 RGB 또는 CMY인 경우 가장 중요하지 않은 n 비트 값은 파란색 또는 노란색 값을 포함해야 하고, 다음 n 비트에서는 녹색 또는 자홍색 값을 포함해야 하며, 다음 n 비트에서는 빨간색 또는 시안 값을 포함해야 합니다. 사용하지 않는 비트는 가장 중요한 위치에 있습니다. 형식이 픽셀당 4비트 를 사용하는 경우 n 은 1입니다. 픽셀당 24비트인 경우 n 은 다음 그림과 같이 8입니다. CMYK의 경우 네 번째 n 비트 그룹에 검은색이 포함됩니다.

PRIMARY_ORDER_CBA 형식
앞의 그림은 픽셀당 24비트 색상 데이터가 있는 2픽셀에 대한 PRIMARY_ORDER_CBA 형식의 색 데이터를 보여 줍니다. 메모리 부족 주소에서 높은 메모리 주소로 이동하면 8비트 파란색 데이터, 8비트 녹색 데이터, 8비트 빨간색 데이터가 있으며, 그 후에는 패턴이 반복됩니다. 이를 BGR 디바이스 출력 순서라고도 합니다.
처리된 비트맵이 Unidrv로 반환되는 하프톤 작업의 경우 반환된 비트맵에는 다음과 같은 특성이 있어야 합니다.
  • DIB 콘텐츠는 하향식 순서로 정렬되고 압축을 해제해야 합니다.
  • 데이터 형식은 색 형식 처리에 나열된 형식이어야 하며 dwCallbackID로 식별된 색 형식의 *DevBPP 및 *DevNumOfPlanes 특성과 호환되어야 합니다. (이러한 특성에 대한 자세한 내용은 ColorMode 기능에 대한 옵션 특성을 참조하세요.)
  • 서식에 색 테이블이 필요한 경우 테이블을 만들어야 하며 해당 주소는 pColorTable로 반환되어야 합니다.
  • 원본 비트맵에 대해 설명한 대로 색 데이터는 PRIMARY_ORDER_CBA 형식으로 반환되어야 합니다.
  • pBitmapInfoHeader로 지정된 BITMAPINFOHEADER 구조체는 입력 및 출력 비트맵을 모두 설명해야 합니다. 메서드는 IPrintOemUni::ImageProcessing 구조체의 내용을 변경해서는 안 됩니다.
메서드는 IPrintOemUni::ImageProcessing 선택 사항입니다. 렌더링 플러그 인이 이 메서드를 구현하는 경우 플러그 인의 IPrintOemUni::GetImplementedMethod 메서드는 "ImageProcessing"을 입력으로 수신할 때 S_OK 반환해야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 prcomoem.h(Prcomoem.h 포함)

추가 정보

HT_Get8BPPMaskPalette

IPrintOemUni

IPrintOemUni::FilterGraphics