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 |
---|---|
|
L’opération a réussi. |
|
Échec de l’opération |
|
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) |