Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/**************************************************************************
* * Copyright (c) 2000 Microsoft Corporation * * Module Name: * * GpCachedBitmap object * * * Created: * * 04/23/2000 asecchia * Created it. * **************************************************************************/
#ifndef _CACHEDBITMAP_HPP
#define _CACHEDBITMAP_HPP
class GpCachedBitmap { friend GpGraphics; // We now use an ObjectTag to determine if the object is valid
// instead of using a BOOL. This is much more robust and helps
// with debugging. It also enables us to version our objects
// more easily with a version number in the ObjectTag.
ObjectTag Tag; // Keep this as the 1st value in the object!
GpLockable Lockable;
DpCachedBitmap DeviceCachedBitmap;
protected: VOID SetValid(BOOL valid) { Tag = valid ? ObjectCachedBitmap : ObjectTagInvalid; }
public:
// constructor and destructor
GpCachedBitmap(GpBitmap *bitmap, GpGraphics *graphics); virtual ~GpCachedBitmap();
// 'getter' state retrieval
BOOL IsValid() const { #ifdef _X86_
// We have to guarantee that the Tag field doesn't move for
// versioning to work between releases of GDI+.
ASSERT(offsetof(GpCachedBitmap, Tag) == 4); #endif
ASSERT((Tag == ObjectCachedBitmap) || (Tag == ObjectTagInvalid)); #if DBG
if (Tag == ObjectTagInvalid) { WARNING1("Invalid CachedBitmap"); } #endif
return (Tag == ObjectCachedBitmap); }
void GetSize(Size *s) { // Get the width and height from the DeviceCachedBitmap.
s->Width = DeviceCachedBitmap.Width; s->Height = DeviceCachedBitmap.Height; }
// Get the lock object
GpLockable *GetObjectLock() { return &Lockable; } };
#endif
|