次の方法で共有


IPrintOemUni::HalftonePattern メソッド (prcomoem.h)

IPrintOemUni::HalftonePattern メソッドは、Unidrv でサポートされているプリンターと共に使用して、ハーフトーン操作で使用する前にハーフトーン パターンを作成または変更できます。

構文

HRESULT HalftonePattern(
  PDEVOBJ pdevobj,
  PBYTE   pHTPattern,
  DWORD   dwHTPatternX,
  DWORD   dwHTPatternY,
  DWORD   dwHTNumPatterns,
  DWORD   dwCallbackID,
  PBYTE   pResource,
  DWORD   dwResourceSize
);

パラメーター

pdevobj

DEVOBJ 構造体への呼び出し元指定ポインター。

pHTPattern

メソッド指定のハーフトーン パターンを受け取るバッファーへの呼び出し元指定ポインター。 バッファー サイズ (バイト単位) は次のとおりです。

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

dwHTPatternX

GPD ファイルの *HTPatternSize 属性の最初の値で指定された、ハーフトーン パターンの呼び出し元が指定した長さ (ピクセル単位)。

dwHTPatternY

GPD ファイルの *HTPatternSize 属性の 2 番目の値で指定された、ハーフトーン パターンの呼び出し元指定の高さ (ピクセル単位)。

dwHTNumPatterns

GPD ファイルの *HTNumPatterns 属性で指定された、呼び出し元が指定したパターンの数。 パターンの数は、1 または 3 のいずれかになります。

dwCallbackID

GPD ファイルの *HTCallbackID 属性で指定された、ハーフトーン メソッドを識別する呼び出し元指定の値。

pResource

GPD ファイルの *rcHTPatternID 属性で指定された、ハーフトーン パターンを含むバッファーへの呼び出し元指定ポインター。 これは NULL できます。

dwResourceSize

pResource が指すバッファーに含まれるハーフトーン パターン呼び出し元が指定したサイズ。 pResource NULL 場合、これは 0 です。

戻り値

このメソッドは、次のいずれかの値を返す必要があります。

リターン コード 形容
S_OK 操作は成功しました。
E_FAIL 操作が失敗しました。
E_NOTIMPL メソッドは実装されていません。

備考

IPrintOemUni::HalftonePattern メソッドは、Unidrv が GDI に渡す前に、ハーフトーン パターンを作成または変更するために使用されます。 その目的は、独自のハーフトーン パターンを暗号化されたリソースとして格納するか、実行時に生成できるようにすることです。

IPrintOemUni::HalftonePattern メソッドが実装されていて、現在選択されているハーフトニング メソッドの GPD ファイル エントリに *HTCallbackID 属性が含まれている場合、Unidrv は、IPrintOemUni::HalftonePattern メソッドを呼び出してから、ハーフトーン パターンを GDI に渡します。

現在選択されているハーフトニング メソッドの GPD ファイル エントリに、RC_HTPATTERN リソースを識別する *rcHTPatternID エントリが含まれている場合、Unidrv はパターンを取得し、pResource パラメーター値としてポインターを渡します。 これにより、パターンを暗号化されたリソースとして格納し、IPrintOemUni::HalftonePattern メソッドを使用してパターンをデコードできます。 デコードされたパターンは、pHTPattern 指すバッファーで返される必要があります。

IPrintOemUni::HalftonePattern メソッドを使用して、ハーフトーン パターンを生成することもできます。 この場合、RC_HTPATTERN リソースは必要ないため、pResource は NULL IPrintOemUni::HalftonePattern メソッドは、パターンを生成し、pHTPattern が指すバッファー返す必要があります。

IPrintOemUni::HalftonePattern メソッドが 1 つのパターンを返す場合は、すべての色に使用されます。 メソッドが 3 つのパターンを返す場合は、RGB 順に指定する必要があります。

次の例は、レンダリング プラグインの HalftonePattern メソッドの実装を示しています。 このメソッドは、HTPattern_DDK パターン配列のバイト単位の長さを計算し、パターン配列内のバイトを、このメソッドの pHTPattern パラメーターが指すバッファーにコピーします。 パターン配列には、パターンがすべての色に使用されているか、赤、緑、青のパターンが別々であるかに応じて、1 つまたは 3 つのパターンを含めることができます。 簡潔にするために、パターン配列のすべての要素が一覧表示されるわけではありません。

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;
}

レンダリング プラグインでの HalftonePattern メソッドの実装には、GPD ファイルのハーフトーン機能を伴う必要があります。 次の GPD の例は、前のサンプルで生成されたカスタマイズされたパターンをHT_PAT_DDK_16x16 オプションで記述するハーフトーン機能を示しています。


*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

    }

}

IPrintOemUni::HalftonePattern メソッドは省略可能です。 レンダリング プラグインがこのメソッドを実装する場合、プラグインの IPrintOemUni::GetImplementedMethod メソッドは、"HalftonePattern" を入力として受け取ったときにS_OKを返す必要があります。

ハーフトニングの詳細については、「ハーフトーンフィーチャー カスタマイズされたハーフトニング およびオプション属性を参照してください。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー prcomoem.h (Prcomoem.h を含む)

関連項目

IPrintOemUni インターフェイス

IPrintOemUni::ImageProcessing