Método IPrintOemUni::HalftonePattern (prcomoem.h)

O método IPrintOemUni::HalftonePattern pode ser usado com impressoras com suporte unidrv para criar ou modificar um padrão de meio tom antes de ser usado em uma operação de halftoning.

Sintaxe

HRESULT HalftonePattern(
  PDEVOBJ pdevobj,
  PBYTE   pHTPattern,
  DWORD   dwHTPatternX,
  DWORD   dwHTPatternY,
  DWORD   dwHTNumPatterns,
  DWORD   dwCallbackID,
  PBYTE   pResource,
  DWORD   dwResourceSize
);

Parâmetros

pdevobj

Ponteiro fornecido pelo chamador para uma estrutura DEVOBJ .

pHTPattern

Ponteiro fornecido pelo chamador para um buffer que recebe o padrão de meio-tom fornecido pelo método. O tamanho do buffer, em bytes, é:

(((dwHTPatternX * dwHTPatternY) + 3)/4) * 4 * dwHTNumPatterns

dwHTPatternX

Comprimento fornecido pelo chamador, em pixels, do padrão de meio tom, conforme especificado pelo primeiro valor no atributo *HTPatternSize do arquivo GPD.

dwHTPatternY

Altura fornecida pelo chamador, em pixels, do padrão de meio tom, conforme especificado pelo segundo valor no atributo *HTPatternSize do arquivo GPD.

dwHTNumPatterns

Número de padrões fornecido pelo chamador, conforme especificado pelo atributo *HTNumPatterns do arquivo GPD. O número de padrões pode ser 1 ou 3.

dwCallbackID

Valor fornecido pelo chamador que identifica o método halftone, conforme especificado pelo atributo *HTCallbackID do arquivo GPD.

pResource

Ponteiro fornecido pelo chamador para um buffer que contém um padrão de meio tom, conforme especificado pelo atributo *rcHTPatternID do arquivo GPD. Isso pode ser NULL.

dwResourceSize

Tamanho fornecido pelo chamador do padrão de meio-tom contido no buffer apontado por pResource. Isso será zero se pResource for NULL.

Retornar valor

O método deve retornar um dos seguintes valores:

Código de retorno Descrição
S_OK A operação foi realizada com êxito.
E_FAIL Falha na operação.
E_NOTIMPL O método não está implementado.

Comentários

O método IPrintOemUni::HalftonePattern é usado para criar ou modificar um padrão de meio tom antes que Unidrv o passe para gDI. Sua finalidade é permitir que padrões de meio-tom proprietários sejam armazenados como recursos criptografados ou gerados em tempo de execução.

Se o método IPrintOemUni::HalftonePattern for implementado e se a entrada de arquivo GPD para o método de halftoning selecionado no momento incluir um atributo *HTCallbackID , Unidrv chamará o método IPrintOemUni::HalftonePattern antes de passar um padrão de halftone para GDI.

Se a entrada de arquivo GPD para o método de halftoning selecionado no momento contiver uma entrada *rcHTPatternID identificando um recurso RC_HTPATTERN, Unidrv obterá o padrão e passará um ponteiro para ele como o valor do parâmetro pResource . Isso permite armazenar o padrão como um recurso criptografado e usar o método IPrintOemUni::HalftonePattern para decodificar o padrão. O padrão decodificado deve ser retornado no buffer apontado por pHTPattern.

Você também pode usar o método IPrintOemUni::HalftonePattern para gerar um padrão de meio tom. Nesse caso, um recurso de RC_HTPATTERN não é necessário, portanto , pResource é NULL. O método IPrintOemUni::HalftonePattern deve gerar um padrão e devolvê-lo no buffer apontado por pHTPattern.

Se o método IPrintOemUni::HalftonePattern retornar um padrão, ele será usado para todas as cores. Se o método retornar três padrões, eles deverão ser especificados na ordem RGB.

O exemplo a seguir mostra uma implementação do método HalftonePattern de um plug-in de renderização. O método calcula o comprimento em bytes da matriz de padrão HTPattern_DDK e copia os bytes na matriz de padrões para o buffer apontado pelo parâmetro pHTPattern desse método. A matriz de padrões pode conter um ou três padrões, dependendo se o padrão é usado para todas as cores ou tem padrões vermelhos, verdes e azuis separados. Para fins de brevidade, nem todos os elementos da matriz de padrões são listados.

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;
}

Uma implementação de um método HalftonePattern no plug-in de renderização deve ser acompanhada por um recurso Halftone no arquivo GPD. O exemplo de GPD a seguir mostra um recurso Halftone cuja opção HT_PAT_DDK_16x16 descreve o padrão personalizado gerado no exemplo anterior.


*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

    }

}

O método IPrintOemUni::HalftonePattern é opcional. Se um plug-in de renderização implementar esse método, o método IPrintOemUni::GetImplementedMethod do plug-in deverá retornar S_OK quando receber "HalftonePattern" como entrada.

Para obter mais informações sobre o halftoning, consulte Atributos personalizados de halftoning e option para o recurso de meio-tom.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho prcomoem.h (inclua Prcomoem.h)

Confira também

IPrintOemUni Interface

IPrintOemUni::ImageProcessing