Метод 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
Вызываемое число шаблонов, указанное атрибутомHTNumPatterns файла GPD. Число шаблонов может быть либо 1, либо 3.
dwCallbackID
Вызываемое значение, определяющее метод половины, как указано в атрибуте GPD-файла *атрибуте HTCallbackID.
pResource
Вызывающий указатель на буфер, содержащий полутонный шаблон, как указано в атрибуте GPD файла *rcHTPatternID. Это может быть 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.
В следующем примере показана реализация метода модуля отрисовки. Метод вычисляет длину в байтах массива шаблонов 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" в качестве входных данных.
Дополнительные сведения о полутоне см. в разделе Настраиваемые полутонные и атрибуты параметра длякомпонента Halftone.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | prcomoem.h (include Prcomoem.h) |