Função DrvGradientFill (winddi.h)
A função DrvGradientFill sombreia os primitivos especificados.
Sintaxe
BOOL DrvGradientFill(
[in, out] SURFOBJ *psoDest,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in] TRIVERTEX *pVertex,
[in] ULONG nVertex,
[in] PVOID pMesh,
[in] ULONG nMesh,
[in] RECTL *prclExtents,
[in] POINTL *pptlDitherOrg,
[in] ULONG ulMode
);
Parâmetros
[in, out] psoDest
Ponteiro para a estrutura SURFOBJ que identifica a superfície na qual desenhar.
[in] pco
Ponteiro para uma estrutura CLIPOBJ . As rotinas de serviço CLIPOBJ_Xxx são fornecidas para enumerar a região de clipe como um conjunto de retângulos. Essa enumeração limita a área do destino que é modificado. Sempre que possível, a GDI simplifica o recorte envolvido.
[in, optional] pxlo
Ponteiro para uma estrutura XLATEOBJ . Esse parâmetro deve ser ignorado pelo driver.
[in] pVertex
Ponteiro para uma matriz de estruturas TRIVERTEX, com cada entrada contendo informações de posição e cor. A estrutura TRIVERTEX é descrita na documentação do SDK do Microsoft Windows.
[in] nVertex
Especifica o número de estruturas TRIVERTEX na matriz para a qual pVertex aponta.
[in] pMesh
Ponteiro para uma matriz de estruturas que definem a conectividade dos elementos TRIVERTEX aos quais pVertex aponta.
Quando retângulos estão sendo desenhados, pMesh aponta para uma matriz de estruturas GRADIENT_RECT, cada uma especificando dois elementos TRIVERTEX que definem um retângulo. Os elementos TRIVERTEX podem representar qualquer par diagonalmente oposto de vértices de retângulo. O desenho do retângulo é exclusivo no canto inferior direito. TRIVERTEX e GRADIENT_RECT são definidos na documentação do SDK do Windows.
Quando triângulos estão sendo desenhados, pMesh aponta para uma matriz de estruturas GRADIENT_TRIANGLE, cada uma especificando os três elementos TRIVERTEX que definem um triângulo. O desenho do triângulo é exclusivo no canto inferior direito. GRADIENT_TRIANGLE é definido na documentação do SDK do Windows.
[in] nMesh
Especifica o número de elementos na matriz para a qual pMesh aponta.
[in] prclExtents
Ponteiro para uma estrutura RECTL que define a área na qual o desenho de gradiente deve ocorrer. Os pontos são especificados no sistema de coordenadas da superfície de destino. Esse parâmetro é útil para estimar o tamanho das operações de desenho.
[in] pptlDitherOrg
Ponteiro para uma estrutura POINTL que define a origem na superfície para dithering. O pixel superior esquerdo do padrão dither está alinhado com esse ponto.
[in] ulMode
Especifica o modo de desenho atual e como interpretar a matriz à qual pMesh aponta. Esse parâmetro pode usar um dos valores a seguir:
GRADIENT_FILL_RECT_H
O parâmetro pMesh aponta para uma matriz de estruturas GRADIENT_RECT. Cada retângulo deve ser sombreado da esquerda para a direita. Especificamente, os pixels superior esquerdo e inferior esquerdo são da mesma cor, assim como os pixels superior direito e inferior direito.
GRADIENT_FILL_RECT_V
O parâmetro pMesh aponta para uma matriz de estruturas GRADIENT_RECT. Cada retângulo deve ser sombreado de cima para baixo. Especificamente, os pixels superior esquerdo e superior direito são da mesma cor, assim como os pixels inferior esquerdo e inferior direito.
GRADIENT_FILL_TRIANGLE
O parâmetro pMesh aponta para uma matriz de estruturas GRADIENT_TRIANGLE.
Os cálculos de preenchimento de gradiente para cada modo são documentados na seção Comentários.
Retornar valor
DrvGradientFill retorna TRUE após o sucesso. Caso contrário, ele retornará FALSE e relatará um erro chamando EngSetLastError.
Comentários
DrvGradientFill pode ser implementado opcionalmente em drivers gráficos. A GDI nunca chama essa função para superfícies palletizadas.
O driver conecta DrvGradientFill definindo o sinalizador HOOK_GRADIENTFILL quando chama EngAssociateSurface ou EngModifySurface. Se o driver tiver fisgado o DrvGradientFill e for chamado para executar uma operação à qual não dá suporte, o driver deverá ter o GDI para manipular a operação pontuando os dados em uma chamada para EngGradientFill.
A GDI não chamará DrvGradientFill para superfícies de destino de 8bpp.
As fórmulas para calcular o valor de cor em cada pixel da primitiva dependem de ulMode da seguinte maneira:
O erro total acumulado em todos os três canais de cores não deve ser superior a oito (8). Para obter mais informações sobre o erro permitido, consulte Efeitos especiais em Drivers de exibição.
O driver deve ignorar o valor alfa dos vértices, deixando o canal alfa inalterado para superfícies que dão suporte à mistura alfa.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | winddi.h (inclua Winddi.h) |