Метод 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
Указанная вызывающим объектом длина (в пикселях) шаблона полутонов, как указано в первом значении в атрибуте *HTPatternSize файла GPD.
dwHTPatternY
Указанная вызывающим объектом высота (в пикселях) шаблона полутонов, как указано вторым значением в атрибуте *HTPatternSize файла GPD.
dwHTNumPatterns
Количество шаблонов, предоставленных вызывающим объектом, как указано в атрибуте *HTNumPatterns файла GPD. Количество шаблонов может быть 1 или 3.
dwCallbackID
Предоставленное вызывающим объектом значение, определяющее метод полутонов, как указано в атрибуте *HTCallbackID файла GPD.
pResource
Предоставленный вызывающим объектом указатель на буфер, содержащий шаблон полутона, как указано в атрибуте *rcHTPatternID файла GPD. Может иметь значение NULL.
dwResourceSize
Предоставленный вызывающим объектом размер шаблона полутона, содержащегося в буфере, на который указывает pResource. Значение равно нулю, если pResource имеет значение NULL.
Возвращаемое значение
Метод должен возвращать одно из следующих значений:
Код возврата | Описание |
---|---|
S_OK | Операция успешно выполнена. |
E_FAIL | Операция не удалась. |
E_NOTIMPL | Метод не реализован. |
Комментарии
Метод IPrintOemUni::HalftonePattern используется для создания или изменения шаблона полутона перед тем, как Unidrv передаст его в GDI. Его цель — разрешить хранить собственные шаблоны полутона в виде зашифрованных ресурсов или создавать во время выполнения.
Если реализован метод IPrintOemUni::HalftonePattern и если запись файла GPD для выбранного метода полутонирования включает атрибут *HTCallbackID , Unidrv вызывает метод IPrintOemUni::HalftonePattern перед передачей шаблона полутона в GDI.
Если запись файла GPD для выбранного метода полутонирования содержит запись *rcHTPatternID, идентифицируя RC_HTPATTERN ресурс, 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 в подключаемом модуле отрисовки должна сопровождаться функцией Halftone в файле GPD. В следующем примере GPD показан компонент Halftone, параметр HT_PAT_DDK_16x16 которого описывает настраиваемый шаблон, созданный в предыдущем примере.
*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 должен возвращать S_OK при получении "HalftonePattern" в качестве входных данных.
Дополнительные сведения о полутонах см. в разделе Настраиваемые атрибуты полутонов и параметров для функции полутона.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | prcomoem.h (включая Prcomoem.h) |