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 |
---|---|
|
L’opération a réussi. |
|
L’opération a échoué |
|
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) |