Metodo IPrintOemUni::HalftonePattern (prcomoem.h)
Il metodo IPrintOemUni::HalftonePattern può essere usato con stampanti unidrv supportate per creare o modificare un modello halftone prima di usarlo in un'operazione di halftoning.
Sintassi
HRESULT HalftonePattern(
PDEVOBJ pdevobj,
PBYTE pHTPattern,
DWORD dwHTPatternX,
DWORD dwHTPatternY,
DWORD dwHTNumPatterns,
DWORD dwCallbackID,
PBYTE pResource,
DWORD dwResourceSize
);
Parametri
pdevobj
Puntatore fornito dal chiamante a una struttura DEVOBJ.
pHTPattern
Puntatore fornito dal chiamante a un buffer che riceve il modello halftone fornito dal metodo. Le dimensioni del buffer, in byte, sono:
(((dwHTPatternX * dwHTPatternY) + 3)/4) * 4 * dwHTNumPatterns
dwHTPatternX
Lunghezza fornita dal chiamante, espressa in pixel, del modello halftone, come specificato dal primo valore nel file GPD *HTPatternSize attributo.
dwHTPatternY
Altezza fornita dal chiamante, in pixel, del modello a metàtone, come specificato dal secondo valore nel file GPD *HTPatternSize attributo.
dwHTNumPatterns
Numero di modelli fornito dal chiamante, come specificato dall'attributo *HTNumPatterns del file GPD. Il numero di modelli può essere 1 o 3.
dwCallbackID
Valore fornito dal chiamante che identifica il metodo halftone, come specificato dall'attributo *HTCallback ID del file GPD.
pResource
Puntatore fornito dal chiamante a un buffer contenente un modello halftone, come specificato dall'attributo *rcHTPattern ID del file GPD. Può essere null.
dwResourceSize
Dimensione fornita dal chiamante del pattern halftone contenuto nel buffer a cui punta pResource. Questo è zero se pResource è NULL.
Valore restituito
Il metodo deve restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
S_OK | Operazione riuscita. |
E_FAIL | Operazione non riuscita. |
E_NOTIMPL | Il metodo non è implementato. |
Osservazioni
Il metodo IPrintOemUni::HalftonePattern viene usato per creare o modificare un modello a metàtone prima che Unidrv lo passi a GDI. Il suo scopo è consentire l'archiviazione di modelli a metàtone proprietari come risorse crittografate o generate in fase di esecuzione.
Se viene implementato il metodo IPrintOemUni::HalftonePattern e se la voce del file GPD per il metodo di halftoning attualmente selezionato include un attributo *HTCallbackID, Unidrv chiama il metodo IPrintOemUni::HalftonePattern prima di passare un modello halftone a GDI.
Se la voce del file GPD per il metodo di halftoning attualmente selezionato contiene una voce *rcHTPatternID che identifica una risorsa RC_HTPATTERN, Unidrv ottiene il criterio e passa un puntatore a esso come valore del parametro pResource. In questo modo è possibile archiviare il modello come risorsa crittografata e usare il metodo IPrintOemUni::HalftonePattern per decodificare il modello. Il modello decodificato deve essere restituito nel buffer a cui punta pHTPattern.
È anche possibile usare il metodo IPrintOemUni::HalftonePattern per generare un modello a metàtone. In questo caso non è necessaria una risorsa RC_HTPATTERN, pertanto pResource è NULL. Il metodo IPrintOemUni::HalftonePattern deve generare un criterio e restituirlo nel buffer a cui punta pHTPattern.
Se il metodo IPrintOemUni::HalftonePattern restituisce un motivo, viene usato per tutti i colori. Se il metodo restituisce tre modelli, devono essere specificati in ordine RGB.
L'esempio seguente illustra un'implementazione del metodo HalftonePat tern di rendering di un plug-in di rendering. Il metodo calcola la lunghezza in byte della matrice di criteri di HTPattern_DDK e quindi copia i byte nella matrice di criteri nel buffer a cui punta il parametro pHTPattern di questo metodo. La matrice di criteri può contenere uno o tre modelli, a seconda che il modello venga usato per tutti i colori o abbia modelli rosso, verde e blu separati. Per motivi di brevità, non tutti gli elementi della matrice di criteri sono elencati.
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;
}
Un'implementazione di un metodo HalftonePattern nel plug-in di rendering deve essere accompagnata da una funzionalità Halftone nel file GPD. L'esempio di GPD seguente mostra una funzionalità Halftone la cui opzione HT_PAT_DDK_16x16 descrive il modello personalizzato generato nell'esempio precedente.
*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
}
}
Il metodo IPrintOemUni::HalftonePattern è facoltativo. Se un plug-in di rendering implementa questo metodo, il metodo IPrintOemUni::GetImplementedMethod deve restituire S_OK quando riceve "HalftonePattern" come input.
Per altre informazioni sull'halftoning, vedere customd Halftoning e Option Attributes for the Halftone Feature.For more information about halftoning, see Customized Halftoning and Option Attributes for the Halftone Feature.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Desktop |
intestazione | prcomoem.h (include Prcomoem.h) |
Vedere anche
interfaccia IPrintOemUni