Freigeben über


IPrintOemUni::HalftonePattern-Methode (prcomoem.h)

Die IPrintOemUni::HalftonePattern Methode kann mit Unidrv-unterstützten Druckern verwendet werden, um ein Halbtonmuster zu erstellen oder zu ändern, bevor es in einem Halbtonvorgang verwendet wird.

Syntax

HRESULT HalftonePattern(
  PDEVOBJ pdevobj,
  PBYTE   pHTPattern,
  DWORD   dwHTPatternX,
  DWORD   dwHTPatternY,
  DWORD   dwHTNumPatterns,
  DWORD   dwCallbackID,
  PBYTE   pResource,
  DWORD   dwResourceSize
);

Parameter

pdevobj

Vom Aufrufer bereitgestellter Zeiger auf eine DEVOBJ- Struktur.

pHTPattern

Vom Aufrufer bereitgestellter Zeiger auf einen Puffer, der das von der Methode bereitgestellte Halbtonmuster empfängt. Puffergröße in Byte lautet:

(((dwHTPatternX * dwHTPatternY) + 3)/4) * 4 * dwHTNumPatterns

dwHTPatternX

Vom Aufrufer bereitgestellte Länge des Halbtonmusters in Pixeln, wie durch den ersten Wert in der GPD-Datei *HTPatternSize Attribut angegeben.

dwHTPatternY

Vom Aufrufer bereitgestellte Höhe des Halbtonmusters in Pixeln, wie durch den zweiten Wert in der GPD-Datei *HTPatternSize Attribut angegeben.

dwHTNumPatterns

Vom Aufrufer bereitgestellte Anzahl von Mustern, wie durch die GPD-Datei *HTNumPatterns Attribut angegeben. Die Anzahl der Muster kann entweder 1 oder 3 sein.

dwCallbackID

Vom Aufrufer bereitgestellter Wert, der die Halftone-Methode identifiziert, wie durch das *HTCallbackID-Attribut der GPD-Datei angegeben.

pResource

Vom Aufrufer bereitgestellter Zeiger auf einen Puffer, der ein Halbtonmuster enthält, wie durch das Attribut "*rcHTPatternID" der GPD-Datei angegeben. Dies kann NULL-sein.

dwResourceSize

Vom Aufrufer bereitgestellte Größe des im Puffer enthaltenen Halbtonmusters, auf das pResource-verweist. Dies ist null, wenn pResource-NULL-ist.

Rückgabewert

Die Methode muss einen der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
S_OK Der Vorgang war erfolgreich.
E_FAIL Fehler beim Vorgang.
E_NOTIMPL Die Methode ist nicht implementiert.

Bemerkungen

Die IPrintOemUni::HalftonePattern-Methode wird verwendet, um ein Halbtonmuster zu erstellen oder zu ändern, bevor Unidrv es an GDI übergibt. Ziel ist es, proprietäre Halbtonmuster entweder als verschlüsselte Ressourcen zu speichern oder zur Laufzeit zu generieren.

Wenn die IPrintOemUni::HalftonePattern-Methode implementiert ist und der GPD-Dateieintrag für die aktuell ausgewählte Halftoning-Methode ein *HTCallbackID-Attribut enthält, ruft Unidrv den IPrintOemUni::HalftonePattern Methode auf, bevor ein Halftone-Muster an GDI übergeben wird.

Wenn der GPD-Dateieintrag für die aktuell ausgewählte Halbtoningmethode einen *rcHTPatternID-Eintrag enthält, der eine RC_HTPATTERN Ressource identifiziert, ruft Unidrv das Muster ab und übergibt einen Zeiger als pResource Parameterwert. Auf diese Weise können Sie das Muster als verschlüsselte Ressource speichern und die IPrintOemUni::HalftonePattern Methode verwenden, um das Muster zu decodieren. Das decodierte Muster sollte im Puffer zurückgegeben werden, auf den pHTPatternverweist.

Sie können auch die IPrintOemUni::HalftonePattern Methode verwenden, um ein Halbtonmuster zu generieren. In diesem Fall ist keine RC_HTPATTERN Ressource erforderlich, sodass pResource-NULL-ist. Die IPrintOemUni::HalftonePattern-Methode sollte ein Muster generieren und im Puffer zurückgeben, auf den pHTPatternverweist.

Wenn die IPrintOemUni::HalftonePattern Methode ein Muster zurückgibt, wird sie für alle Farben verwendet. Wenn die Methode drei Muster zurückgibt, müssen sie in RGB-Reihenfolge angegeben werden.

Das folgende Beispiel zeigt eine Implementierung der HalftonePattern--Methode eines Rendering-Plug-Ins. Die Methode berechnet die Länge in Byte des HTPattern_DDK Musterarrays und kopiert dann die Bytes im Musterarray in den Puffer, auf den der pHTPattern Parameter dieser Methode verweist. Das Musterarray kann entweder ein oder drei Muster enthalten, je nachdem, ob das Muster für alle Farben verwendet wird oder über separate rote, grüne und blaue Muster verfügt. Aus Platzgründen werden nicht alle Elemente des Musterarrays aufgeführt.

static BYTE HTPattern_DDK[256] = {
    129,  44,  59, 124, 143, 232, 166, ...
    ...
    ...
    98, 202, 130, 148, 213,  101,  163, 72
};

HRESULT __stdcall IOemUni::HalftonePattern(
    PDEVOBJ     pdevobj,
    PBYTE       pHTPattern,
    DWORD       dwHTPatternX,
    DWORD       dwHTPatternY,
    DWORD       dwHTNumPatterns,
    DWORD       dwCallbackID,
    PBYTE       pResource,
    DWORD       dwResourceSize)
{
PBYTE  pSrcPattern;
DWORD  dwLen = sizeof(HTPattern_DDK);

if (dwLen != (((dwHTPatternX * dwHTPatternY) + 3) / 4) * 4 * dwHTNumPatterns)
    return E_FAIL;

pSrcPattern = HTPattern_DDK;

while (dwLen-- > 0)
    *pHTPattern++ = *pSrcPattern++;

return S_OK;
}

Eine Implementierung einer HalftonePattern--Methode im Rendering-Plug-In muss von einem Halftone-Feature in der GPD-Datei begleitet werden. Das folgende GPD-Beispiel zeigt ein Halftone-Feature, dessen HT_PAT_DDK_16x16 Option das benutzerdefinierte Muster beschreibt, das im vorherigen Beispiel generiert wurde.


*Feature: Halftone

{

    *rcNameID: =HALFTONING_DISPLAY

    *HelpIndex: 12005

    *DefaultOption: HT_PATSIZE_AUTO

    *Option: HT_PATSIZE_AUTO

    {

        *rcNameID: =HT_AUTO_SELECT_DISPLAY

    }

    *Option: HT_PATSIZE_SUPERCELL_M

    {

        *rcNameID: =HT_SUPERCELL_DISPLAY

    }

    *Option: HT_PATSIZE_6x6_M

    {

        *rcNameID: =HT_DITHER6X6_DISPLAY

    }

    *Option: HT_PATSIZE_8x8_M

    {

        *rcNameID: =HT_DITHER8X8_DISPLAY

    }

    *Option: HT_PAT_DDK_16x16

    {

        *Name: "DDK 16x16"

        *HTPatternSize: PAIR(16, 16)

        *HTNumPatterns: 1

        *HTCallbackID: 1

    }

}

Die IPrintOemUni::HalftonePattern-Methode ist optional. Wenn ein Rendering-Plug-In diese Methode implementiert, muss die IPrintOemUni::GetImplementedMethod--Methode S_OK zurückgeben, wenn es "HalftonePattern" als Eingabe empfängt.

Weitere Informationen zur Halbtonierung finden Sie unter Angepassten Halftoning- und Option Attributes for the Halftone Feature.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- prcomoem.h (einschließlich Prcomoem.h)

Siehe auch

IPrintOemUni Interface

IPrintOemUni::ImageProcessing