Partager via


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

La IPrintOemUni::Compression méthode peut être utilisée avec les imprimantes prises en charge par Unidrv pour fournir une méthode de compression bitmap personnalisée.

Syntaxe

HRESULT Compression(
        PDEVOBJ pdevobj,
        PBYTE   pInBuf,
        PBYTE   pOutBuf,
        DWORD   dwInLen,
        DWORD   dwOutLen,
  [out] OUT INT *piResult
);

Paramètres

pdevobj

Pointeur fourni par l’appelant vers une structure DEVOBJ .

pInBuf

Pointeur fourni par l’appelant vers les données de ligne d’analyse d’entrée.

pOutBuf

Pointeur fourni par l’appelant vers une mémoire tampon de sortie pour recevoir des données de ligne d’analyse compressées.

dwInLen

Longueur des données d’entrée fournies par l’appelant.

dwOutLen

Longueur de la mémoire tampon de sortie fournie par l’appelant.

[out] piResult

Reçoit une valeur de résultat fournie par la méthode. Si l’opération réussit, cette valeur doit être le nombre d’octets compressés, qui ne doit pas être supérieur à la valeur reçue pour dwOutLen. Si une erreur se produit ou si la méthode ne peut pas compresser, la valeur du résultat doit être -1.

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 IPrintOemUni::Compression méthode est utilisée par le rendu des plug-ins pour compresser les données de ligne de numérisation avant qu’elles ne soient envoyées au spouleur d’impression. L’objectif de la méthode est de prendre en charge les méthodes de compression spécifiques à l’imprimante qui ne sont pas prises en charge par Unidrv.

Si la IPrintOemUni::Compression méthode est définie et que le fichier GPD de l’imprimante contient une entrée de commande CmdEnableOEMComp, Unidrv appelle la méthode chaque fois qu’une ligne de numérisation est prête à être envoyée au spouleur d’impression. (Pour plus d’informations sur la commande CmdEnableOEMComp, consultez Commandes de compression de données Raster.)

Les valeurs des paramètres pInBuf et dwInLen décrivent une mémoire tampon contenant une ligne d’analyse de données d’image à compresser. Les valeurs des paramètres pOutBuf et dwOutLen décrivent la mémoire tampon dans laquelle la IPrintOemUni::Compression méthode doit placer les données compressées.

Avant d’envoyer une ligne de balayage au spouleur d’impression, Unidrv essaie chaque méthode de compression activée pour déterminer celle qui crée le plus petit flux de données. Une fois qu’il a déterminé le meilleur algorithme de compression (en compressant les données à l’aide de chaque méthode), il met en file d’attente la commande d’imprimante qui permet à l’imprimante d’accepter le meilleur format compressé, puis envoie les données compressées à l’imprimante.

Par conséquent, la IPrintOemUni::Compression méthode est appelée pour chaque ligne d’analyse, que les données compressées retournées par la méthode soient réellement utilisées ou non. Lorsque la méthode est appelée, dwOutLen contient la longueur retournée par la meilleure méthode de compression qu’Unidrv a essayée jusqu’alors. (Si aucune autre méthode n’a été essayée, dwOutLen contient la longueur non compressée.) Si l’algorithme ne peut pas produire une ligne d’analyse compressée égale ou inférieure à dwOutLen octets, il doit retourner -1 à l’emplacement spécifié par piResult.

Si, après qu’Unidrv a essayé toutes les méthodes de compression activées, les données compressées retournées par IPrintOemUni::Compression ont la plus petite longueur, Unidrv envoie la mémoire tampon au spouleur d’impression, précédée de la commande spécifiée par l’entrée de commande CmdEnableOEMComp.

Si possible, l’algorithme de compression de la méthode doit utiliser la valeur dwOutLen reçue pour déterminer s’il peut arrêter l’algorithme avant l’achèvement, afin de gagner du temps si une autre méthode de compression a déjà créé un meilleur résultat.

La IPrintOemUni::Compression méthode 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’il reçoit « Compression » comme entrée.

Configuration requise

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