' GdiPlusInit.ab

#ifndef __GDIPLUSINIT_AB__
#define __GDIPLUSINIT_AB__

Enum DebugEventLevel
	DebugEventLevelFatal
	DebugEventLevelWarning
End Enum

Typedef DebugEventProc = *Sub(level As DebugEventLevel, message As *Char)

Typedef NotificationHookProc = *Function(/*OUT*/ ByRef token As ULONG_PTR) As Status
TypeDef NotificationUnhookProc = *Sub(ByVal token As ULONG_PTR)

Class GdiplusStartupInput
Public
	GdiplusVersion As DWord
	DebugEventCallback As VoidPtr
	SuppressBackgroundThread As BOOL
	SuppressExternalCodecs As BOOL

	Sub GdiplusStartupInput()(debugEventCallback As DebugEventProc, suppressBackgroundThread As BOOL, suppressExternalCodecs As BOOL)
		GdiplusVersion = 1
		DebugEventCallback = debugEventCallback
		SuppressBackgroundThread = suppressBackgroundThread
		SuppressExternalCodecs = suppressExternalCodecs
	End Sub
End Class

Type Align(8) GdiplusStartupOutput
	NotificationHook As NotificationHookProc
	NotificationUnhook As NotificationUnhookProc
End Type

Declare Function GdiplusStartup Lib "GdiPlus.dll" (
	/*OUT*/ ByRef token As ULONG_PTR,
	        ByRef input As GdiplusStartupInput,
	/*OUT*/ ByVal output As *GdiplusStartupOutput) As Status

Declare Sub GdiplusShutdown Lib "GdiPlus.dll" (ByVal token As ULONG_PTR)

#endif '__GDIPLUSINIT_AB__
