Структура 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 бит высокого порядка необходимо задать нулевое значение. Разряды от 8 до 15 указывают номер версии операционной системы Майкрософт, для которой предназначен драйвер. 4 бита высокого порядка в этом диапазоне указывают основное число версии, 4 бита низкого порядка содержат дополнительное число версии. 8 битов ulVersion нижнего порядка указывают номер версии драйвера дисплея; Это значение должно увеличиваться для каждого выпуска двоичного файла драйвера отображения.
Программа Отображения в панель управления указывает номер версии, содержащийся в 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
Зарезервировано и должно быть равно нулю.
ulLogPixelsX
Задает разрешение ширины устройства в логических пикселях на дюйм.
Для принтеров для этого элемента должно быть задано разрешение принтера в разрешении на дюйм.
Для дисплеев этот элемент должен иметь значение 96.
ulLogPixelsY
Задает разрешение высоты устройства в логических пикселях на дюйм.
Для принтеров для этого элемента должно быть задано разрешение принтера в разрешении на дюйм.
Для дисплеев этот элемент должен иметь значение 96.
flTextCaps
Задает флаг, описывающий возможности текста в Windows 3.1. Если флаг TC_SCROLLBLT драйвера находится в этом элементе, это означает, что консоль должна выполнять прокрутку текста, перерисовав весь экран, используя предоставленную драйвером функцию DrvTextOut , а не функции DrvBitBlt или DrvCopyBits . Драйвер должен установить этот флаг, если передача битов с экрана на экран выполняется медленно. Если этот флаг не установлен, драйвер неявно запрашивает, чтобы консоль выполняла прокрутку текста по DrvBitBlt/DrvCopyBits.
ulDACRed
ulDACGreen
ulDACBlue
Указывает количество отображаемых битов приложения уровня данных для указанного цвета.
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
Структура COLORINFO , которая определяет цвета устройства в пространстве координат CIE.
ulDevicePelsDPI
Для принтеров указывает количество пикселей (точек или сопел) на дюйм, если пиксели расположены рядом без перекрытия или интервала между ними. Например, если размер пикселя составляет 0,001 дюйма, это значение равно 0,001. Если член равен нулю, полуэлементирование GDI вычисляет это число на основе предположения, что все пиксели связаны без перекрытия.
Так как размер физической точки для большинства принтеров больше измеряемого размера точек, GDI использует это значение для приблизительного количества физических точек, которые можно разместить на основе размера ячейки (размера шаблона). Затем выполняется регрессия журнала, чтобы определить, что является наиболее линейным; то есть, где точки должны быть размещены для оптимального покрытия, чтобы оптимизировать перекрывающийся охват пикселей устройства (получение точек).
Для дисплеев этот элемент должен быть равен нулю.
ulPrimaryOrder
Задает порядковый порядок основных цветов или номеров плоскости устройства для вывода полутонов. Этот элемент может быть одним из значений, перечисленных в следующей таблице.
Flag | Значение |
---|---|
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
Задает размер полутонового шаблона. Значения, заканчивающиеся на AxBM, являются вариантами шаблонов AxB . Другими словами, размерAxB и 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
Задает сочетание флагов, описывающих устройство. Эти флаги необходимы для полутонов. Этот элемент может быть сочетанием следующих значений:
Flag | Значение |
---|---|
HT_FLAG_8BPP_CMY332_MASK | Флаг, используемый для очистки верхних восьми битов flHTFlags (биты от 24 до 31). Затем можно использовать макрос MAKE_CMY332_MASK , чтобы задать эти биты с информацией на уровне рукописного ввода в режиме CMY 8 бит на пиксель. Дополнительные сведения см. в статье Использование 8-разрядных режимов маски CMY в GDI . |
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 должен отрисовывать растровое изображение поверхности в режиме запросов 8 бит на пиксель с помощью палитры режима CMY_INVERTED. Описание и требования к палитре CMY_INVERTED режима см. в статье Использование режимов маски CMY 8-bit-per-Pixel CMY GDI . |
|
Бумага в устройстве поглощает меньше обычного количества чернил, поэтому 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 | Устройство использует первичные серверы CMY, а не основные rgb-источники. Это значение флага применяется только к конечным поверхностям 1 и 4 bpp. |
HT_FLAG_PRINT_DRAFT_MODE | Отключает код сглаживания GDI. |
HT_FLAG_SQUARE_DEVICE_PEL | Пиксель устройства является квадратным, а не круглым (только для отображения — для принтеров требуются скругленные пиксели). |
HT_FLAG_USE_8BPP_BITMASK | Устройство использует монохромную печать. |
ulVRefresh
Частота обновления видео для текущего режима отображения. Это значение, возвращаемое драйвером мини-порта для частоты обновления для текущего режима.
Программа Отображения в панель управления отображает частоту обновления, содержащуюся в элементе ulVRefresh.
ulBltAlignment
Этот элемент указывает предпочтительное выравнивание по оси X для передачи битовых блоков на устройство. Значение , равное нулю, указывает, что передача битовых блоков ускоряется; Любое другое неорицательное число указывает, что передача битовых блоков не ускоряется, и дает предпочтительное горизонтальное выравнивание в виде пикселя, кратного.
Это значение используется системой для определения выравнивания по умолчанию для позиций окон, а также для установки начального значения полного перетаскивания по умолчанию во время установки. Значение, равное нулю, указывает, что полное перетаскивание должно быть включено по умолчанию; Любое значение, отличное от нуля, указывает, что полное перетаскивание должно быть отключено по умолчанию.
ulPanningHorzRes
ulPanningVertRes
Должен игнорироваться драйвером и оставаться инициализированным нулевым значением.
xPanningAlignment
yPanningAlignment
Должен игнорироваться драйвером и оставаться инициализированным нулевым значением.
cxHTPat
cyHTPat
Укажите ширину и высоту ( в пикселях) предоставленного пользователем шаблона полутона. Значение cxHTPat должно находиться в диапазоне HT_USERPAT_CX_MIN HT_USERPAT_CX_MAX включительно. Значение cyHTPat должно находиться в диапазоне HT_USERPAT_CY_MIN HT_USERPAT_CY_MAX включительно. Эти константы определяются в файле winddi.h. Дополнительные сведения см. в следующем разделе Примечания .
pHTPatA
pHTPatB
pHTPatC
Наведите указатель на определяемые пользователем шаблоны полутонов для основных цветов A, B и C соответственно, как определено значением PRIMARY_ORDER_XXX в элементе ulPrimaryOrder . Каждый шаблон dither должен быть допустимым двумерным массивом байтов размера cxHTPat по cyHTPat. Дополнительные сведения см. в следующем разделе Примечания .
flShadeBlend
Задает набор флагов, указывающих возможности затенения и смешивания устройства. Драйверы отображения должны игнорировать этот элемент и оставить его равным нулю. Для драйверов принтера значение, которое драйвер помещает в этот элемент, является значением, которое GDI сообщает, когда приложение вызывает GetDeviceCaps(hdc, SHADEBLENDCAPS). Функция GetDeviceCaps описана в документации по пакету SDK Microsoft Window.
ulPhysicalPixelCharacteristics
Указывает способ настройки цветовых фрагментов для формирования пикселей на устройстве отображения. Фрагменты цвета на устройстве отображения можно упорядочить в порядке RGB или в порядке BGR, полностью независимо от порядка RGB в буфере кадров. Фрагменты цвета можно настроить в виде горизонтальных полос, в которых все фрагменты в одной строке имеют одинаковый цвет. Кроме того, фрагменты цвета можно настроить в виде вертикальных полос, в которых все фрагменты в одном столбце имеют одинаковый цвет. Вертикальное чередование предпочтительнее, так как оно фактически предоставляет три отдельных фрагмента в строке для каждого пикселя, тем самым обеспечивая большее горизонтальное разрешение подпиксели.
Члену 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 |
Отображение сведений о физических пикселях устройства известно, но не может быть выражено как одно из указанных перечислений. В настоящее время перечисления применимы к монитору на основе ЖК-дисплея. Драйвер должен задать для ulPhysicalPixelCharacteristics значение PPC_UNDEFINED при выполнении любого из следующих условий. (Этот список не является исчерпывающим, но охватывает наиболее распространенные условия.)
|
ulPhysicalPixelGamma
Задает гамма устройства отображения. Для этого элемента должно быть задано значение гамма физического пикселя, масштабируемое в 1000 раз, или одно из следующих значений. Например, гамма-значение 2,2 будет представлено как 2200.
Значение | Значение |
---|---|
PPG_DEFAULT | Драйвер не знает гамма для устройства. |
PPG_SRGB | Устройство использует гамма sRGB. |
Комментарии
GDI инициализирует эту структуру с нуля перед вызовом функции DrvEnablePDEV , предоставленной драйвером.
Члены xStyleStep, yStyleStep и denStyleStep определяют, как косметический стиль линии должен продвигаться по мере рисования каждого пикселя косметической линии. Сумма, расширенная по стилю для каждого пикселя, определяется в виде дроби, которая зависит от того, имеет ли линия стиль X или Y. Если линия имеет стиль X, стиль перемещается по дробной сумме dx/D для каждого пикселя, перемещаемого в направлении x. В противном случае стиль перемещается по dy/D для каждого пикселя, перемещаемого в направлении y.
Точки в предопределенном стиле линий PS_DOT имеют длину каждой единицы. Если драйвер определяет xStyleStep как один, а denStyleStep — 5, то пунктирная горизонтальная линия состоит из 5 пикселей, за которым следует 5 пикселей, повторяющиеся.
Каждое из этих трех чисел должно быть меньше 65536, несмотря на то, что члены caps являются значениями LONG. Эти шаги стиля определяются драйвером, чтобы гарантировать, что точки и дефисы в строке имеют приятный размер на устройстве вывода. Горизонтальные и вертикальные шаги могут отличаться для нетривиальных пропорций. Например, на дисплее EGA, пиксели которого на 33 процента выше, чем они имеют ширину, можно задать:
pdevcaps->xStyleStep = 3; // For an EGA
pdevcaps->yStyleStep = 4;
pdevcaps->denStyleStep = 12;
В этом случае горизонтальные пунктирные линии равны 4 пикселям, 4 пикселям, так как стиль увеличивается на 12 или 1/4 для каждого пикселя. Вертикальные пунктирные линии имеют размер 3 пикселя/3 пикселя от.
Стилистированные линии выглядят лучше, если шаги стиля x и y равномерно делятся на знаменатель стиля, как в предыдущем примере. Это дает дефисы и точки, которые всегда имеют одинаковую длину.
Эти сведения требуются GDI, чтобы его функции точечных изображений могли эмулировать именно то, что делает устройство на своей собственной поверхности. Приложения могут получить доступ к этим сведениям, чтобы точно определить, какие пиксели будут включаться для линий стилей. См. также стильные косметические линии.
Элементы, связанные с полутонами, cxHTPat, cyHTPat, pHTPatA, pHTPatB и pHTPatC, можно использовать в подключаемом модуле отрисовки Oem Unidrv для определения пользовательского шаблона полутона, состоящего из одного или трех цветов. Эти элементы проверяются, только если для элемента ulHTPatternSize задано значение HT_PATSIZE_USER. В этом случае изготовитель оборудования может использовать эти элементы для определения пользовательского шаблона полутонов на основе данных, хранящихся в файле ресурсов или созданных модулем настройки изготовителя оборудования. Члены cxHTPat и cyHTPat определяют размер каждого из трех двухмерных массивов шаблонов полутонов. Члены pHTPatA, pHTPatB и pHTPatC указывают на соответствующие массивы шаблонов для каждого цвета. Если используется только один массив шаблонов, на него указывают pHTPatA, pHTPatB и pHTPatC .
Каждое пороговое значение байтов в определенном расположении в полутоновом дизерном шаблоне определяет, будет ли пиксель в соответствующем расположении плоскости вывода включен или выключен. Нулевое пороговое значение в определенном расположении в массиве шаблонов указывает, что соответствующее расположение пикселей игнорируется (черное). Пороговые значения от 1 до 255 обеспечивают 255 уровней серого цвета; Если значение пикселя в выходной плоскости больше или равно порогового значения для этого расположения, пиксель включается. Значение пикселя меньше соответствующего порогового значения приводит к отключению пикселя в выходной плоскости. Дополнительные сведения см . в статье Настройка драйверов принтеров Майкрософт .
Требования
Требование | Значение |
---|---|
Заголовок | winddi.h (включая Winddi.h) |