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.

Figura que muestra el miembro ulVersion que especifica el número de versión del controlador

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.
HT_FLAG_HIGH_INK_ABSORPTION
HT_FLAG_HIGHER_INK_ABSORPTION
HT_FLAG_HIGHEST_INK_ABSORPTION
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.
HT_FLAG_INK_ABSORPTION_IDX0
HT_FLAG_INK_ABSORPTION_IDX1
HT_FLAG_INK_ABSORPTION_IDX2
HT_FLAG_INK_ABSORPTION_IDX3
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.
HT_FLAG_LOW_INK_ABSORPTION
HT_FLAG_LOWER_INK_ABSORPTION
HT_FLAG_LOWEST_INK_ABSORPTION
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).
  • El controlador tiene conocimiento de que el monitor no es un dispositivo LCD.
  • El dispositivo es un dispositivo LCD, pero la resolución del búfer de fotogramas es diferente de la resolución nativa de la pantalla física que requiere escalado. Es decir, el escalado es necesario porque ya no hay una correspondencia uno a uno entre píxeles de búfer de fotogramas y píxeles del dispositivo.

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)

Consulte también

CIECHROMA

COLORINFO

DrvBitBlt

DrvCopyBits

DrvEnablePDEV

DrvTextOut