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) |