IPrintOemUni::HalftonePattern-Methode (prcomoem.h)

Die IPrintOemUni::HalftonePattern-Methode kann mit von Unidrv unterstützten Druckern verwendet werden, um ein Halbtonmuster zu erstellen oder zu ändern, bevor es in einem Halftoning-Vorgang 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. Die Puffergröße in Bytes beträgt:

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

dwHTPatternX

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

dwHTPatternY

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

dwHTNumPatterns

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

dwCallbackID

Vom Aufrufer bereitgestellter Wert, der die Halbtonmethode 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 *rcHTPatternID-Attribut der GPD-Datei angegeben. Dies kann NULL sein.

dwResourceSize

Vom Aufrufer bereitgestellte Größe des Halbtonmusters, das im Puffer enthalten ist, auf den pResource verweist. Dies ist null, wenn pResourceNULL ist.

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::HalftonePattern-Methode wird verwendet, um ein Halbtonmuster zu erstellen oder zu ändern, bevor Unidrv es an GDI übergibt. Ihr Zweck besteht darin, 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 Halftoningmethode ein *HTCallbackID-Attribut enthält, ruft Unidrv die IPrintOemUni::HalftonePattern-Methode auf, bevor ein Halftonmuster an GDI übergeben wird.

Wenn der GPD-Dateieintrag für die aktuell ausgewählte Halftoningmethode einen *rcHTPatternID-Eintrag enthält, der eine RC_HTPATTERN Ressource identifiziert, ruft Unidrv das Muster ab und übergibt einen Zeiger als pResource-Parameterwert . Dadurch 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 pHTPattern verweist.

Sie können auch die IPrintOemUni::HalftonePattern-Methode verwenden, um ein Halbtonmuster zu generieren. In diesem Fall wird keine RC_HTPATTERN Ressource benötigt, sodass pResourceNULL ist. Die IPrintOemUni::HalftonePattern-Methode sollte ein Muster generieren und im Puffer zurückgeben, auf den pHTPattern verweist.

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 diese in RGB-Reihenfolge angegeben werden.

Das folgende Beispiel zeigt eine Implementierung der HalftonePattern-Methode eines Rendering-Plug-Ins. Die -Methode berechnet die Länge des HTPattern_DDK Musterarrays in Bytes 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. Der Kürze halber 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 des Plug-Ins S_OK zurückgeben, wenn es "HalftonePattern" als Eingabe empfängt.

Weitere Informationen zur Halbtonierung finden Sie unter Angepasste Halbtonierung und Optionsattribute für das Halftone-Feature.

Anforderungen

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

Weitere Informationen

IPrintOemUni-Schnittstelle

IPrintOemUni::ImageProcessing