IPrintOemUni::ImageProcessing 메서드(prcomoem.h)
이 메서드는 IPrintOemUni::ImageProcessing 유니드르브 지원 프린터와 함께 사용하여 이미지 비트맵 데이터를 수정하여 색 서식 또는 하프톤을 수행할 수 있습니다. 메서드는 수정된 비트맵을 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_Get8BPPMaskPalette pPaletteEntry 매개 변수에 대한 설명을 참조하세요.
dwCallbackID
ColorMode 기능에 대해 현재 선택된 옵션의 *IPCallbackID 특성에 할당된 호출자 제공 값입니다. 자세한 내용은 아래 설명 부분을 참조하십시오.
pIPParams
IPPARAMS 구조체에 대한 호출자 제공 포인터입니다.
[out] ppbResult
버퍼의 주소를 포함하는 메모리 위치에 대한 포인터입니다. 버퍼의 내용은 변환된 DIB를 전송해야 하는 위치에 따라 달라집니다.
이 메서드는 변환된 DIB를 Unidrv로 다시 보내고 변환에 성공하면 *ppbResult 를 변환된 DIB가 포함된 버퍼의 주소로 설정해야 하며 S_OK 반환해야 합니다. 변환이 실패하면 메서드는 *ppbResult 를 NULL로 설정하고 E_FAIL 반환해야 합니다.
이 메서드가 변환된 DIB를 스풀러로 보내고 변환에 성공한 경우 메서드는 *ppbResult 를 TRUE로 설정하고 S_OK 반환해야 합니다. 변환에 실패하면 메서드는 *ppbResult 를 FALSE 로 설정하고 E_FAIL 반환해야 합니다. 자세한 내용은 설명 섹션의 *DevBPP 및 *DevNumOfPlanes 특성에 대한 설명을 참조하세요.
반환 값
메서드는 다음 값 중 하나를 반환해야 합니다.
| 반환 코드 | 설명 |
|---|---|
|
작업에 성공했습니다. |
|
작업이 실패했습니다. |
|
메서드가 구현되지 않았습니다. |
원본 비트맵 특성
대상 비트맵 특성
설명
이 IPrintOemUni::ImageProcessing 메서드는 인쇄 스풀러로 전송되기 전에 이미지 비트맵을 수정하는 데 사용됩니다. 그 목적은 유니드르브에서 지원하지 않는 색 모드 및 하프톤 메서드에 대한 사용자 지정 지원을 제공하는 것입니다. 비트맵을 인쇄 스풀러에 보내는 프린터 드라이버(Unidrv로 다시 보내는 것과 반대)는 프린터 의 GPD 파일에서 *DevBPP 및 *DevNumOfPlanes 특성을 0으로 설정해야 합니다.
메서드가 구현되고 현재 색 형식의 GPD 파일 항목에 IPCallbackID 특성이 포함된 경우 Unidrv는 비트맵을 사용할 수 있게 될 때마다 메서드를 호출합니다. 이 호출은 GDI가 비트맵을 렌더링한 다음 스풀러로 전송된 후에 이루어집니다. (IPCallbackID 특성에 대한 자세한 내용은 ColorMode 기능에 대한 옵션 특성을 참조하세요.)
dwCallbackID에 지정된 현재 색 모드가 Unidrv에서 지원하는 IPrintOemUni::ImageProcessing 색 모드인 경우 메서드는 수신된 비트맵에서 하프톤 작업을 수행하고 스풀링을 위해 Unidrv로 반환해야 합니다. 현재 색 모드가 Unidrv에서 지원하지 않는 색 모드인 경우 메서드는 하프톤 작업을 수행한 다음 비트맵을 스풀링해야 합니다.
메서드가 하프톤 작업만 수행하는 경우 다음을 수행해야 합니다.
- IPPARAMS 구조체의 pHalftoneOption 멤버에 표시된 대로 데이터에 대해 하프톤 작업을 수행합니다.
- 수정된 이미지 데이터를 버퍼에 배치하고 버퍼의 주소를 메서드의 반환 값으로 제공하여 Unidrv로 반환합니다. 반환된 버퍼는 pSrcBitmap에서 가리키는 버퍼이거나 로컬로 할당된 버퍼일 수 있습니다.
사용자 지정된 색 서식을 처리하려면 메서드에서 IPrintOemUni::ImageProcessing 다음을 수행해야 합니다.
- pSrcBitmap 및 pBitmapInfoHeader 매개 변수 값으로 설명된 DIB 데이터를 dwCallbackID로 표시된 색 형식으로 변환합니다.
- IPPARAMS 구조체의 pHalftoneOption 멤버에 표시된 대로 데이터에 대해 하프톤 작업을 수행합니다.
- IPrintOemDriverUni::D rvWriteSpoolBuf 메서드를 호출하여 인쇄 스풀러에 데이터를 보냅니다.
- IPrintOemDriverUni::D rvXMoveTo 및 IPrintOemDriverUni::D rvYMoveTo 메서드를 적절하게 호출하여 프린터의 커서 위치를 수정합니다.
dwCallbackID 매개 변수는 수행해야 하는 색 서식(있는 경우)의 형식을 나타냅니다. 프린터의 GPD 파일 내에서 ColorMode 기능에 대한 각 *옵션 항목은 색 형식을 설명합니다. 형식에서 메서드를 IPrintOemUni::ImageProcessing 처리해야 하는 경우 해당 *옵션 항목에 *IPCallbackID 특성이 포함되어야 합니다. Unidrv는 메서드를 IPrintOemUni::ImageProcessing 호출할 때 ColorMode 기능에 대해 현재 선택된 옵션과 연결된 특성 값을 제공합니다. 이 값은 dwCallbackID 매개 변수의 값입니다.
IPrintOemUni::ImageProcessing 메서드가 색 서식 지정 작업을 수행하고 이미지 데이터를 스풀링하거나, 하프톤 작업을 수행하고 처리된 비트맵을 Unidrv로 반환하든, 대상 비트맵 또는 기타 용도로 상당한 양의 메모리를 할당하는 경우 IPrintOemUni::MemoryUsage 메서드를 내보내야 합니다. 그렇지 않으면 시스템 성능이 저하될 수 있습니다.
메서드가 구현되면 페이지의 모든 래스터 지역에 대해 호출됩니다. 그러나 지역이 비어 있으면 IPPARAMS 구조의 bBlankBand 멤버가 TRUE로 설정됩니다. 이는 블록이 비어 있고 데이터가 유효하지 않음을 나타냅니다. 성능을 최적화하기 위해 빈 영역과 비어 있지 않은 영역의 교대로 밴드를 분할할 수 있기 때문에 블록 크기가 항상 밴드 크기에 해당하지는 않습니다.
pSrcBitmap 및 pBitmapInfoHeader에서 설명하는 원본 비트맵에는 다음과 같은 특성이 있습니다.
- DIB 콘텐츠는 하향식으로 정렬되고 압축되지 않습니다.
- 데이터 형식은 처리 색 형식에 나열된 형식입니다.
- 서식에 색 테이블이 필요한 경우 pColorTable에서 테이블을 가리켰습니다.
- 색 데이터는 GDIINFO 구조체의 ulPrimaryOrder 멤버에 대한 설명에 설명된 대로 PRIMARY_ORDER_CBA 형식입니다. 즉, 색 형식이 RGB 또는 CMY인 경우 가장 중요한 n 비트에는 파란색 또는 노란색 값이 포함되어야 하고, 다음 n 비트에서는 녹색 또는 마젠타 값을 포함해야 하며, 다음 n 비트에서는 빨강 또는 시안 값을 포함해야 합니다. 사용되지 않는 비트는 가장 중요한 위치에 있습니다. 형식에서 픽셀당 4비트가 사용되는 경우 n 은 1입니다. 픽셀당 24비트인 경우 n 은 다음 그림과 같이 8입니다. CYMK의 경우 네 번째 n 비트 그룹에 검은색이 포함됩니다.
앞의 그림은 픽셀당 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 포함) |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기