SURFOBJ (Compact 2013)
3/28/2014
The SURFOBJ structure is the user object for a surface. A device driver usually calls methods on a surface object only when the surface object represents a GDI bitmap or a device-managed surface.
Syntax
typedef struct _SURFOBJ {
DHSURF dhsurf;
HSURF hsurf;
DHPDEV dhpdev;
HDEV hdev;
SIZEL sizlBitmap;
ULONG cjBits;
PVOID pvBits;
PVOID pvScan0;
LONG lDelta;
ULONG iUniq;
ULONG iBitmapFormat;
USHORT iType;
USHORT fjBitmap;
} SURFOBJ;
Parameters
- dhsurf
Handle to a surface, provided that the surface is device-managed. Otherwise, this member is zero.
- hsurf
Handle to the surface.
- dhpdev
Identifies the device's PDEV that is associated with the specified surface.
- hdev
GDI's logical handle to the PDEV associated with this device.
- sizlBitmap
Specifies a SIZEL structure that contains the width and height, in pixels, of the surface. The SIZEL structure is identical to the SIZE structure.
- cjBits
Specifies the size of the buffer pointed to by pvBits.
- pvBits
If the surface is a standard format bitmap, this is a pointer to the surface's pixels. For BMF_JPEG or BMF_PNG images, this is a pointer to a buffer containing the image data in a JPEG or PNG format. Otherwise, this member is NULL.
- pvScan0
Pointer to the first scan line of the bitmap. If iBitmapFormat is BMF_JPEG or BMF_PNG, this member is NULL.
- lDelta
Specifies the count of bytes required to move down one scan line in the bitmap. If iBitmapFormat is BMF_JPEG or BMF_PNG, this member is NULL.
iUniq
Specifies the current state of the specified surface. Every time the surface changes, this value is incremented. This enables drivers to cache source surfaces.For a surface that should not be cached, iUniq is set to zero. This value is used in conjunction with the BMF_DONTCACHE flag of fjBitmap.
iBitmapFormat
Specifies the standard format most closely matching this surface. If the iType member specifies a bitmap (STYPE_BITMAP), this member specifies its format. NT-based operating systems support a set of predefined formats, although applications can also send device-specific formats by using SetDIBitsToDevice.Supported predefined formats include the following:
Value
Meaning
BMF_1BPP
1 bit per pixel.
BMF_4BPP
4 bits per pixel.
BMF_8BPP
8 bits per pixel.
BMF_16BPP
16 bits per pixel.
BMF_24BPP
24 bits per pixel.
BMF_32BPP
32 bits per pixel.
BMF_4RLE
4 bits per pixel, run length encoded.
BMF_8RLE
8 bits per pixel, run length encoded.
BMF_JPEG
JPEG compressed image.
BMF_PNG
PNG compressed image.
iType
Surface type, which is one of the following:Type
Definition
STYPE_BITMAP
The surface is a bitmap.
STYPE_DEVBITMAP
The surface is a device format bitmap.
STYPE_DEVICE
The surface is managed by the device.
fjBitmap
If the surface is of type STYPE_BITMAP and is a standard uncompressed format bitmap, the following flags can be set. Otherwise, this member should be ignored.Value
Meaning
BMF_DONTCACHE
The bitmap should not be cached by the driver because it is a transient bitmap, created by GDI, that the driver will never see again. If this flag is set, the iUniq member of this structure will be set to 0.
BMF_KMSECTION
Is used by GDI only and should be ignored by the driver.
BMF_NOTSYSMEM
The bitmap is not in system memory.
BMF_NOZEROINIT
The bitmap was not zero-initialized.
BMF_TOPDOWN
The first scan line represents the top of the bitmap.
BMF_WINDOW_BLT
GDI sets this flag to notify the driver of a window move from one screen location to another.
Remarks
When information about a particular surface is required by a driver, the driver must access the SURFOBJ. This structure allows quick access to the properties of the surface.
When a SURFOBJ structure represents a GDI bitmap, the driver must be able to determine the format of the bitmap and locate the bitmap bits.
When a SURFOBJ structure represents a device surface, the driver must be able to locate the device handle for the surface.
Requirements
Header |
winddi.h |