GDIINFO 構造体 (winddi.h)
GDIINFO 構造体は、特定のデバイスのグラフィックス機能を記述します。
構文
typedef struct _GDIINFO {
ULONG ulVersion;
ULONG ulTechnology;
ULONG ulHorzSize;
ULONG ulVertSize;
ULONG ulHorzRes;
ULONG ulVertRes;
ULONG cBitsPixel;
ULONG cPlanes;
ULONG ulNumColors;
ULONG flRaster;
ULONG ulLogPixelsX;
ULONG ulLogPixelsY;
ULONG flTextCaps;
ULONG ulDACRed;
ULONG ulDACGreen;
ULONG ulDACBlue;
ULONG ulAspectX;
ULONG ulAspectY;
ULONG ulAspectXY;
LONG xStyleStep;
LONG yStyleStep;
LONG denStyleStep;
POINTL ptlPhysOffset;
SIZEL szlPhysSize;
ULONG ulNumPalReg;
COLORINFO ciDevice;
ULONG ulDevicePelsDPI;
ULONG ulPrimaryOrder;
ULONG ulHTPatternSize;
ULONG ulHTOutputFormat;
ULONG flHTFlags;
ULONG ulVRefresh;
ULONG ulBltAlignment;
ULONG ulPanningHorzRes;
ULONG ulPanningVertRes;
ULONG xPanningAlignment;
ULONG yPanningAlignment;
ULONG cxHTPat;
ULONG cyHTPat;
LPBYTE pHTPatA;
LPBYTE pHTPatB;
LPBYTE pHTPatC;
ULONG flShadeBlend;
ULONG ulPhysicalPixelCharacteristics;
ULONG ulPhysicalPixelGamma;
} GDIINFO, *PGDIINFO;
メンバー
ulVersion
ドライバーのバージョン番号を指定します。 ulVersion のバイト順序は次の形式です。
上位 16 ビットは 0 に設定する必要があります。 ビット 8 から 15 は、ドライバーを設計する Microsoft オペレーティング システムのバージョン番号を指定します。 この範囲の上位 4 ビットはバージョンのメジャー番号を指定し、下位 4 ビットにはバージョンのマイナー番号が含まれます。 ulVersion の下位 8 ビットは、ディスプレイ ドライバーのバージョン番号を指定します。この値は、ディスプレイ ドライバー バイナリ ファイルのリリースごとにインクリメントする必要があります。
コントロール パネルの表示プログラムは、ulVersion に含まれるバージョン番号と、他のドライバー固有の情報を示します。
ulTechnology
デバイス テクノロジを指定します。 このメンバーには、次の表に示す値のいずれかを指定できます。
値 | 意味 |
---|---|
DT_CHARSTREAM | デバイスフォントのみ |
DT_PLOTTER | ベクター プロッター |
DT_RASCAMERA | ラスター カメラ |
DT_RASDISPLAY | ラスター表示 |
DT_RASPRINTER | ラスター プリンター |
ulHorzSize
物理サーフェスの幅を指定します。 正の値は幅がミリメートル単位であることを示し、負の値は幅がマイクロメートル単位であることを示します。
ulVertSize
物理サーフェスの高さを指定します。 正の値は高さがミリメートル単位であることを示し、負の値は高さがマイクロメートル単位であることを示します。
ulHorzRes
物理サーフェス (ディスプレイ デバイス)、または印刷可能なサーフェス (プリンター) の幅をピクセル単位で指定します。
ulDesktopHorzRes も参照してください。
ulVertRes
物理サーフェス (ディスプレイ デバイス)、または印刷可能なサーフェス (プリンター) の高さをピクセル単位で指定します。
cBitsPixel
各カラー プレーン内の隣接するビット数を指定します。 ピクセルあたりのビット数の合計は、 cBitsPixel と cPlanes の積です。
cPlanes
カラー プレーンの数を指定します。
ulNumColors
淡色化されたデバイスの場合、 ulNumColors は既定のカラー パレット内のエントリの数を指定します。 非不安定なデバイス (プリンターを含まない) の場合、 ulNumColors は -1 に設定されます。
flRaster
は予約されており、0 に設定する必要があります。
ulLogPixelsX
デバイスの幅の解像度を 1 インチあたりの論理ピクセル単位で指定します。
プリンターの場合、このメンバーはプリンターの解像度 (dpi) に設定する必要があります。
ディスプレイの場合、このメンバーは 96 に設定する必要があります。
ulLogPixelsY
デバイスの高さ解像度を 1 インチあたりの論理ピクセル数で指定します。
プリンターの場合、このメンバーはプリンターの解像度 (dpi) に設定する必要があります。
ディスプレイの場合、このメンバーは 96 に設定する必要があります。
flTextCaps
Windows 3.1 テキスト機能を記述するフラグを指定します。 ドライバー TC_SCROLLBLT フラグがこのメンバーにある場合は、DrvBitBlt 関数または DrvCopyBits 関数ではなく、ドライバーが提供する DrvTextOut 関数を使用して、画面全体を再描画して、コンソールでテキストスクロールを実行する必要があることを示します。 画面間のビット ブロック転送が遅い場合、ドライバーはこのフラグを設定する必要があります。 このフラグが設定されていない場合、ドライバーは暗黙的に DrvBitBlt/DrvCopyBits を通じてテキスト スクロールを実行するコンソールを要求します。
ulDACRed
ulDACGreen
ulDACBlue
指定した色の DAC ビットの表示数を指定します。
ulAspectX
デバイス ピクセルの相対幅を 1 から 1000 の範囲で指定します。
ulAspectY
デバイス ピクセルの相対的な高さを 1 から 1000 の範囲で指定します。
ulAspectXY
ulAspectX と ulAspectY の平方和の平方根を指定します。
xStyleStep
x-major 行 dx のスタイルアドバンスの分子を指定 します。 詳細については、次の 「解説 」セクションおよび スタイル付き化粧品ラインを参照してください。
yStyleStep
y-major 線 dy のスタイルアドバンスの分子を指定 します。 詳細については、次の 「解説 」セクションおよび スタイル付き化粧品ラインを参照してください。
denStyleStep
スタイルアドバンス D の分母を指定します。詳細については、次の 「解説 」セクションおよび スタイル付き化粧品ラインを参照してください。
ptlPhysOffset
サーフェスの書き込み不可能な余白のサイズ (ピクセル単位) を含む POINTL 構造体を指定します。
szlPhysSize
書き込み不可能な余白を含む、サーフェス全体のサイズをピクセル単位で含む SIZEL 構造体を指定します。 SIZEL 構造体は、 SIZE 構造体と同じです。
ulNumPalReg
インデックス付きデバイスのパレット レジスタの数を指定します。
ciDevice
CIE 座標空間でデバイスの色を定義する COLORINFO 構造体です。
ulDevicePelsDPI
プリンターの場合は、ピクセルが重なったり間隔を空けたりせずに並べてレイアウトされている場合は、1 インチあたりのピクセル数 (ドットまたはノズル) を指定します。 たとえば、ピクセルのサイズが 0.001 インチの場合、この値は 0.001 で 1 除算されます。 メンバーが 0 の場合、GDI ハーフトニングでは、すべてのピクセルが重なり合っていない状態で接続されている前提に基づいて、この数値が計算されます。
ほとんどのプリンターの物理ドット サイズは測定されたドット サイズよりも大きいため、GDI では、セル サイズ (パターン サイズ) に基づいて、配置できる物理ドットの数を概算するためにこの値を使用します。 次に、ログ回帰が実行され、最も直線的なものが決定されます。つまり、重複するデバイス ピクセル カバレッジ (ドット ゲイン) を最適化するために、最適なカバレッジを得るためにドットを配置する必要があります。
ディスプレイの場合、このメンバーは 0 に設定する必要があります。
ulPrimaryOrder
ハーフトーン出力のデバイスの原色または平面番号のビット順序を指定します。 このメンバーには、次の表に示す値のいずれかを指定できます。
フラグ | 説明 |
---|---|
PRIMARY_ORDER_ABC | デバイスの出力順序は RGB または CMY です。 赤色またはシアンは最下位ビットです。青または黄色が最も重要なビットに含まれます。 |
PRIMARY_ORDER_ACB | デバイスの出力順序は RBG または CYM です。 赤色またはシアンは最下位ビットです。緑またはマゼンタは最も重要なビットにあります。 |
PRIMARY_ORDER_BAC | デバイスの出力順序は GRB または MCY です。 緑またはマゼンタは最下位ビットに含まれます。青または黄色が最も重要なビットに含まれます。 |
PRIMARY_ORDER_BCA | デバイスの出力順序は GBR または MYC です。 緑またはマゼンタは最下位ビットに含まれます。赤またはシアンは最も重要なビットにあります。 |
PRIMARY_ORDER_CBA | デバイスの出力順序は BGR または YMC です。 青または黄色は最下位ビットです。赤またはシアンは最も重要なビットにあります。 |
PRIMARY_ORDER_CAB | デバイスの出力順序は BRG または YCM です。 青または黄色は最下位ビットです。緑またはマゼンタは最も重要なビットにあります。 |
ulHTPatternSize
ハーフトーン パターンのサイズを指定します。 AxB M で終わる値は、AxB パターンのバリエーションです。つまり、SIZEAxB と SIZE_AxB_M は、A x B パターンで点灯するピクセルによって異なります。 このメンバーには、次のいずれかの値を指定できます。
- HT_PATSIZE_2x2
- HT_PATSIZE_2x2_M
- HT_PATSIZE_4x4
- HT_PATSIZE_4x4_M
- HT_PATSIZE_6x6
- HT_PATSIZE_6x6_M
- HT_PATSIZE_8x8
- HT_PATSIZE_8x8_M
- HT_PATSIZE_10x10
- HT_PATSIZE_10x10_M
- HT_PATSIZE_12x12
- HT_PATSIZE_12x12_M
- HT_PATSIZE_14x14
- HT_PATSIZE_14x14_M
- HT_PATSIZE_16x16
- HT_PATSIZE_16x16_M
- HT_PATSIZE_SUPERCELL
- HT_PATSIZE_SUPERCELL_M
- HT_PATSIZE_USER
- HT_PATSIZE_MAX_INDEX
- HT_PATSIZE_DEFAULT
ulHTOutputFormat
ハーフトーンに適した出力形式を指定します。 HT_FORMAT_4BPPでは 8 色のフルインテンシティカラーのみを使用し、HT_FORMATP_IRGBは半強度の色を含む 16 色をすべて使用します。 HT_FORMAT_16BPPには、5 x 5 x 5 の形式 (色あたり 5 ビット) が使用されていると想定されます。 このメンバーには、次のいずれかの値を指定できます。
- HT_FORMAT_1BPP
- HT_FORMAT_4BPP
- HT_FORMAT_4BPP_IRGB
- HT_FORMAT_8BPP
- HT_FORMAT_16BPP
- HT_FORMAT_24BPP
- HT_FORMAT_32BPP
flHTFlags
デバイスを記述するフラグの組み合わせを指定します。 これらのフラグは、ハーフトニングに必要です。 このメンバーには、次の値の組み合わせを指定できます。
フラグ | 説明 |
---|---|
HT_FLAG_8BPP_CMY332_MASK | flHTFlags の上位 8 ビット (ビット 24 から 31) をクリアするために使用されるフラグ。 その後、MAKE_CMY332_MASK マクロを使用して、これらのビットを 8 ビット/ピクセル CMY モードのインク レベル情報で設定できます。 詳細については、「 GDI 8 ビット/ピクセル CMY マスク モードの使用 」を参照してください。 |
HT_FLAG_ADDITIVE_PRIMS | デバイスのプライマリは加法です。 |
HT_FLAG_DO_DEVCLR_XFORM | 一般的な色の修正を実行するように GDI に要求します。 |
HT_FLAG_HAS_BLACK_DYE | デバイスは、別々の黒い染料を持っています。 |
|
デバイス内の用紙は通常よりも多くのインクを吸収するため、GDI は紙にレンダリングするインクを少なくする必要があります。 これらのフラグは、インクの相対的な吸収量を示HT_FLAG_HIGHER_INK_ABSORPTION、HT_FLAG_HIGH_INK_ABSORPTIONよりも吸収量が多いが、HT_FLAG_HIGHEST_INK_ABSORPTION未満であることを示します。 |
|
HT_FLAG_HIGH/HIGHER/HIGHEST_INK_ABSORPTIONおよびHT_FLAG_LOW/LOWER/LOWEST_INK_ABSORPTIONを定義するために使用されるフラグ。 |
HT_FLAG_INK_HIGH_ABSORPTION | HT_FLAG_HIGH/HIGHER/HIGHEST_INK_ABSORPTIONを定義するために使用されるフラグ。 |
HT_FLAG_INVERT_8BPP_BITMASK_IDX | GDI ハーフトーンは、CMY_INVERTED モード パレットを使用して、8 ビット/ピクセルの ask モードサーフェス ビットマップをレンダリングする必要があります。 CMY_INVERTED モード パレットの説明と要件については、「 GDI 8 ビット/ピクセル CMY マスク モードの使用」を参照してください。 |
|
デバイス内の用紙は通常よりも少ない量のインクを吸収するため、GDI はより多くのインクを用紙にレンダリングする必要があります。 これらのフラグはインクの相対的な吸収量を示し、HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_LOW_INK_ABSORPTIONよりも吸収が少なく、HT_FLAG_LOWEST_INK_ABSORPTIONを超えています。 |
HT_FLAG_NORMAL_INK_ABSORPTION | デバイス内の紙は通常のインク量を吸収します。 |
HT_FLAG_OUTPUT_CMY | デバイスでは、RGB プライマリではなく CMY プライマリが使用されます。 このフラグ値は、1 つの bpp および 4 つの bpp 変換先サーフェスにのみ適用されます。 |
HT_FLAG_PRINT_DRAFT_MODE | GDI のアンチエイリアス コードを無効にします。 |
HT_FLAG_SQUARE_DEVICE_PEL | デバイスピクセルは丸ではなく正方形です(ディスプレイのみ -- プリンターは丸いピクセルを必要とします)。 |
HT_FLAG_USE_8BPP_BITMASK | デバイスはモノクロ印刷を使用します。 |
ulVRefresh
現在の表示モードのビデオ更新レート。 これは、現在のモードの更新レートのミニポート ドライバーによって返される値です。
コントロール パネルの Display プログラムには、ulVRefresh メンバーに含まれる更新レートが表示されます。
ulBltAlignment
このメンバーは、デバイスへのビット ブロック転送に推奨される x アラインメントを示します。 値 0 は、ビット ブロック転送が高速化されることを示します。その他の負でない数値は、ビット ブロック転送が高速化されていないことを示し、推奨される水平方向の配置をピクセルの倍数として提供します。
この値は、ウィンドウ位置の既定の配置を決定するためにシステムによって使用され、セットアップ時に初期のフルドラッグの既定値を設定するためにも使用されます。 値 0 は、フル ドラッグが既定でオンになっていることを示します。0 以外の値は、フルドラッグが既定でオフになっていることを示します。
ulPanningHorzRes
ulPanningVertRes
ドライバーによって無視され、ゼロ初期化されたままになります。
xPanningAlignment
yPanningAlignment
ドライバーによって無視され、ゼロ初期化されたままになります。
cxHTPat
cyHTPat
ユーザー指定のハーフトーン ディザ パターンの幅と高さをピクセル単位で指定します。 cxHTPat の値は、HT_USERPAT_CX_MINからHT_USERPAT_CX_MAXまでの範囲内である必要があります。 cyHTPat の値は、HT_USERPAT_CY_MAXまでのHT_USERPAT_CY_MIN範囲内である必要があります。 これらの定数は winddi.h で定義されます。 詳細については、次 の「解説 」セクションを参照してください。
pHTPatA
pHTPatB
pHTPatC
ulPrimaryOrder メンバーのPRIMARY_ORDER_XXX値で定義されているように、主色 A、B、C のユーザー定義のハーフトーン ディザ パターンをそれぞれポイントします。 各ディザ パターンは、cyHTPat による cxHTPat サイズの有効な 2 次元バイト配列である必要があります。 詳細については、次 の「解説 」セクションを参照してください。
flShadeBlend
デバイスのシェーディング機能とブレンド機能を示すフラグのセットを指定します。 ディスプレイ ドライバーは、このメンバーを無視し、0 に設定したままにする必要があります。 プリンター ドライバーの場合、ドライバーがこのメンバーに配置する値は、アプリケーションが GetDeviceCaps(hdc, SHADEBLENDCAPS) を呼び出すときに GDI が報告する値です。 GetDeviceCaps 関数については、Microsoft Window SDK のドキュメントを参照してください。
ulPhysicalPixelCharacteristics
ディスプレイ デバイスでピクセルを形成するようにカラー フラグメントを構成する方法を指定します。 ディスプレイ デバイス上のカラー フラグメントは、 フレーム バッファー内の RGB 順序とは完全に関係なく、RGB 順または BGR 順に配置できます。 カラー フラグメントは、1 行のすべてのフラグメントが同じ色である水平ストライプで構成できます。 または、1 つの列内のすべてのフラグメントが同じ色である垂直ストライプで色フラグメントを構成することもできます。 垂直方向のストライピングは、ピクセルごとに 3 つの個別のフラグメントを 1 行に効果的に提供するため、水平方向のサブピクセル解像度が高くなります。
ulPhysicalPixelCharacteristics メンバーは、次の表に示す値のいずれかに設定する必要があります。
値 | 意味 |
---|---|
PPC_DEFAULT | ディスプレイ デバイスの物理ピクセル情報が不明です。 |
PPC_BGR_ORDER_HORIZONTAL_STRIPES | ディスプレイ デバイス上の物理的な色のフラグメントは、上から下に、青、緑、赤の色のフラグメントの行に配置されます。 |
PPC_BGR_ORDER_VERTICAL_STRIPES | ディスプレイ デバイス上の物理的な色のフラグメントは、左から右に、青、緑、および赤の色のフラグメントの列に配置されます。 |
PPC_RGB_ORDER_HORIZONTAL_STRIPES | ディスプレイ デバイス上の物理的な色のフラグメントは、上から下に、赤、緑、青の色のフラグメントの行に配置されます。 |
PPC_RGB_ORDER_VERTICAL_STRIPES | ディスプレイ デバイス上の物理的な色のフラグメントは、左から右に、赤、緑、青の色のフラグメントの列に配置されます。 |
PPC_UNDEFINED |
ディスプレイ デバイスの物理ピクセル情報は既知ですが、指定された列挙体の 1 つとして表現することはできません。 列挙体は現在、LCD ベースのモニターに適用できます。 次のいずれかの条件が満たされた場合、ドライバーは ulPhysicalPixelCharacteristics をPPC_UNDEFINEDに設定する必要があります。 (このリストは包括的ではありませんが、最も一般的な条件について説明します)。
|
ulPhysicalPixelGamma
表示装置のガンマを指定します。 このメンバーは、物理ピクセルのガンマ、1000 の係数でスケーリング、または次のいずれかの値に設定する必要があります。 たとえば、ガンマ値 2.2 は 2200 として表されます。
値 | 意味 |
---|---|
PPG_DEFAULT | ドライバーには、デバイスのガンマに関する知識がありません。 |
PPG_SRGB | デバイスは sRGB ガンマを使用します。 |
注釈
GDI は、ドライバー提供の DrvEnablePDEV 関数を呼び出す前に、この構造体をゼロ初期化します。
xStyleStep、yStyleStep、denStyleStep の各メンバーは、化粧線の各ピクセルを描画する際に、化粧線スタイルを進める方法を定義します。 各ピクセルのスタイルに沿って高度な量は、線が x スタイルか y スタイルかに依存する分数として定義されます。 線が x スタイルの場合、スタイルは x 方向に移動した各ピクセルの小数部の量 dx/D だけ進みます。 それ以外の場合、スタイルは y 方向に移動した各ピクセルに 対して dy/D で進みます。
定義済みの線スタイルPS_DOTのドットは、それぞれ 1 単位長です。 ドライバーで xStyleStep が 1 として定義され 、denStyleStep が 5 として定義されている場合、点線の水平線は 5 ピクセルオンで構成され、その後に 5 ピクセルオフが繰り返されます。
キャップ メンバーが LONG 値であっても、これら 3 つの数値はそれぞれ 65536 未満である必要があります。 これらのスタイルの手順は、ライン内のドットとダッシュが出力デバイスで適切なサイズになるように、ドライバーによって定義されます。 水平方向と垂直方向のステップは、非Trivial縦横比を修正するために異なる場合があります。 たとえば、ピクセルが幅よりも 33% 高い EGA ディスプレイでは、次のように設定できます。
pdevcaps->xStyleStep = 3; // For an EGA
pdevcaps->yStyleStep = 4;
pdevcaps->denStyleStep = 12;
この場合、スタイルはピクセルごとに 3/12 または 1/4 進むため、水平方向の点線は 4 ピクセルオン、4 ピクセルオフです。 垂直点線は、3 ピクセルオン/3 ピクセルオフです。
スタイル付き線は、前の例のように、x と y の両方のスタイルステップをスタイル分母に均等に分割すると、見た目が良くなります。 これにより、常に同じ長さのダッシュとドットが表示されます。
GDI では、ビットマップ関数がデバイスが独自のサーフェイスで行うことを正確にエミュレートできるように、この情報が必要です。 アプリケーションはこの情報にアクセスして、スタイル付き線に対してどのピクセルをオンにするかを正確に判断できます。 「スタイル付き化粧線」も参照してください。
ハーフトーン関連のメンバー cxHTPat、 cyHTPat、 pHTPatA、 pHTPatB、 および pHTPatC は、OEM Unidrv レンダリング プラグインで使用して、1 つまたは 3 つの色で構成されるカスタム ハーフトーン パターンを定義できます。 これらのメンバーは、 ulHTPatternSize メンバーが HT_PATSIZE_USER に設定されている場合にのみチェックされます。 この場合、OEM はこれらのメンバーを使用して、リソース ファイルに格納されているデータまたは OEM カスタマイズ モジュールによって生成されたデータに基づいて、カスタム ハーフトーン パターンを定義できます。 cxHTPat メンバーと cyHTPat メンバーは、3 つの 2 次元ハーフトーン パターン配列の各サイズを定義します。 pHTPatA、pHTPatB、および pHTPatC メンバーは、各色のそれぞれのパターン配列を指します。 パターン配列が 1 つだけ使用されている場合、 pHTPatA、 pHTPatB、 および pHTPatC が指します。
ハーフトーン ディザ パターン内の特定の位置にある各バイトしきい値は、対応する出力プレーン位置のピクセルがオンかオフかを決定します。 パターン配列内の特定の位置のしきい値が 0 の場合は、対応するピクセル位置が無視されることを示します (黒)。 1 ~ 255 のしきい値は、255 レベルの灰色のディザ パターンを提供します。出力プレーン内のピクセル値がその場所のしきい値以上の場合、ピクセルはオンになります。 対応するしきい値より小さいピクセル値を指定すると、出力プレーンでそのピクセルがオフになります。 詳細については、「Microsoft のプリンター ドライバーのカスタマイズ」の「カスタマイズされたハーフトニング」を参照してください。
要件
要件 | 値 |
---|---|
Header | winddi.h (Winddi.h を含む) |