Partager via


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

La méthode IPrintOemUni ::HalftonePattern peut être utilisée avec les imprimantes prises en charge par Unidrv pour créer ou modifier un modèle de demi-teinte avant qu’il ne soit utilisé dans une opération de halftoning.

Syntaxe

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

Paramètres

pdevobj

Pointeur fourni par l’appelant vers une structure DEVOBJ .

pHTPattern

Pointeur fourni par l’appelant vers une mémoire tampon qui reçoit le modèle de demi-tonalité fourni par la méthode. La taille de la mémoire tampon, en octets, est la suivante :

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

dwHTPatternX

Longueur fournie par l’appelant, en pixels, du modèle de demi-tonalité, comme spécifié par la première valeur de l’attribut *HTPatternSize du fichier GPD .

dwHTPatternY

Hauteur fournie par l’appelant, en pixels, du modèle de demi-tonalité, comme spécifié par la deuxième valeur de l’attribut *HTPatternSize du fichier GPD .

dwHTNumPatterns

Nombre de modèles fournis par l’appelant, tel que spécifié par l’attribut *HTNumPatterns du fichier GPD . Le nombre de modèles peut être de 1 ou de 3.

dwCallbackID

Valeur fournie par l’appelant identifiant la méthode de demi-teinte, comme spécifié par l’attribut *HTCallbackID du fichier GPD.

pResource

Pointeur fourni par l’appelant vers une mémoire tampon contenant un modèle de demi-teinte, comme spécifié par l’attribut *rcHTPatternID du fichier GPD. Il peut s’agir de NULL.

dwResourceSize

Taille fournie par l’appelant du modèle de demi-teinte contenu dans la mémoire tampon pointée vers pResource. Cette valeur est égale à zéro si pResource a la valeur NULL.

Valeur retournée

La méthode doit retourner l’une des valeurs suivantes :

Code de retour Description
S_OK L’opération a réussi.
E_FAIL L'opération a échoué.
E_NOTIMPL Cette méthode n'est pas implémentée.

Remarques

La méthode IPrintOemUni ::HalftonePattern est utilisée pour créer ou modifier un modèle de demi-teinte avant qu’Unidrv ne le passe à GDI. Son objectif est de permettre aux modèles de demi-teinte propriétaires d’être stockés en tant que ressources chiffrées ou générés au moment de l’exécution.

Si la méthode IPrintOemUni ::HalftonePattern est implémentée et si l’entrée de fichier GPD pour la méthode de halftoning actuellement sélectionnée inclut un attribut *HTCallbackID , Unidrv appelle la méthode IPrintOemUni ::HalftonePattern avant de passer un modèle de demi-teinte à GDI.

Si l’entrée de fichier GPD pour la méthode de halftoning actuellement sélectionnée contient une entrée *rcHTPatternID identifiant une ressource RC_HTPATTERN, Unidrv obtient le modèle et lui transmet un pointeur en tant que valeur de paramètre pResource . Cela vous permet de stocker le modèle en tant que ressource chiffrée et d’utiliser la méthode IPrintOemUni ::HalftonePattern pour décoder le modèle. Le modèle décodé doit être retourné dans la mémoire tampon pointée par pHTPattern.

Vous pouvez également utiliser la méthode IPrintOemUni ::HalftonePattern pour générer un modèle de demi-teinte. Dans ce cas, une ressource RC_HTPATTERN n’est pas nécessaire, de sorte que pResource a la valeur NULL. La méthode IPrintOemUni ::HalftonePattern doit générer un modèle et le retourner dans la mémoire tampon pointée par pHTPattern.

Si la méthode IPrintOemUni ::HalftonePattern retourne un modèle, elle est utilisée pour toutes les couleurs. Si la méthode retourne trois modèles, ils doivent être spécifiés dans l’ordre RVB.

L’exemple suivant montre une implémentation de la méthode HalftonePattern d’un plug-in de rendu. La méthode calcule la longueur en octets du tableau de modèles HTPattern_DDK, puis copie les octets du tableau de modèles dans la mémoire tampon vers laquelle pointe le paramètre pHTPattern de cette méthode. Le tableau de motifs peut contenir un ou trois motifs, selon que le motif est utilisé pour toutes les couleurs ou a des motifs rouges, verts et bleus distincts. Par souci de concision, tous les éléments du tableau de modèles ne sont pas répertoriés.

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

Une implémentation d’une méthode HalftonePattern dans le plug-in de rendu doit être accompagnée d’une fonctionnalité Halftone dans le fichier GPD. L’exemple gpD suivant montre une fonctionnalité demi-teinte dont l’option HT_PAT_DDK_16x16 décrit le modèle personnalisé généré dans l’exemple précédent.


*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

    }

}

La méthode IPrintOemUni ::HalftonePattern est facultative. Si un plug-in de rendu implémente cette méthode, la méthode IPrintOemUni ::GetImplementedMethod du plug-in doit retourner S_OK lorsqu’elle reçoit « HalftonePattern » comme entrée.

Pour plus d’informations sur le halftoning, consultez Attributs d’option et de halftoning personnaliséspour la fonctionnalité de demi-teinte.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête prcomoem.h (include Prcomoem.h)

Voir aussi

IPrintOemUni, interface

IPrintOemUni ::ImageProcessing