/* GDI surface object */
typedef struct _SURFACE
{
- BASEOBJECT BaseObject;
-
- SURFOBJ SurfObj;
- FLONG flHooks;
- FLONG flFlags;
- struct _PALETTE *ppal;
-
- union
- {
- HANDLE hSecureUMPD; // if UMPD_SURFACE set
- HANDLE hMirrorParent;// if MIRROR_SURFACE set
- HANDLE hDDSurface; // if DIRECTDRAW_SURFACE set
- };
-
- SIZEL dimension; /* For SetBitmapDimension(), do NOT use
+ BASEOBJECT BaseObject;
+
+ SURFOBJ SurfObj;
+ //XDCOBJ * pdcoAA;
+ FLONG flags;
+ struct _PALETTE *ppal;
+ //UINT unk_050;
+
+ union
+ {
+ HANDLE hSecureUMPD; // if UMPD_SURFACE set
+ HANDLE hMirrorParent;// if MIRROR_SURFACE set
+ HANDLE hDDSurface; // if DIRECTDRAW_SURFACE set
+ };
+
+ SIZEL sizlDim; /* For SetBitmapDimension(), do NOT use
to get width/height of bitmap, use
bitmap.bmWidth/bitmap.bmHeight for
that */
- HDC hDC; // Doc in "Undocumented Windows", page 546, seems to be supported with XP.
- ULONG cRef; // 0x064
- HPALETTE hpalHint;
+ HDC hdc; // Doc in "Undocumented Windows", page 546, seems to be supported with XP.
+ ULONG cRef;
+ HPALETTE hpalHint;
- /* For device-independent bitmaps: */
- HANDLE hDIBSection;
- HANDLE hSecure;
- DWORD dwOffset;
+ /* For device-independent bitmaps: */
+ HANDLE hDIBSection;
+ HANDLE hSecure;
+ DWORD dwOffset;
+ //UINT unk_078;
/* reactos specific */
- DWORD dsBitfields[3]; // hack, should probably use palette instead
- DWORD biClrUsed;
- DWORD biClrImportant;
+ DWORD dsBitfields[3]; // hack, should probably use palette instead
+ DWORD biClrUsed;
+ DWORD biClrImportant;
} SURFACE, *PSURFACE;
-#define BITMAPOBJ_IS_APIBITMAP 0x1
+// flags field:
+//#define HOOK_BITBLT 0x00000001
+//#define HOOK_STRETCHBLT 0x00000002
+//#define HOOK_PLGBLT 0x00000004
+//#define HOOK_TEXTOUT 0x00000008
+//#define HOOK_PAINT 0x00000010
+//#define HOOK_STROKEPATH 0x00000020
+//#define HOOK_FILLPATH 0x00000040
+//#define HOOK_STROKEANDFILLPATH 0x00000080
+//#define HOOK_LINETO 0x00000100
+//#define SHAREACCESS_SURFACE 0x00000200
+//#define HOOK_COPYBITS 0x00000400
+//#define REDIRECTION_SURFACE 0x00000800 // ?
+//#define HOOK_MOVEPANNING 0x00000800
+//#define HOOK_SYNCHRONIZE 0x00001000
+//#define HOOK_STRETCHBLTROP 0x00002000
+//#define HOOK_SYNCHRONIZEACCESS 0x00004000
+//#define USE_DEVLOCK_SURFACE 0x00004000
+//#define HOOK_TRANSPARENTBLT 0x00008000
+//#define HOOK_ALPHABLEND 0x00010000
+//#define HOOK_GRADIENTFILL 0x00020000
+//#if (NTDDI_VERSION < 0x06000000)
+// #define HOOK_FLAGS 0x0003B5FF
+//#else
+// #define HOOK_FLAGS 0x0003B5EF
+//#endif
+#define UMPD_SURFACE 0x00040000
+#define MIRROR_SURFACE 0x00080000
+#define DIRECTDRAW_SURFACE 0x00100000
+#define DRIVER_CREATED_SURFACE 0x00200000
+#define ENG_CREATE_DEVICE_SURFACE 0x00400000
+#define DDB_SURFACE 0x00800000
+#define LAZY_DELETE_SURFACE 0x01000000
+#define BANDING_SURFACE 0x02000000
+#define API_BITMAP 0x04000000
+#define PALETTE_SELECT_SET 0x08000000
+#define UNREADABLE_SURFACE 0x10000000
+#define DYNAMIC_MODE_PALETTE 0x20000000
+#define ABORT_SURFACE 0x40000000
+#define PDEV_SURFACE 0x80000000
+
/* Internal interface */