Metodo IPrintOemUni::HalftonePattern (prcomoem.h)
Il metodo IPrintOemUni::HalftonePattern può essere usato con le stampanti supportate da Unidrv 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 nell'attributo *HTPatternSize del file GPD.
dwHTPatternY
Altezza fornita dal chiamante, in pixel, del pattern halftone, come specificato dal secondo valore nell'attributo *HTPatternSize del file GPD.
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 *HTCallbackID del file GPD.
pResource
Puntatore fornito dal chiamante a un buffer contenente un modello halftone, come specificato dall'attributo *rcHTPatternID del file GPD. Può essere NULL.
dwResourceSize
Dimensione fornita dal chiamante del pattern halftone contenuto nel buffer a cui punta pResource. Questo valore è zero se pResource è NULL.
Valore restituito
Il metodo deve restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
S_OK | Operazione completata. |
E_FAIL | Operazione non riuscita. |
E_NOTIMPL | Il metodo non è implementato. |
Commenti
Il metodo IPrintOemUni::HalftonePattern viene usato per creare o modificare un modello di mezzotone prima che Unidrv lo passi a GDI. Lo scopo è consentire l'archiviazione di modelli proprietari di semitoni come risorse crittografate o generate in fase di esecuzione.
Se viene implementato il metodo IPrintOemUni::HalftonePattern e se la voce di file GPD per il metodo di halftoning attualmente selezionato include un attributo *HTCallbackID , Unidrv chiama il metodo IPrintOemUni::HalftonePattern prima di passare un modello a mezzotone 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 modello e passa un puntatore al metodo 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 mezzotone. In questo caso non è necessaria una risorsa RC_HTPATTERN, quindi 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.
Nell'esempio seguente viene illustrata un'implementazione del metodo HalftonePattern 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 pattern 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 brevità, non tutti gli elementi della matrice di pattern 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. Nell'esempio di GPD seguente viene illustrata 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 per il rendering implementa questo metodo, il metodo IPrintOemUni::GetImplementedMethod del plug-in deve restituire S_OK quando riceve "HalftonePattern" come input.
Per altre informazioni sul halftoning, vedere Customd Halftoning and Option Attributes for the Halftone Feature .For more information about halftoning, see Customized Halftoning and Option Attributes for the Halftone Feature.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | prcomoem.h (include Prcomoem.h) |