Freigeben über


IPrintOemUni::FilterGraphics-Methode (prcomoem.h)

Die IPrintOemUni::FilterGraphics-Methode kann mit Von Unidrv unterstützten Druckern verwendet werden, um Scanzeilendaten zu ändern und an den Spooler zu senden.

Syntax

HRESULT FilterGraphics(
  PDEVOBJ pdevobj,
  PBYTE   pBuf,
  DWORD   dwLen
);

Parameter

pdevobj

Vom Aufrufer bereitgestellter Zeiger auf eine DEVOBJ-Struktur .

pBuf

Vom Aufrufer bereitgestellter Zeiger auf einen Puffer, der die zu druckenden Scanzeilendaten enthält.

dwLen

Vom Aufrufer bereitgestellter Wert, der die Länge der Daten in Bytes darstellt, auf die pBuf verweist.

Rückgabewert

Die -Methode muss einen der folgenden Werte zurückgeben:

Rückgabecode BESCHREIBUNG
S_OK Der Vorgang wurde erfolgreich ausgeführt.
E_FAIL Fehler beim Vorgang
E_NOTIMPL Die Methode ist nicht implementiert.

Hinweise

Die IPrintOemUni::FilterGraphics-Methode wird verwendet, um Scanzeilendaten zu ändern, bevor sie an den Druckspooler gesendet werden. Die -Methode ist für das Senden der empfangenen Daten an den Spooler verantwortlich.

Die IPrintOemUni::FilterGraphics-Methode ist optional. Wenn ein Rendering-Plug-In diese Methode implementiert, muss die IPrintOemUni::GetImplementedMethod-Methode des Plug-Ins S_OK zurückgeben, wenn "FilterGraphics" als Eingabe empfangen wird.

Wenn die IPrintOemUni::FilterGraphics-Methode implementiert ist, spoolt Unidrv keine Druckerdaten. Stattdessen ruft Unidrv diese Methode jedes Mal auf, wenn ein Puffer von Bilddaten für die Spoolerstellung bereit ist.

Beachten Sie, dass Unidrv bei der Implementierung dieser Methode auch keine Druckerdaten komprimiert, wie es normalerweise der Fall ist. Wenn Sie beabsichtigen, die Unidrv-Komprimierung zu verwenden, sollten Sie diese Methode nicht implementieren. Außerdem sollten Sie IPrintOemUni::GetImplementedMethod so ändern, dass S_FALSE zurückgegeben wird, wenn die Zeichenfolge "FilterGraphics" übergeben wird.

Die -Methode kann die endgültige Nachverarbeitung von Bilddaten durchführen, z. B. das Entfernen benachbarter Punkte oder andere Datenstromfilterungsvorgänge, die Unidrv nicht bereitstellt. Anschließend muss die Daten durch Aufrufen der IPrintOemDriverUni::D rvWriteSpoolBuf-Methode in die Warteschlange gepoolt werden.

Die IPrintOemUni::FilterGraphics-Methode wird von der DrvSendPage-Funktion von Unidrv aufgerufen. Wenn Sie IPrintOemUni::FilterGraphics implementieren möchten, dürfen Sie die DrvSendPage - oder DrvNextBand-Funktionen von Unidrv nicht vollständig außer Kraft setzen.

Bevor die DrvSendPage-Funktion von Unidrv die IPrintOemUni::FilterGraphics-Implementierung des Plug-Ins aufruft, DrvSendPage.

  1. Transponiert bei Bedarf die Bitmap, die gerendert werden soll.

  2. Transformiert einen Ausgabedurchlauf, der aus Farbdaten besteht, in ein einzelnes zusammenhängendes Array von Daten.

  3. Verarbeitet eine Gruppe von Scanzeilen und wandelt diese Daten in Befehle für den Drucker um.

  4. Legt die X/Y-Position fest und übergibt die Zeile der Grafikdaten an den Drucker.

Wenn das Plug-In IPrintOemUni::FilterGraphics implementiert hat, ruft Unidrv das Plug-In mit den Scanzeilendaten auf, anstatt es an den Drucker zu senden.

Die IPrintOemUni::FilterGraphics-Methode ermöglicht es einem Rendering-Plug-In, Die Scanzeilendaten zu ändern und an den Spooler zu senden. Wenn Sie diese Funktion implementieren, spoolt Unidrv Ihre Daten nicht. Stattdessen wird IPrintOemUni::FilterGraphics jedes Mal aufgerufen, wenn ein Datenpuffer zum Spoolen und Senden an den Drucker bereit ist.

Sie können IPrintOemUni::FilterGraphics verwenden, um eine spezielle Komprimierungsmethode zu implementieren oder eine Bitbearbeitung für den Datenstrom durchzuführen, der an den Drucker gesendet wird. In keinem Fall wird der integrierte Komprimierungscode des Treibers verwendet. IPrintOemUni::FilterGraphics wird mit einem Datenblock angezeigt und ist erforderlich, um diese Daten mithilfe der DrvWriteSpoolBuf-Funktion auszugeben. Der Core-Treiber (Unidrv) führt nach dem Aufruf von OEMFilterGraphics keine weitere Verarbeitung der Rasterdaten durch.

Wenn Sie die IPrintOemUni::FilterGraphics-Methode in Ihrem Plug-In implementieren, wird sie verwendet, um die Rasterdaten direkt an den Drucker zu senden. Die Anzahl der Scanzeilen in einem Block wird durch das PinsPerPhysPass-Attribut angegeben, das der Auflösungsfunktion zugeordnet ist. Dieses Attribut ist optional, und wenn Sie es nicht angeben, wird es auf 1 festgelegt (wie bei den meisten Tintenstrahl- und Seitendruckern). Andernfalls sollte PinsPerPhysPass ein Vielfaches von 8 sein. In IPrintOemUni::FilterGraphics zeigt der pBuf-Parameter auf den Puffer, der die Rasterdaten der Scanzeile enthält, die Sie bei Bedarf bearbeiten (z. B. zur Komprimierung) und schließlich senden. Der dwLen-Parameter ist die Länge des Puffers, auf den pBuf zeigt.

In der folgenden Liste werden mehrere gängige Szenarien für die Implementierung von IPrintOemUni::FilterGraphics beschrieben:

  • Spezielle Komprimierungstechniken

  • Bitbearbeitung der eingehenden Rasterdaten vor dem Senden an den Drucker

IPrintOemUni::FilterGraphics sendet schließlich alle Daten mithilfe der DrvWriteSpoolBuf-Funktion an den Drucker. Der Core-Treiber (Unidrv) verarbeitet die Daten, die IPrintOemUni::FilterGraphics sendet, nicht mehr. Wenn das Plug-In eine spezielle Komprimierung oder Bitbearbeitung ausführt, muss das Plug-In die Puffer zuordnen, die für die spezielle Komprimierung oder Bitbearbeitung erforderlich sind. Wenn das Plug-In keine eigenen Puffer zuordnet und die komprimierten Daten kleiner als die Quelle sind, überschreibt die Ausgabe den Quellpuffer.

Die IPrintOemUni::FilterGraphics-Methode bietet Ihnen Zugriff auf die Scanzeilendaten selbst und bietet Ihnen die Möglichkeit, die Rasterdaten nachzuverarbeiten.

Die Anzahl der Scanzeilen entspricht der Höhe des Bilds. Beispielsweise entspricht eine BPP-Dicke (1 Bit pro Pixel) jeder Scanzeile der Breite von 1 Pixel, sodass die Anzahl der Scanlinien gleich der Höhe des Bilds ist.

Weitere Informationen zum Anpassen der Renderingvorgänge von Unidrv finden Sie unter Unidrv-Spezifisches angepasstes Rendering.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile prcomoem.h (include Prcomoem.h)

Weitere Informationen

DrvNextBand

DrvSendPage

DrvWriteSpoolBuf

IPrintOemDriverUni::D rvWriteSpoolBuf

IPrintOemUni

IPrintOemUni::GetImplementedMethod

OEMFilterGraphics