| /************************************************************************** |
| * |
| * 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 |