Partager via


IPrintOemUni ::Compression, méthode (prcomoem.h)

La méthode IPrintOemUni::Compression peut être utilisée avec des 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 pour 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 fournie par l’appelant des données d’entrée.

dwOutLen

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

[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 doivent pas être supérieurs à la valeur reçue pour dwOutLen. Si une erreur se produit ou si la méthode ne peut pas compresser, la valeur de résultat doit être -1.

Valeur de retour

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

Retourner le code Description
S_OK
L’opération a réussi.
E_FAIL
Échec de l’opération
E_NOTIMPL
La méthode n’est pas implémentée.

Remarques

La méthode IPrintOemUni::Compression est utilisée par le rendu des plug-ins pour compresser les données de ligne d’analyse avant d’être 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 méthode IPrintOemUni::Compression est définie et si le fichier GPD de l’imprimante contient une entrée de commande CmdEnableOEMComp, Unidrv appelle la méthode chaque fois qu’une ligne d’analyse 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 de paramètre pInBuf et dwInLen décrivent une mémoire tampon contenant une ligne d’analyse de données d’image à compresser. Les valeurs de paramètre pOutBuf et dwOutLen décrivent la mémoire tampon dans laquelle la méthode IPrintOemUni::Compression doit placer les données compressées.

Avant d’envoyer une ligne d’analyse au spouleur d’impression, il tente chaque méthode de compression activée pour déterminer celle qui crée le plus petit flux de données. Après avoir déterminé le meilleur algorithme de compression (en compressant les données à l’aide de chaque méthode), il spool la commande d’imprimante qui permet à l’imprimante d’accepter le format compressé le mieux, puis envoie les données compressées à l’imprimante.

Par conséquent, la méthode IPrintOemUni::Compression 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 Unidrv a essayé jusqu’à ce moment. (Si aucune autre méthode n’a été tenté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, elle doit retourner -1 à l’emplacement spécifié par piResult.

Si, après qu’Unidrv tente 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 l'dwOutLen valeur reçue pour déterminer s’il peut arrêter l’algorithme avant la fin, pour gagner du temps si une autre méthode de compression a déjà créé un meilleur résultat.

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

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête prcomoem.h (include Prcomoem.h)