Estrutura SURFOBJ (winddi.h)
A estrutura SURFOBJ é o objeto de usuário de uma superfície. Um driver de dispositivo geralmente chama métodos em um objeto de superfície somente quando o objeto surface representa um bitmap GDI ou uma superfície gerenciada pelo dispositivo.
Sintaxe
typedef struct _SURFOBJ {
DHSURF dhsurf;
HSURF hsurf;
DHPDEV private_dhpdev;
HDEV private_hdev;
DHPDEV dhpdev;
HDEV hdev;
SIZEL sizlBitmap;
ULONG cjBits;
PVOID pvBits;
PVOID pvScan0;
LONG lDelta;
ULONG iUniq;
ULONG iBitmapFormat;
USHORT iType;
USHORT fjBitmap;
} SURFOBJ;
Membros
dhsurf
Identificador para uma superfície, desde que a superfície seja gerenciada pelo dispositivo. Caso contrário, esse membro será zero.
hsurf
Identificador para a superfície.
private_dhpdev
private_hdev
dhpdev
Identifica o PDEV do dispositivo associado à superfície especificada.
hdev
O identificador lógico da GDI para o PDEV associado a este dispositivo.
sizlBitmap
Especifica uma estrutura SIZEL que contém a largura e a altura, em pixels, da superfície. A estrutura SIZEL é idêntica à estrutura SIZE .
cjBits
Especifica o tamanho do buffer apontado por pvBits.
pvBits
Se a superfície for um bitmap de formato padrão, esse será um ponteiro para os pixels da superfície. Para BMF_JPEG ou BMF_PNG imagens, esse é um ponteiro para um buffer que contém os dados da imagem em um formato JPEG ou PNG. Caso contrário, esse membro será NULL.
pvScan0
Ponteiro para a primeira linha de verificação do bitmap. Se iBitmapFormat for BMF_JPEG ou BMF_PNG, esse membro será NULL.
lDelta
Especifica a contagem de bytes necessários para mover uma linha de verificação para baixo no bitmap. Se iBitmapFormat for BMF_JPEG ou BMF_PNG, esse membro será NULL.
iUniq
Especifica o estado atual da superfície especificada. Sempre que a superfície é alterada, esse valor é incrementado. Isso permite que os drivers armazenem superfícies de origem em cache.
Para uma superfície que não deve ser armazenada em cache, iUniq é definido como zero. Esse valor é usado em conjunto com o sinalizador BMF_DONTCACHE de fjBitmap.
iBitmapFormat
Especifica o formato padrão mais próximo dessa superfície. Se o membro iType especificar um bitmap (STYPE_BITMAP), esse membro especificará seu formato. Os sistemas operacionais baseados em NT dão suporte a um conjunto de formatos predefinidos, embora os aplicativos também possam enviar formatos específicos do dispositivo usando SetDIBitsToDevice. Os formatos predefinidos com suporte incluem o seguinte:
Valor | Significado |
---|---|
BMF_1BPP | 1 bit por pixel. |
BMF_4BPP | 4 bits por pixel. |
BMF_8BPP | 8 bits por pixel. |
BMF_16BPP | 16 bits por pixel. |
BMF_24BPP | 24 bits por pixel. |
BMF_32BPP | 32 bits por pixel. |
BMF_4RLE | 4 bits por pixel, comprimento de execução codificado. |
BMF_8RLE | 8 bits por pixel, comprimento de execução codificado. |
BMF_JPEG | Imagem compactada JPEG. |
BMF_PNG | Imagem compactada PNG. |
iType
Tipo surface, que é um dos seguintes:
Type | Definição |
---|---|
STYPE_BITMAP | A superfície é um bitmap. |
STYPE_DEVBITMAP | A superfície é um bitmap de formato de dispositivo. |
STYPE_DEVICE | A superfície é gerenciada pelo dispositivo. |
fjBitmap
Se a superfície for do tipo STYPE_BITMAP e for um bitmap de formato descompactado padrão, os sinalizadores a seguir poderão ser definidos. Caso contrário, esse membro deverá ser ignorado.
Valor | Significado |
---|---|
BMF_DONTCACHE | O bitmap não deve ser armazenado em cache pelo driver porque é um bitmap transitório, criado pela GDI, que o driver nunca mais verá. Se esse sinalizador for definido, o membro iUniq dessa estrutura será definido como 0. |
BMF_KMSECTION | É usado apenas pela GDI e deve ser ignorado pelo driver. |
BMF_NOTSYSMEM | O bitmap não está na memória do sistema. EngModifySurface define esse sinalizador quando move um bitmap para a memória de vídeo. |
BMF_NOZEROINIT | O bitmap não foi inicializado por zero. |
BMF_TOPDOWN | A primeira linha de verificação representa a parte superior do bitmap. |
BMF_WINDOW_BLT | A GDI define esse sinalizador para notificar o driver de uma movimentação de janela de um local de tela para outro. |
Comentários
Quando informações sobre uma superfície específica são exigidas por um driver, o driver deve acessar o SURFOBJ. Essa estrutura permite acesso rápido às propriedades da superfície.
Quando uma estrutura SURFOBJ representa um bitmap GDI, o driver deve ser capaz de determinar o formato do bitmap e localizar os bits de bitmap.
Quando uma estrutura SURFOBJ representa uma superfície de dispositivo, o driver deve ser capaz de localizar o identificador do dispositivo para a superfície.
Para obter mais informações sobre como dar suporte a imagens compactadas JPEG e PNG, consulte DEVINFO.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | winddi.h (inclua Winddi.h) |