Struktur GDIINFO (winddi.h)
Struktur GDIINFO menjelaskan kemampuan grafis perangkat tertentu.
Sintaks
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;
Anggota
ulVersion
Menentukan nomor versi driver. Urutan byte ulVersion memiliki bentuk berikut.
Urutan tinggi 16 bit harus diatur ke nol. Bit 8 hingga 15 menentukan nomor versi sistem operasi Microsoft tempat driver dirancang. Urutan tinggi 4 bit dari rentang ini menentukan jumlah utama versi, 4 bit berurutan rendah berisi jumlah minor versi. UlVersion 8 bit urutan rendah menentukan nomor versi driver tampilan; nilai ini harus dinaikkan untuk setiap rilis file biner driver tampilan.
Program Tampilan di Panel Kontrol menunjukkan nomor versi yang terkandung dalam ulVersion, bersama dengan informasi spesifik driver lainnya.
ulTechnology
Menentukan teknologi perangkat. Anggota ini bisa menjadi salah satu nilai yang tercantum dalam tabel berikut ini.
Nilai | Makna |
---|---|
DT_CHARSTREAM | Font perangkat saja |
DT_PLOTTER | Vector plotter |
DT_RASCAMERA | Kamera raster |
DT_RASDISPLAY | Tampilan raster |
DT_RASPRINTER | Printer raster |
ulHorzSize
Menentukan lebar permukaan fisik. Nilai positif menunjukkan bahwa lebar berada dalam satuan milimeter, sementara nilai negatif menunjukkan bahwa lebar berada dalam satuan mikrometer.
ulVertSize
Menentukan tinggi permukaan fisik. Nilai positif menunjukkan bahwa tinggi berada dalam satuan milimeter, sementara nilai negatif menunjukkan bahwa tinggi berada dalam satuan mikrometer.
ulHorzRes
Menentukan lebar dalam piksel permukaan fisik (perangkat tampilan), atau permukaan yang dapat dicetak (printer).
Lihat juga ulDesktopHorzRes.
ulVertRes
Menentukan tinggi dalam piksel permukaan fisik (perangkat tampilan), atau permukaan yang dapat dicetak (printer).
cBitsPixel
Menentukan jumlah bit yang berdekatan di setiap bidang warna. Jumlah total bit per piksel adalah produk dari cBitsPixel dan cPlanes.
cPlanes
Menentukan jumlah bidang warna.
ulNumColors
Untuk perangkat palettized, ulNumColors menentukan jumlah entri dalam palet warna default. Untuk perangkat yang tidak diletakkan (yang tidak termasuk printer), ulNumColors diatur ke -1.
flRaster
Dicadangkan dan harus dibiarkan diatur ke nol.
ulLogPixelsX
Menentukan resolusi lebar perangkat dalam piksel logis per inci.
Untuk printer, anggota ini harus diatur ke resolusi printer di dpi.
Untuk tampilan, anggota ini harus diatur ke 96.
ulLogPixelsY
Menentukan resolusi tinggi perangkat dalam piksel logis per inci.
Untuk printer, anggota ini harus diatur ke resolusi printer di dpi.
Untuk tampilan, anggota ini harus diatur ke 96.
flTextCaps
Menentukan bendera yang menjelaskan kemampuan teks Windows 3.1. Jika bendera TC_SCROLLBLT driver ada di anggota ini, itu menunjukkan bahwa konsol harus melakukan pengguliran teks dengan menggambar ulang seluruh layar, menggunakan fungsi DrvTextOut yang disediakan driver daripada fungsi DrvBitBlt atau DrvCopyBits . Driver harus mengatur bendera ini jika transfer bit-block layar ke layar lambat. Jika bendera ini tidak diatur, driver secara implisit meminta agar konsol melakukan gulir teks melalui DrvBitBlt/DrvCopyBits.
ulDACRed
ulDACGreen
ulDACBlue
Menentukan jumlah tampilan bit DAC untuk warna yang ditentukan.
ulAspectX
Menentukan lebar relatif piksel perangkat, dalam rentang satu hingga 1000.
ulAspectY
Menentukan tinggi relatif piksel perangkat, dalam rentang satu hingga 1000.
ulAspectXY
Menentukan akar kuadrat dari jumlah kuadrat ulAspectX dan ulAspectY.
xStyleStep
Menentukan pembiih gaya lanjutan untuk baris x-mayor, dx. Untuk informasi tambahan, lihat bagian Keterangan berikut dan Baris Kosmetik Gaya.
yStyleStep
Menentukan pembinggu gaya maju untuk baris y-major, dy. Untuk informasi tambahan, lihat bagian Keterangan berikut dan Baris Kosmetik Gaya.
denStyleStep
Menentukan denominator gaya lanjutan, D. Untuk informasi tambahan, lihat bagian Keterangan berikut dan Baris Kosmetik Gaya.
ptlPhysOffset
Menentukan struktur POINTL yang berisi ukuran, dalam piksel, dari margin permukaan yang tidak dapat ditulis.
szlPhysSize
Menentukan struktur SIZEL yang berisi ukuran, dalam piksel, dari seluruh permukaan, termasuk margin yang tidak dapat ditulis. Struktur SIZEL identik dengan struktur SIZE .
ulNumPalReg
Menentukan jumlah register palet untuk perangkat terindeks.
ciDevice
Adalah struktur COLORINFO yang mendefinisikan warna perangkat dalam ruang koordinat CIE.
ulDevicePelsDPI
Untuk printer, menentukan jumlah piksel (atau titik, atau nozzle) per inci jika piksel diletakkan berdampingan tanpa tumpang tindih atau spasi di antaranya. Misalnya, jika ukuran piksel adalah 0,001 inci, nilai ini sama dengan satu dibagi dengan 0,001. Jika anggota nol, halftoning GDI menghitung angka ini berdasarkan asumsi bahwa semua piksel tersambung tanpa tumpang tindih.
Karena ukuran titik fisik untuk sebagian besar printer lebih besar dari ukuran titik yang diukur, GDI menggunakan nilai ini untuk memperkirakan berapa banyak titik fisik yang dapat ditempatkan, berdasarkan ukuran sel (ukuran pola). Regresi log kemudian dilakukan untuk menentukan apa yang paling linier; yaitu, di mana titik-titik harus ditempatkan untuk cakupan terbaik untuk mengoptimalkan cakupan piksel perangkat yang tumpang tindih (perolehan titik).
Untuk tampilan, anggota ini harus diatur ke nol.
ulPrimaryOrder
Menentukan urutan bit warna utama perangkat atau nomor bidang untuk output halftone. Anggota ini bisa menjadi salah satu nilai yang tercantum dalam tabel berikut ini.
Bendera | Makna |
---|---|
PRIMARY_ORDER_ABC | Urutan output perangkat adalah RGB atau CMY. Merah atau sian berada di bit yang paling tidak signifikan; biru atau kuning berada di bit yang paling signifikan. |
PRIMARY_ORDER_ACB | Urutan output perangkat adalah RBG atau CYM. Merah atau sian berada di bit yang paling tidak signifikan; hijau atau magenta berada di bit yang paling signifikan. |
PRIMARY_ORDER_BAC | Urutan output perangkat adalah GRB atau MCY. Hijau atau magenta berada di bit yang paling tidak signifikan; biru atau kuning berada di bit yang paling signifikan. |
PRIMARY_ORDER_BCA | Urutan output perangkat adalah GBR atau MYC. Hijau atau magenta berada di bit yang paling tidak signifikan; merah atau berseri berada di bit yang paling signifikan. |
PRIMARY_ORDER_CBA | Urutan output perangkat adalah BGR atau YMC. Biru atau kuning berada di bit yang paling tidak signifikan; merah atau berseri berada di bit yang paling signifikan. |
PRIMARY_ORDER_CAB | Urutan output perangkat adalah BRG atau YCM. Biru atau kuning berada di bit yang paling tidak signifikan; hijau atau magenta berada di bit yang paling signifikan. |
ulHTPatternSize
Menentukan ukuran pola halftone. Nilai yang berakhiran AxBM adalah variasi pola AxB . Dengan kata lain, UKURANAxB dan SIZE_AxB_M berbeda di mana piksel dinyalakan dalam pola A x B. Anggota ini bisa menjadi salah satu nilai berikut:
- 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
Menentukan format output pilihan untuk halftone. HT_FORMAT_4BPP hanya menggunakan 8 warna intensitas penuh sementara HT_FORMATP_IRGB menggunakan semua 16 warna termasuk warna setengah intensitas. Diasumsikan bahwa format 5 x 5 x 5 (5 bit per warna) digunakan untuk HT_FORMAT_16BPP. Anggota ini bisa menjadi salah satu nilai berikut:
- HT_FORMAT_1BPP
- HT_FORMAT_4BPP
- HT_FORMAT_4BPP_IRGB
- HT_FORMAT_8BPP
- HT_FORMAT_16BPP
- HT_FORMAT_24BPP
- HT_FORMAT_32BPP
flHTFlags
Menentukan kombinasi bendera yang menjelaskan perangkat. Bendera ini diperlukan untuk halftoning. Anggota ini bisa menjadi kombinasi dari nilai berikut:
Bendera | Makna |
---|---|
HT_FLAG_8BPP_CMY332_MASK | Bendera yang digunakan untuk membersihkan delapan bit atas flHTFlags (bit 24 hingga 31). Makro MAKE_CMY332_MASK kemudian dapat digunakan untuk mengatur bit ini dengan informasi tingkat tinta mode CMY 8-bit per piksel. Lihat Menggunakan Mode Masker CMY GDI 8-Bit-Per-Pixel untuk informasi selengkapnya. |
HT_FLAG_ADDITIVE_PRIMS | Perangkat utama bersifat aditif. |
HT_FLAG_DO_DEVCLR_XFORM | Meminta GDI untuk melakukan koreksi warna generik. |
HT_FLAG_HAS_BLACK_DYE | Perangkat memiliki pewarna hitam terpisah. |
|
Kertas dalam perangkat menyerap lebih dari jumlah tinta normal, sehingga GDI harus merender lebih sedikit tinta ke kertas. Bendera ini menunjukkan jumlah relatif penyerapan tinta, dengan HT_FLAG_HIGHER_INK_ABSORPTION menunjukkan lebih banyak penyerapan daripada HT_FLAG_HIGH_INK_ABSORPTION, tetapi kurang dari HT_FLAG_HIGHEST_INK_ABSORPTION. |
|
Bendera yang digunakan untuk menentukan HT_FLAG_HIGH/HIGHER/HIGHEST_INK_ABSORPTION dan HT_FLAG_LOW/LOWER/LOWEST_INK_ABSORPTION. |
HT_FLAG_INK_HIGH_ABSORPTION | Bendera yang digunakan untuk menentukan HT_FLAG_HIGH/HIGHER/HIGHEST_INK_ABSORPTION. |
HT_FLAG_INVERT_8BPP_BITMASK_IDX | Halftone GDI harus merender bitmap permukaan mode ask 8-bit per piksel menggunakan palet mode CMY_INVERTED. Lihat Menggunakan Mode Masker CMY GDI 8-Bit-Per-Pixel untuk deskripsi dan persyaratan palet mode CMY_INVERTED. |
|
Kertas dalam perangkat menyerap kurang dari jumlah tinta normal, sehingga GDI harus merender lebih banyak tinta ke kertas. Bendera ini menunjukkan jumlah relatif penyerapan tinta, dengan HT_FLAG_LOWER_INK_ABSORPTION menunjukkan penyerapan yang lebih sedikit daripada HT_FLAG_LOW_INK_ABSORPTION, tetapi lebih dari HT_FLAG_LOWEST_INK_ABSORPTION. |
HT_FLAG_NORMAL_INK_ABSORPTION | Kertas dalam perangkat menyerap jumlah tinta normal. |
HT_FLAG_OUTPUT_CMY | Perangkat menggunakan utama CMY daripada utama RGB. Nilai bendera ini hanya berlaku untuk permukaan tujuan 1 bpp dan 4 bpp. |
HT_FLAG_PRINT_DRAFT_MODE | Menonaktifkan kode antialias GDI. |
HT_FLAG_SQUARE_DEVICE_PEL | Piksel perangkat persegi bukan bulat (hanya menampilkan -- printer memerlukan piksel bulat). |
HT_FLAG_USE_8BPP_BITMASK | Perangkat menggunakan pencetakan monokrom. |
ulVRefresh
Laju refresh video untuk mode tampilan saat ini. Ini adalah nilai yang dikembalikan oleh driver miniport untuk laju refresh untuk mode saat ini.
Program Tampilan di Panel Kontrol menampilkan laju refresh yang terkandung dalam anggota ulVRefresh.
ulBltAlignment
Anggota ini menunjukkan x-alignment pilihan untuk transfer blok bit ke perangkat. Nilai nol menunjukkan bahwa transfer blok bit dipercepat; angka nonnegatif lainnya menunjukkan bahwa transfer blok bit tidak dipercepat, dan memberikan perataan horizontal pilihan sebagai kelipatan piksel.
Nilai ini digunakan oleh sistem untuk menentukan perataan default untuk posisi jendela dan juga digunakan untuk mengatur default seret penuh awal selama penyiapan. Nilai nol menunjukkan bahwa seret penuh harus aktif secara default; nilai apa pun selain nol menunjukkan bahwa seret penuh harus nonaktif secara default.
ulPanningHorzRes
ulPanningVertRes
Harus diabaikan oleh driver dan tetap diinisialisasi nol.
xPanningAlignment
yPanningAlignment
Harus diabaikan oleh driver dan tetap diinisialisasi nol.
cxHTPat
cyHTPat
Tentukan lebar dan tinggi, masing-masing, dalam piksel, dari pola halftone dither yang disediakan pengguna. Nilai cxHTPat harus dalam rentang HT_USERPAT_CX_MIN hingga HT_USERPAT_CX_MAX, inklusif. Nilai cyHTPat harus dalam rentang HT_USERPAT_CY_MIN hingga HT_USERPAT_CY_MAX, inklusif. Konstanta ini didefinisikan dalam winddi.h. Lihat bagian Keterangan berikut untuk informasi selengkapnya.
pHTPatA
pHTPatB
pHTPatC
Arahkan ke pola halftone dither yang ditentukan pengguna untuk warna utama A, B, dan C, masing-masing, sebagaimana didefinisikan oleh nilai PRIMARY_ORDER_XXX di anggota ulPrimaryOrder . Setiap pola dither harus merupakan array byte dua dimensi yang valid dari ukuran cxHTPat oleh cyHTPat. Lihat bagian Keterangan berikut untuk informasi selengkapnya.
flShadeBlend
Menentukan sekumpulan bendera yang menunjukkan kemampuan bayangan dan perpaduan perangkat. Driver tampilan harus mengabaikan anggota ini dan harus membiarkannya diatur ke nol. Untuk driver printer, nilai yang ditempat driver dalam anggota ini adalah nilai yang dilaporkan GDI ketika aplikasi memanggil GetDeviceCaps(hdc, SHADEBLENDCAPS). Fungsi GetDeviceCaps dijelaskan dalam dokumentasi Microsoft Window SDK.
ulPhysicalPixelCharacteristics
Menentukan cara fragmen warna dikonfigurasi untuk membentuk piksel pada perangkat tampilan. Fragmen warna pada perangkat tampilan dapat diatur dalam urutan RGB, atau dalam urutan BGR, sepenuhnya independen dari pemesanan RGB dalam buffer bingkai. Fragmen warna dapat dikonfigurasi dalam garis horizontal di mana semua fragmen dalam satu baris berwarna sama. Atau, fragmen warna dapat dikonfigurasi dalam garis-garis vertikal, di mana semua fragmen dalam satu kolom berwarna sama. Garis vertikal lebih disukai, karena secara efektif menyediakan tiga fragmen terpisah secara berturut-turut untuk setiap piksel, sehingga memberikan resolusi subpiksel horizontal yang lebih besar.
Anggota ulPhysicalPixelCharacteristics harus diatur ke salah satu nilai yang diperlihatkan dalam tabel berikut ini:
Nilai | Makna |
---|---|
PPC_DEFAULT | Tampilkan informasi piksel fisik perangkat tidak diketahui. |
PPC_BGR_ORDER_HORIZONTAL_STRIPES | Fragmen warna fisik pada perangkat tampilan disusun, dari atas ke bawah, dalam baris fragmen warna biru, hijau, dan merah. |
PPC_BGR_ORDER_VERTICAL_STRIPES | Fragmen warna fisik pada perangkat tampilan disusun, dari kiri ke kanan, dalam kolom fragmen warna biru, hijau, dan merah. |
PPC_RGB_ORDER_HORIZONTAL_STRIPES | Fragmen warna fisik pada perangkat tampilan disusun, dari atas ke bawah, dalam baris fragmen warna merah, hijau, dan biru. |
PPC_RGB_ORDER_VERTICAL_STRIPES | Fragmen warna fisik pada perangkat tampilan disusun, dari kiri ke kanan, dalam kolom fragmen warna merah, hijau, dan biru. |
PPC_UNDEFINED |
Menampilkan informasi piksel fisik perangkat diketahui tetapi tidak dapat dinyatakan sebagai salah satu enumerasi yang diberikan. Enumerasi saat ini berlaku untuk monitor berbasis LCD. Driver harus mengatur ulPhysicalPixelCharacteristics ke PPC_UNDEFINED ketika salah satu kondisi berikut terpenuhi. (Daftar ini tidak komprehensif, tetapi mencakup kondisi yang paling umum.)
|
ulPhysicalPixelGamma
Menentukan gamma perangkat tampilan. Anggota ini harus diatur ke gamma piksel fisik, diskalakan oleh faktor 1000, atau ke salah satu nilai berikut. Misalnya, nilai gamma 2,2 akan direpresentasikan sebagai 2200.
Nilai | Makna |
---|---|
PPG_DEFAULT | Driver tidak memiliki pengetahuan tentang gamma untuk perangkat. |
PPG_SRGB | Perangkat menggunakan gamma sRGB. |
Keterangan
GDI menginisialisasi struktur ini sebelum memanggil fungsi DrvEnablePDEV yang disediakan driver.
Anggota xStyleStep, yStyleStep, dan denStyleStep menentukan bagaimana gaya garis kosmetik harus maju saat menggambar setiap piksel garis kosmetik. Jumlah lanjutan di sepanjang gaya untuk setiap piksel didefinisikan sebagai pecahan yang bergantung pada apakah garis ditata x atau bergaya y. Jika garis bergaya x, gaya akan dilanjutkan dengan jumlah pecahan dx/D untuk setiap piksel yang dipindahkan ke arah x. Jika tidak, gaya akan maju menurut dy/D untuk setiap piksel yang dipindahkan ke arah y.
Titik-titik dalam gaya garis yang telah ditentukan sebelumnya PS_DOT masing-masing satu unit panjangnya. Jika driver mendefinisikan xStyleStep sebagai satu dan denStyleStep sebagai 5, garis horizontal putus-putus terdiri dari 5 piksel-on diikuti oleh 5 piksel-off, diulang.
Masing-masing dari ketiga angka ini harus kurang dari 65536, meskipun anggota caps adalah nilai LONG. Langkah-langkah gaya ini ditentukan oleh driver untuk memastikan bahwa titik-titik dan tanda hubung dalam garis adalah ukuran yang menyenangkan pada perangkat output. Langkah-langkah horizontal dan vertikal bisa berbeda untuk memperbaiki rasio aspek nontrivial. Misalnya, pada layar EGA, yang pikselnya 33 persen lebih tinggi dari lebarnya, Anda dapat mengatur:
pdevcaps->xStyleStep = 3; // For an EGA
pdevcaps->yStyleStep = 4;
pdevcaps->denStyleStep = 12;
Dalam hal ini, garis putus-putus horizontal adalah 4 piksel aktif, 4 piksel-off, karena gaya maju sebesar 3/12 atau 1/4 untuk setiap piksel. Garis putus-putus vertikal adalah 3 piksel aktif/3 piksel-off.
Garis bergaya terlihat lebih baik jika langkah gaya x dan y dibagi secara merata menjadi penyebut gaya, seperti yang mereka lakukan dalam contoh sebelumnya. Ini memberikan tanda hubung dan titik yang selalu panjangnya sama.
GDI membutuhkan informasi ini sehingga fungsi bitmapnya dapat meniru dengan tepat apa yang dilakukan perangkat di permukaannya sendiri. Aplikasi dapat mengakses informasi ini untuk menentukan dengan tepat piksel mana yang akan diaktifkan untuk garis bergaya. Lihat juga Garis Kosmetik Gaya.
Anggota terkait halftone, cxHTPat, cyHTPat, pHTPatA, pHTPatB, dan pHTPatC, dapat digunakan dalam plug-in rendering OEM Unidrv untuk menentukan pola halftone kustom yang terdiri dari satu atau tiga warna. Anggota ini hanya diperiksa jika anggota ulHTPatternSize diatur ke HT_PATSIZE_USER. Dalam hal ini OEM dapat menggunakan anggota ini untuk menentukan pola halftone kustom, berdasarkan data yang disimpan dalam file sumber daya atau dihasilkan oleh modul penyesuaian OEM. Anggota cxHTPat dan cyHTPat menentukan ukuran masing-masing dari array pola halftone dua dimensi. Anggota pHTPatA, pHTPatB, dan pHTPatC menunjuk ke array pola masing-masing untuk setiap warna. Jika hanya satu array pola yang digunakan, pHTPatA, pHTPatB, dan pHTPatC menunjuknya.
Setiap ambang byte pada lokasi tertentu dalam pola halftone dither menentukan apakah piksel di lokasi sarana output yang sesuai akan aktif atau nonaktif. Nilai ambang nol pada lokasi tertentu dalam array pola menunjukkan bahwa lokasi piksel yang sesuai diabaikan (berwarna hitam). Nilai ambang batas dari 1 hingga 255 menyediakan pola dither dengan 255 tingkat abu-abu; jika nilai piksel dalam bidang output lebih besar dari atau sama dengan nilai ambang batas untuk lokasi tersebut, piksel diaktifkan. Nilai piksel yang kurang dari nilai ambang yang sesuai menyebabkan pikselnya dimatikan di bidang output. Lihat Halftoning yang Disesuaikan dalam Menyesuaikan Driver Printer Microsoft untuk informasi selengkapnya.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | winddi.h (termasuk Winddi.h) |