Estructura GDIINFO (winddi.h)
La estructura GDIINFO describe las funciones gráficas de un dispositivo determinado.
Sintaxis
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;
Miembros
ulVersion
Especifica el número de versión del controlador. El orden de bytes de ulVersion tiene el siguiente formato.
Los 16 bits de orden superior deben establecerse en cero. Los bits de 8 a 15 especifican el número de versión del sistema operativo Microsoft para el que está diseñado el controlador. Los 4 bits de orden superior de este intervalo especifican el número principal de la versión, los 4 bits de orden bajo contienen el número secundario de la versión. Los 8 bits de orden bajo de ulVersion especifican el número de versión del controlador de pantalla; Este valor debe incrementarse para cada versión del archivo binario del controlador de visualización.
El programa Display de Panel de control indica el número de versión contenido en ulVersion, junto con otra información específica del controlador.
ulTechnology
Especifica la tecnología del dispositivo. Este miembro puede ser uno de los valores enumerados en la tabla siguiente.
Valor | Significado |
---|---|
DT_CHARSTREAM | Solo fuentes de dispositivo |
DT_PLOTTER | Trazador vectorial |
DT_RASCAMERA | Cámara ráster |
DT_RASDISPLAY | Visualización de tramas |
DT_RASPRINTER | Impresora raster |
ulHorzSize
Especifica el ancho de la superficie física. Un valor positivo indica que el ancho está en unidades de milímetros, mientras que un valor negativo indica que el ancho está en unidades de micrometros.
ulVertSize
Especifica el alto de la superficie física. Un valor positivo indica que la altura está en unidades de milímetros, mientras que un valor negativo indica que la altura está en unidades de micrometros.
ulHorzRes
Especifica el ancho en píxeles de la superficie física (dispositivos de visualización) o de la superficie imprimible (impresoras).
Consulte también ulDesktopHorzRes.
ulVertRes
Especifica el alto en píxeles de la superficie física (dispositivos de visualización) o de la superficie imprimible (impresoras).
cBitsPixel
Especifica el número de bits adyacentes en cada plano de color. El número total de bits por píxel es el producto de cBitsPixel y cPlanes.
cPlanes
Especifica el número de planos de color.
ulNumColors
En el caso de los dispositivos palettized, ulNumColors especifica el número de entradas de la paleta de colores predeterminada. En el caso de los dispositivos no configurados (que no incluyen impresoras), ulNumColors se establece en -1.
flRaster
Está reservado y debe dejarse establecido en cero.
ulLogPixelsX
Especifica la resolución de ancho del dispositivo en píxeles lógicos por pulgada.
En el caso de las impresoras, este miembro debe establecerse en la resolución de la impresora en ppp.
Para las pantallas, este miembro debe establecerse en 96.
ulLogPixelsY
Especifica la resolución de alto del dispositivo en píxeles lógicos por pulgada.
En el caso de las impresoras, este miembro debe establecerse en la resolución de la impresora en ppp.
Para las pantallas, este miembro debe establecerse en 96.
flTextCaps
Especifica una marca que describe las funcionalidades de texto de Windows 3.1. Si el controlador TC_SCROLLBLT marca está en este miembro, indica que la consola debe realizar el desplazamiento de texto mediante el volver a dibujar toda la pantalla, mediante la función DrvTextOut proporcionada por el controlador en lugar de las funciones DrvBitBlt o DrvCopyBits . El controlador debe establecer esta marca si las transferencias de bloque de bits de pantalla a pantalla son lentas. Si no se establece esta marca, el controlador solicita implícitamente que la consola realice desplazamientos de texto a través de DrvBitBlt/DrvCopyBits.
ulDACRed
ulDACGreen
ulDACBlue
Especifica el número de visualización de bits DAC para el color especificado.
ulAspectX
Especifica el ancho relativo de un píxel del dispositivo, en el intervalo de uno a 1000.
ulAspectY
Especifica el alto relativo de un píxel del dispositivo, en el intervalo de uno a 1000.
ulAspectXY
Especifica la raíz cuadrada de la suma de los cuadrados de ulAspectX y ulAspectY.
xStyleStep
Especifica el numerador de avance de estilo para las líneas principales x, dx. Para obtener más información, consulte la sección Comentarios siguientes y Las líneas cosméticas con estilo.
yStyleStep
Especifica el numerador de estilo avanzado para las líneas principales y, dy. Para obtener más información, consulte la sección Comentarios siguientes y Las líneas cosméticas con estilo.
denStyleStep
Especifica el denominador de avance de estilo, D. Para obtener más información, consulte la sección Comentarios siguientes y Las líneas cosméticas con estilo.
ptlPhysOffset
Especifica una estructura POINTL que contiene el tamaño, en píxeles, del margen no grabable de una superficie.
szlPhysSize
Especifica una estructura SIZEL que contiene el tamaño, en píxeles, de toda la superficie, incluidos los márgenes no grabables. Una estructura SIZEL es idéntica a una estructura SIZE .
ulNumPalReg
Especifica el número de registros de paleta para un dispositivo indizado.
ciDevice
Es una estructura COLORINFO que define los colores del dispositivo en el espacio de coordenadas CIE.
ulDevicePelsDPI
En el caso de las impresoras, especifica el número de píxeles (o puntos o boquillas) por pulgada si los píxeles están dispuestos en paralelo sin superposición ni espacio entre ellos. Por ejemplo, si el tamaño de un píxel es de 0,001 pulgadas, este valor es igual a uno dividido entre 0,001. Si el miembro es cero, la halftoning de GDI calcula este número en función de la suposición de que todos los píxeles están conectados sin superposición.
Dado que el tamaño de punto físico para la mayoría de las impresoras es mayor que el tamaño de punto medido, GDI usa este valor para aproximar el número de puntos físicos que se pueden colocar, en función del tamaño de celda (tamaño de patrón). A continuación, se realiza una regresión del registro para determinar cuál es la mayoría lineal; es decir, donde los puntos deben colocarse para la mejor cobertura para optimizar la cobertura superpuesta de píxeles de dispositivo (ganancia de puntos).
Para las pantallas, este miembro debe establecerse en cero.
ulPrimaryOrder
Especifica el orden de bits de los colores principales o números de plano del dispositivo para la salida de media tono. Este miembro puede ser uno de los valores enumerados en la tabla siguiente.
Marca | Significado |
---|---|
PRIMARY_ORDER_ABC | El orden de salida del dispositivo es RGB o CMY. Rojo o cian está en los bits menos significativos; azul o amarillo está en los bits más significativos. |
PRIMARY_ORDER_ACB | El orden de salida del dispositivo es RBG o CYM. Rojo o cian está en los bits menos significativos; verde o magenta está en los bits más significativos. |
PRIMARY_ORDER_BAC | El orden de salida del dispositivo es GRB o MCY. Verde o magenta está en los bits menos significativos; azul o amarillo está en los bits más significativos. |
PRIMARY_ORDER_BCA | El orden de salida del dispositivo es GBR o MYC. Verde o magenta está en los bits menos significativos; rojo o cian está en los bits más significativos. |
PRIMARY_ORDER_CBA | El orden de salida del dispositivo es BGR o YMC. El azul o amarillo está en los bits menos significativos; rojo o cian está en los bits más significativos. |
PRIMARY_ORDER_CAB | El orden de salida del dispositivo es BRG o YCM. El azul o amarillo está en los bits menos significativos; verde o magenta está en los bits más significativos. |
ulHTPatternSize
Especifica el tamaño del patrón de medio tono. Los valores que terminan con AxBM son variaciones de los patrones AxB . En otras palabras, SIZEAxB y SIZE_AxB_M difieren según los píxeles que se iluminan en un patrón A x B. Este miembro puede ser uno de los siguientes valores:
- 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
Especifica el formato de salida preferido para el medio tono. HT_FORMAT_4BPP usa solo 8 colores de intensidad completa, mientras que HT_FORMATP_IRGB usa todos los 16 colores, incluidos los colores de intensidad media. Se supone que se usa un formato de 5 x 5 x 5 (5 bits por color) para HT_FORMAT_16BPP. Este miembro puede ser uno de los siguientes valores:
- HT_FORMAT_1BPP
- HT_FORMAT_4BPP
- HT_FORMAT_4BPP_IRGB
- HT_FORMAT_8BPP
- HT_FORMAT_16BPP
- HT_FORMAT_24BPP
- HT_FORMAT_32BPP
flHTFlags
Especifica una combinación de marcas que describen el dispositivo. Estas marcas son necesarias para el halftoning. Este miembro puede ser una combinación de los siguientes valores:
Marca | Significado |
---|---|
HT_FLAG_8BPP_CMY332_MASK | Marca usada para borrar los ocho bits superiores de flHTFlags (bits de 24 a 31). La macro MAKE_CMY332_MASK se puede usar para establecer estos bits con información de nivel de entrada de lápiz del modo CMY de 8 bits por píxel. Consulte Uso de modos de máscara CMY de 8 bits por píxel de GDI para obtener más información. |
HT_FLAG_ADDITIVE_PRIMS | Los principales dispositivos son aditivos. |
HT_FLAG_DO_DEVCLR_XFORM | Solicita a GDI que realice una corrección de color genérica. |
HT_FLAG_HAS_BLACK_DYE | El dispositivo tiene tinte negro independiente. |
|
El papel en el dispositivo absorbe más de la cantidad normal de tinta, por lo que GDI debe representar menos tinta en papel. Estas marcas indican la cantidad relativa de absorción de tinta, con HT_FLAG_HIGHER_INK_ABSORPTION denotar más absorción que HT_FLAG_HIGH_INK_ABSORPTION, pero menor que HT_FLAG_HIGHEST_INK_ABSORPTION. |
|
Marcas usadas para definir HT_FLAG_HIGH/HIGHER/HIGHEST_INK_ABSORPTION y HT_FLAG_LOW/LOWER/LOWEST_INK_ABSORPTION. |
HT_FLAG_INK_HIGH_ABSORPTION | Marca usada para definir HT_FLAG_HIGH/HIGHER/HIGHEST_INK_ABSORPTION. |
HT_FLAG_INVERT_8BPP_BITMASK_IDX | El medio tono GDI debe representar un mapa de bits de superficie de modo de pregunta de 8 bits por píxel mediante una paleta de modos de CMY_INVERTED. Consulte Uso de los modos de máscara CMY de CMY de GDI de 8 bits por píxel para ver la descripción y los requisitos de la paleta de modo CMY_INVERTED. |
|
El papel en el dispositivo absorbe menos de la cantidad normal de tinta, por lo que GDI debe representar más tinta en papel. Estas marcas indican la cantidad relativa de absorción de tinta, con HT_FLAG_LOWER_INK_ABSORPTION denotan menos absorción que HT_FLAG_LOW_INK_ABSORPTION, pero más de HT_FLAG_LOWEST_INK_ABSORPTION. |
HT_FLAG_NORMAL_INK_ABSORPTION | Papel en el dispositivo absorbe la cantidad normal de tinta. |
HT_FLAG_OUTPUT_CMY | El dispositivo usa las principales cmY en lugar de las primarias RGB. Este valor de marca solo se aplica a 1 bpp y 4 superficies de destino bpp. |
HT_FLAG_PRINT_DRAFT_MODE | Deshabilita el código antialiasing de GDI. |
HT_FLAG_SQUARE_DEVICE_PEL | El píxel del dispositivo es cuadrado en lugar de redondo (solo muestra las impresoras requieren píxeles redondeados). |
HT_FLAG_USE_8BPP_BITMASK | El dispositivo usa impresión monocromática. |
ulVRefresh
Velocidad de actualización de vídeo para el modo de visualización actual. Este es el valor devuelto por el controlador de miniport para la frecuencia de actualización del modo actual.
El programa Display de Panel de control muestra la frecuencia de actualización contenida en el miembro ulVRefresh.
ulBltAlignment
Este miembro indica la alineación x preferida para las transferencias de bloques de bits al dispositivo. Un valor de cero indica que se aceleran las transferencias de bloques de bits; cualquier otro número no negativo indica que las transferencias de bloques de bits no se aceleran y proporciona la alineación horizontal preferida como un píxel múltiple.
El sistema usa este valor para determinar la alineación predeterminada para las posiciones de ventana y también se usa para establecer el valor predeterminado de arrastrar completo inicial durante la instalación. Un valor de cero indica que la arrastrar completa debe estar activada de forma predeterminada; cualquier valor distinto de cero indica que la arrastrar completa debe estar desactivada de forma predeterminada.
ulPanningHorzRes
ulPanningVertRes
El controlador debe omitirlo y permanecer inicializado en cero.
xPanningAlignment
yPanningAlignment
El controlador debe omitirlo y permanecer inicializado en cero.
cxHTPat
cyHTPat
Especifique el ancho y el alto, respectivamente, en píxeles, del patrón de dither de medio tono proporcionado por el usuario. El valor de cxHTPat debe estar en el intervalo HT_USERPAT_CX_MIN para HT_USERPAT_CX_MAX, ambos incluidos. El valor de cyHTPat debe estar en el intervalo HT_USERPAT_CY_MIN para HT_USERPAT_CY_MAX, ambos inclusive. Estas constantes se definen en winddi.h. Consulte la sección Comentarios siguientes para obtener más información.
pHTPatA
pHTPatB
pHTPatC
Apunte a los patrones de medio tono definidos por el usuario para los colores principales A, B y C, respectivamente, tal como se define en el valor de PRIMARY_ORDER_XXX en el miembro ulPrimaryOrder . Cada patrón de dither debe ser una matriz de bytes bidimensional válida de tamaño cxHTPat por cyHTPat. Consulte la sección Comentarios siguientes para obtener más información.
flShadeBlend
Especifica un conjunto de marcas que indican las funcionalidades de sombreado y combinación del dispositivo. Los controladores de pantalla deben omitir este miembro y dejarlo establecido en cero. En el caso de los controladores de impresora, el valor que coloca el controlador en este miembro es el valor que GDI notifica cuando una aplicación llama a GetDeviceCaps(hdc, SHADEBLENDCAPS). La función GetDeviceCaps se describe en la documentación del SDK de Microsoft Window.
ulPhysicalPixelCharacteristics
Especifica la forma en que los fragmentos de color están configurados para formar píxeles en el dispositivo de pantalla. Los fragmentos de color del dispositivo de pantalla se pueden organizar en orden RGB, o en orden BGR, completamente independiente del orden RGB en el búfer de fotogramas. Los fragmentos de color se pueden configurar en franjas horizontales en las que todos los fragmentos de una fila son del mismo color. Como alternativa, los fragmentos de color se pueden configurar en franjas verticales, en las que todos los fragmentos de una columna tienen el mismo color. Se prefiere el seccionamiento vertical, ya que proporciona eficazmente tres fragmentos independientes en una fila para cada píxel, lo que proporciona una mayor resolución de subpíxel horizontal.
El miembro ulPhysicalPixelCharacteristics debe establecerse en uno de los valores que se muestran en la tabla siguiente:
Valor | Significado |
---|---|
PPC_DEFAULT | Se desconoce la información de píxeles físicos del dispositivo. |
PPC_BGR_ORDER_HORIZONTAL_STRIPES | Los fragmentos de color físico del dispositivo de visualización se organizan, de arriba a abajo, en filas de fragmentos de color azul, verde y rojo. |
PPC_BGR_ORDER_VERTICAL_STRIPES | Los fragmentos de color físico del dispositivo de visualización se organizan, de izquierda a derecha, en columnas de fragmentos de color azul, verde y rojo. |
PPC_RGB_ORDER_HORIZONTAL_STRIPES | Los fragmentos de color físicos del dispositivo de visualización se organizan, de arriba a abajo, en filas de fragmentos de color rojo, verde y azul. |
PPC_RGB_ORDER_VERTICAL_STRIPES | Los fragmentos de color físicos del dispositivo de visualización se organizan, de izquierda a derecha, en columnas de fragmentos de color rojo, verde y azul. |
PPC_UNDEFINED |
Se conoce la información de píxeles físicos del dispositivo para mostrar, pero no se puede expresar como una de las enumeraciones especificadas. Las enumeraciones son aplicables actualmente a un monitor basado en LCD. El controlador debe establecer ulPhysicalPixelCharacteristics en PPC_UNDEFINED cuando se cumpla alguna de las condiciones siguientes. (Esta lista no es completa, pero cubre las condiciones más comunes).
|
ulPhysicalPixelGamma
Especifica el gamma del dispositivo de pantalla. Este miembro debe establecerse en el gamma del píxel físico, escalado por un factor de 1000 o en uno de los valores siguientes. Por ejemplo, un valor gamma de 2,2 se representaría como 2200.
Valor | Significado |
---|---|
PPG_DEFAULT | El controlador no tiene conocimiento de la gamma para el dispositivo. |
PPG_SRGB | El dispositivo usa un sRGB gamma. |
Comentarios
GDI inicializa esta estructura sin inicializar antes de llamar a la función DrvEnablePDEV proporcionada por el controlador.
Los miembros xStyleStep, yStyleStep y denStyleStep definen cómo debe avanzar un estilo de línea cosmético a medida que dibuja cada píxel de una línea cosmética. La cantidad avanzada a lo largo del estilo de cada píxel se define como una fracción que depende de si la línea tiene estilo x o y. Si la línea tiene un estilo x, el estilo avanza por la cantidad fraccionarcional dx/D para cada píxel movido en la dirección x. De lo contrario, el estilo avanza por dy/D para cada píxel movido en la dirección y.
Los puntos del estilo de línea predefinido PS_DOT son cada una de las unidades largas. Si el controlador define xStyleStep como uno y denStyleStep como 5, una línea horizontal punteada consta de 5 píxeles seguidos de 5 píxeles desactivados, repetidos.
Cada uno de estos tres números debe ser menor que 65536, aunque los miembros de límites sean valores LONG. Estos pasos de estilo se definen mediante el controlador para asegurarse de que los puntos y guiones de una línea son un tamaño agradable en el dispositivo de salida. Los pasos horizontales y verticales pueden ser diferentes a los correctos para las relaciones de aspecto notriviales. Por ejemplo, en una pantalla de EGA, cuyos píxeles son 33 por ciento superiores a los anchos, puede establecer:
pdevcaps->xStyleStep = 3; // For an EGA
pdevcaps->yStyleStep = 4;
pdevcaps->denStyleStep = 12;
En este caso, las líneas de puntos horizontales son de 4 píxeles, 4 píxeles desactivados, porque el estilo avanza en 3/12 o 1/4 para cada píxel. Las líneas de puntos verticales son de 3 píxeles/3 píxeles desactivados.
Las líneas con estilo tienen un aspecto mejor si los pasos de estilo x e y se dividen uniformemente en el denominador de estilo, como lo hacen en el ejemplo anterior. Esto proporciona guiones y puntos que siempre tienen la misma longitud.
GDI necesita esta información para que sus funciones de mapa de bits puedan emular exactamente lo que hace el dispositivo en su propia superficie. Las aplicaciones pueden acceder a esta información para determinar exactamente qué píxeles se activarán para las líneas con estilo. Consulte también líneas estéticas con estilo.
Los miembros relacionados con el medio tono, cxHTPat, cyHTPat, pHTPatA, pHTPatB y pHTPatC, se pueden usar en un complemento de representación Unidrv de OEM para definir un patrón de medio tono personalizado que consta de uno o tres colores. Estos miembros solo se comprueban si el miembro ulHTPatternSize está establecido en HT_PATSIZE_USER. En este caso, un OEM puede usar estos miembros para definir un patrón de medio tono personalizado, en función de los datos almacenados en un archivo de recursos o generados por un módulo de personalización de OEM. Los miembros cxHTPat y cyHTPat definen el tamaño de cada una de las tres matrices de patrones de mediatono bidimensional. Los miembros pHTPatA, pHTPatB y pHTPatC apuntan a las matrices de patrones correspondientes para cada color. Si solo se usa una matriz de patrones, pHTPatA, pHTPatB y pHTPatC apuntan a ella.
Cada umbral de bytes en una ubicación determinada en un patrón de dither de medio tono determina si el píxel en la ubicación del plano de salida correspondiente estará activado o desactivado. Un valor de umbral cero en una ubicación determinada de la matriz de patrones indica que se omite la ubicación de píxel correspondiente (es negro). Los valores de umbral de 1 a 255 proporcionan el patrón de dither con 255 niveles de gris; si el valor de píxel del plano de salida es mayor o igual que el valor de umbral de esa ubicación, el píxel está activado. Un valor de píxel menor que su valor de umbral correspondiente hace que su píxel se desactive en el plano de salida. Consulte Personalización de Halftoning en Personalización de controladores de impresora de Microsoft para obtener más información.
Requisitos
Requisito | Valor |
---|---|
Header | winddi.h (incluya Winddi.h) |