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 は、GDI にハーフトーン パターンを渡す前に IPrintOemUni::HalftonePattern メソッドを呼び出します。
現在選択されているハーフトニング メソッドの 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 ファイルに Halftone 機能を伴う必要があります。 次の 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を返す必要があります。
ハーフトーンの詳細については、「ハーフトーン機能の カスタマイズされたハーフトニング と オプション属性」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | prcomoem.h (Prcomoem.h を含む) |