/************************************************************************** | |
* | |
* Copyright (c) 2000 Microsoft Corporation | |
* | |
* Module Name: | |
* | |
* Gdiplus init | |
* | |
* Abstract: | |
* | |
* GDI+ startup/shutdown API's | |
* | |
* Created: | |
* | |
* 09/02/2000 agodfrey | |
* Created it. | |
* | |
**************************************************************************/ | |
#ifndef _GDIPLUSINIT_H | |
#define _GDIPLUSINIT_H | |
//************************************************************************ | |
#if _FX_COMPILER_ == _FX_VC6_ | |
typedef unsigned long ULONG_PTR, *PULONG_PTR; //johnson add here. | |
#endif | |
//************************************************************************ | |
// Used for debug event notification (debug builds only) | |
enum DebugEventLevel | |
{ | |
DebugEventLevelFatal, | |
DebugEventLevelWarning | |
}; | |
// Callback function that GDI+ can call, on debug builds, for assertions | |
// and warnings. | |
typedef VOID (WINAPI *DebugEventProc)(DebugEventLevel level, CHAR *message); | |
// Notification functions which the user must call appropriately if | |
// "SuppressBackgroundThread" (below) is set. | |
typedef Status (WINAPI *NotificationHookProc)(OUT ULONG_PTR *token); | |
typedef VOID (WINAPI *NotificationUnhookProc)(ULONG_PTR token); | |
// Input structure for GdiplusStartup() | |
struct GdiplusStartupInput | |
{ | |
UINT32 GdiplusVersion; // Must be 1 | |
DebugEventProc DebugEventCallback; // Ignored on free builds | |
BOOL SuppressBackgroundThread; // FALSE unless you're prepared to call | |
// the hook/unhook functions properly | |
BOOL SuppressExternalCodecs; // FALSE unless you want GDI+ only to use | |
// its internal image codecs. | |
GdiplusStartupInput( | |
DebugEventProc debugEventCallback = NULL, | |
BOOL suppressBackgroundThread = FALSE, | |
BOOL suppressExternalCodecs = FALSE) | |
{ | |
GdiplusVersion = 1; | |
DebugEventCallback = debugEventCallback; | |
SuppressBackgroundThread = suppressBackgroundThread; | |
SuppressExternalCodecs = suppressExternalCodecs; | |
} | |
}; | |
// Output structure for GdiplusStartup() | |
struct GdiplusStartupOutput | |
{ | |
// The following 2 fields are NULL if SuppressBackgroundThread is FALSE. | |
// Otherwise, they are functions which must be called appropriately to | |
// replace the background thread. | |
// | |
// These should be called on the application's main message loop - i.e. | |
// a message loop which is active for the lifetime of GDI+. | |
// "NotificationHook" should be called before starting the loop, | |
// and "NotificationUnhook" should be called after the loop ends. | |
NotificationHookProc NotificationHook; | |
NotificationUnhookProc NotificationUnhook; | |
}; | |
// GDI+ initialization. Must be called before GDI+ API's are used. | |
// | |
// token - may not be NULL - accepts a token to be passed in the corresponding | |
// GdiplusShutdown call. | |
// input - may not be NULL | |
// output - may be NULL only if input->SuppressBackgroundThread is FALSE. | |
extern "C" Status WINAPI GdiplusStartup( | |
OUT ULONG_PTR *token, | |
const GdiplusStartupInput *input, | |
OUT GdiplusStartupOutput *output); | |
// GDI+ termination. Must be called before GDI+ is unloaded. GDI+ API's may not | |
// be called after this. | |
extern "C" VOID WINAPI GdiplusShutdown(ULONG_PTR token); | |
#endif |