Condividi tramite


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)

Vedi anche

Interfaccia IPrintOemUni

IPrintOemUni::ImageProcessing