symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/app/_Appmodule.c
author johnathan.white@2718R8BGH51.accenture.com
Mon, 08 Mar 2010 18:45:03 +0000
changeset 46 b6935a90ca64
parent 1 2fb8b9db1c86
permissions -rw-r--r--
Modify framebuffer and NGA framebuffer to read screen size from board model dtb file. Optimise memory usuage of frame buffer Add example minigui application with hooks to profiler (which writes results to S:\). Modified NGA framebuffer to run its own dfc queue at high priority


/* ========================== Module _App =========================== */

#include "Python.h"

#ifndef __LP64__
	/* Carbon GUI stuff, not available in 64-bit mode */


#include "pymactoolbox.h"

/* Macro to test whether a weak-loaded CFM function exists */
#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\
        PyErr_SetString(PyExc_NotImplementedError, \
        "Not available in this shared library/OS version"); \
        return NULL; \
    }} while(0)


#include <Carbon/Carbon.h>


static int ThemeButtonDrawInfo_Convert(PyObject *v, ThemeButtonDrawInfo *p_itself)
{
        return PyArg_Parse(v, "(iHH)", &p_itself->state, &p_itself->value, &p_itself->adornment);
}


static PyObject *App_Error;

/* ----------------- Object type ThemeDrawingState ------------------ */

PyTypeObject ThemeDrawingState_Type;

#define ThemeDrawingStateObj_Check(x) ((x)->ob_type == &ThemeDrawingState_Type || PyObject_TypeCheck((x), &ThemeDrawingState_Type))

typedef struct ThemeDrawingStateObject {
	PyObject_HEAD
	ThemeDrawingState ob_itself;
} ThemeDrawingStateObject;

PyObject *ThemeDrawingStateObj_New(ThemeDrawingState itself)
{
	ThemeDrawingStateObject *it;
	it = PyObject_NEW(ThemeDrawingStateObject, &ThemeDrawingState_Type);
	if (it == NULL) return NULL;
	it->ob_itself = itself;
	return (PyObject *)it;
}

int ThemeDrawingStateObj_Convert(PyObject *v, ThemeDrawingState *p_itself)
{
	if (!ThemeDrawingStateObj_Check(v))
	{
		PyErr_SetString(PyExc_TypeError, "ThemeDrawingState required");
		return 0;
	}
	*p_itself = ((ThemeDrawingStateObject *)v)->ob_itself;
	return 1;
}

static void ThemeDrawingStateObj_dealloc(ThemeDrawingStateObject *self)
{
	/* Cleanup of self->ob_itself goes here */
	self->ob_type->tp_free((PyObject *)self);
}

static PyObject *ThemeDrawingStateObj_SetThemeDrawingState(ThemeDrawingStateObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _rv;
	Boolean inDisposeNow;
#ifndef SetThemeDrawingState
	PyMac_PRECHECK(SetThemeDrawingState);
#endif
	if (!PyArg_ParseTuple(_args, "b",
	                      &inDisposeNow))
		return NULL;
	_rv = SetThemeDrawingState(_self->ob_itself,
	                           inDisposeNow);
	_res = Py_BuildValue("l",
	                     _rv);
	return _res;
}

static PyObject *ThemeDrawingStateObj_DisposeThemeDrawingState(ThemeDrawingStateObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _rv;
#ifndef DisposeThemeDrawingState
	PyMac_PRECHECK(DisposeThemeDrawingState);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_rv = DisposeThemeDrawingState(_self->ob_itself);
	_res = Py_BuildValue("l",
	                     _rv);
	return _res;
}

static PyMethodDef ThemeDrawingStateObj_methods[] = {
	{"SetThemeDrawingState", (PyCFunction)ThemeDrawingStateObj_SetThemeDrawingState, 1,
	 PyDoc_STR("(Boolean inDisposeNow) -> (OSStatus _rv)")},
	{"DisposeThemeDrawingState", (PyCFunction)ThemeDrawingStateObj_DisposeThemeDrawingState, 1,
	 PyDoc_STR("() -> (OSStatus _rv)")},
	{NULL, NULL, 0}
};

#define ThemeDrawingStateObj_getsetlist NULL


#define ThemeDrawingStateObj_compare NULL

#define ThemeDrawingStateObj_repr NULL

#define ThemeDrawingStateObj_hash NULL
#define ThemeDrawingStateObj_tp_init 0

#define ThemeDrawingStateObj_tp_alloc PyType_GenericAlloc

static PyObject *ThemeDrawingStateObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
{
	PyObject *_self;
	ThemeDrawingState itself;
	char *kw[] = {"itself", 0};

	if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, ThemeDrawingStateObj_Convert, &itself)) return NULL;
	if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
	((ThemeDrawingStateObject *)_self)->ob_itself = itself;
	return _self;
}

#define ThemeDrawingStateObj_tp_free PyObject_Del


PyTypeObject ThemeDrawingState_Type = {
	PyObject_HEAD_INIT(NULL)
	0, /*ob_size*/
	"_App.ThemeDrawingState", /*tp_name*/
	sizeof(ThemeDrawingStateObject), /*tp_basicsize*/
	0, /*tp_itemsize*/
	/* methods */
	(destructor) ThemeDrawingStateObj_dealloc, /*tp_dealloc*/
	0, /*tp_print*/
	(getattrfunc)0, /*tp_getattr*/
	(setattrfunc)0, /*tp_setattr*/
	(cmpfunc) ThemeDrawingStateObj_compare, /*tp_compare*/
	(reprfunc) ThemeDrawingStateObj_repr, /*tp_repr*/
	(PyNumberMethods *)0, /* tp_as_number */
	(PySequenceMethods *)0, /* tp_as_sequence */
	(PyMappingMethods *)0, /* tp_as_mapping */
	(hashfunc) ThemeDrawingStateObj_hash, /*tp_hash*/
	0, /*tp_call*/
	0, /*tp_str*/
	PyObject_GenericGetAttr, /*tp_getattro*/
	PyObject_GenericSetAttr, /*tp_setattro */
	0, /*tp_as_buffer*/
	Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
	0, /*tp_doc*/
	0, /*tp_traverse*/
	0, /*tp_clear*/
	0, /*tp_richcompare*/
	0, /*tp_weaklistoffset*/
	0, /*tp_iter*/
	0, /*tp_iternext*/
	ThemeDrawingStateObj_methods, /* tp_methods */
	0, /*tp_members*/
	ThemeDrawingStateObj_getsetlist, /*tp_getset*/
	0, /*tp_base*/
	0, /*tp_dict*/
	0, /*tp_descr_get*/
	0, /*tp_descr_set*/
	0, /*tp_dictoffset*/
	ThemeDrawingStateObj_tp_init, /* tp_init */
	ThemeDrawingStateObj_tp_alloc, /* tp_alloc */
	ThemeDrawingStateObj_tp_new, /* tp_new */
	ThemeDrawingStateObj_tp_free, /* tp_free */
};

/* --------------- End object type ThemeDrawingState ---------------- */


static PyObject *App_RegisterAppearanceClient(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
#ifndef RegisterAppearanceClient
	PyMac_PRECHECK(RegisterAppearanceClient);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = RegisterAppearanceClient();
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_UnregisterAppearanceClient(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
#ifndef UnregisterAppearanceClient
	PyMac_PRECHECK(UnregisterAppearanceClient);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = UnregisterAppearanceClient();
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_SetThemePen(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeBrush inBrush;
	SInt16 inDepth;
	Boolean inIsColorDevice;
#ifndef SetThemePen
	PyMac_PRECHECK(SetThemePen);
#endif
	if (!PyArg_ParseTuple(_args, "hhb",
	                      &inBrush,
	                      &inDepth,
	                      &inIsColorDevice))
		return NULL;
	_err = SetThemePen(inBrush,
	                   inDepth,
	                   inIsColorDevice);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_SetThemeBackground(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeBrush inBrush;
	SInt16 inDepth;
	Boolean inIsColorDevice;
#ifndef SetThemeBackground
	PyMac_PRECHECK(SetThemeBackground);
#endif
	if (!PyArg_ParseTuple(_args, "hhb",
	                      &inBrush,
	                      &inDepth,
	                      &inIsColorDevice))
		return NULL;
	_err = SetThemeBackground(inBrush,
	                          inDepth,
	                          inIsColorDevice);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_SetThemeTextColor(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeTextColor inColor;
	SInt16 inDepth;
	Boolean inIsColorDevice;
#ifndef SetThemeTextColor
	PyMac_PRECHECK(SetThemeTextColor);
#endif
	if (!PyArg_ParseTuple(_args, "hhb",
	                      &inColor,
	                      &inDepth,
	                      &inIsColorDevice))
		return NULL;
	_err = SetThemeTextColor(inColor,
	                         inDepth,
	                         inIsColorDevice);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_SetThemeWindowBackground(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	WindowPtr inWindow;
	ThemeBrush inBrush;
	Boolean inUpdate;
#ifndef SetThemeWindowBackground
	PyMac_PRECHECK(SetThemeWindowBackground);
#endif
	if (!PyArg_ParseTuple(_args, "O&hb",
	                      WinObj_Convert, &inWindow,
	                      &inBrush,
	                      &inUpdate))
		return NULL;
	_err = SetThemeWindowBackground(inWindow,
	                                inBrush,
	                                inUpdate);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeWindowHeader(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemeWindowHeader
	PyMac_PRECHECK(DrawThemeWindowHeader);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemeWindowHeader(&inRect,
	                             inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeWindowListViewHeader(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemeWindowListViewHeader
	PyMac_PRECHECK(DrawThemeWindowListViewHeader);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemeWindowListViewHeader(&inRect,
	                                     inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemePlacard(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemePlacard
	PyMac_PRECHECK(DrawThemePlacard);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemePlacard(&inRect,
	                        inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeEditTextFrame(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemeEditTextFrame
	PyMac_PRECHECK(DrawThemeEditTextFrame);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemeEditTextFrame(&inRect,
	                              inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeListBoxFrame(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemeListBoxFrame
	PyMac_PRECHECK(DrawThemeListBoxFrame);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemeListBoxFrame(&inRect,
	                             inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeFocusRect(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	Boolean inHasFocus;
#ifndef DrawThemeFocusRect
	PyMac_PRECHECK(DrawThemeFocusRect);
#endif
	if (!PyArg_ParseTuple(_args, "O&b",
	                      PyMac_GetRect, &inRect,
	                      &inHasFocus))
		return NULL;
	_err = DrawThemeFocusRect(&inRect,
	                          inHasFocus);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemePrimaryGroup(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemePrimaryGroup
	PyMac_PRECHECK(DrawThemePrimaryGroup);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemePrimaryGroup(&inRect,
	                             inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeSecondaryGroup(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemeSecondaryGroup
	PyMac_PRECHECK(DrawThemeSecondaryGroup);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemeSecondaryGroup(&inRect,
	                               inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeSeparator(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemeSeparator
	PyMac_PRECHECK(DrawThemeSeparator);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemeSeparator(&inRect,
	                          inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeModelessDialogFrame(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemeModelessDialogFrame
	PyMac_PRECHECK(DrawThemeModelessDialogFrame);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemeModelessDialogFrame(&inRect,
	                                    inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeGenericWell(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
	Boolean inFillCenter;
#ifndef DrawThemeGenericWell
	PyMac_PRECHECK(DrawThemeGenericWell);
#endif
	if (!PyArg_ParseTuple(_args, "O&lb",
	                      PyMac_GetRect, &inRect,
	                      &inState,
	                      &inFillCenter))
		return NULL;
	_err = DrawThemeGenericWell(&inRect,
	                            inState,
	                            inFillCenter);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeFocusRegion(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Boolean inHasFocus;
#ifndef DrawThemeFocusRegion
	PyMac_PRECHECK(DrawThemeFocusRegion);
#endif
	if (!PyArg_ParseTuple(_args, "b",
	                      &inHasFocus))
		return NULL;
	_err = DrawThemeFocusRegion((RgnHandle)0,
	                            inHasFocus);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_IsThemeInColor(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	Boolean _rv;
	SInt16 inDepth;
	Boolean inIsColorDevice;
#ifndef IsThemeInColor
	PyMac_PRECHECK(IsThemeInColor);
#endif
	if (!PyArg_ParseTuple(_args, "hb",
	                      &inDepth,
	                      &inIsColorDevice))
		return NULL;
	_rv = IsThemeInColor(inDepth,
	                     inIsColorDevice);
	_res = Py_BuildValue("b",
	                     _rv);
	return _res;
}

static PyObject *App_GetThemeAccentColors(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	CTabHandle outColors;
#ifndef GetThemeAccentColors
	PyMac_PRECHECK(GetThemeAccentColors);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetThemeAccentColors(&outColors);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     ResObj_New, outColors);
	return _res;
}

static PyObject *App_DrawThemeMenuBarBackground(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inBounds;
	ThemeMenuBarState inState;
	UInt32 inAttributes;
#ifndef DrawThemeMenuBarBackground
	PyMac_PRECHECK(DrawThemeMenuBarBackground);
#endif
	if (!PyArg_ParseTuple(_args, "O&Hl",
	                      PyMac_GetRect, &inBounds,
	                      &inState,
	                      &inAttributes))
		return NULL;
	_err = DrawThemeMenuBarBackground(&inBounds,
	                                  inState,
	                                  inAttributes);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeMenuBarHeight(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	SInt16 outHeight;
#ifndef GetThemeMenuBarHeight
	PyMac_PRECHECK(GetThemeMenuBarHeight);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetThemeMenuBarHeight(&outHeight);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("h",
	                     outHeight);
	return _res;
}

static PyObject *App_DrawThemeMenuBackground(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inMenuRect;
	ThemeMenuType inMenuType;
#ifndef DrawThemeMenuBackground
	PyMac_PRECHECK(DrawThemeMenuBackground);
#endif
	if (!PyArg_ParseTuple(_args, "O&H",
	                      PyMac_GetRect, &inMenuRect,
	                      &inMenuType))
		return NULL;
	_err = DrawThemeMenuBackground(&inMenuRect,
	                               inMenuType);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeMenuBackgroundRegion(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inMenuRect;
	ThemeMenuType menuType;
#ifndef GetThemeMenuBackgroundRegion
	PyMac_PRECHECK(GetThemeMenuBackgroundRegion);
#endif
	if (!PyArg_ParseTuple(_args, "O&H",
	                      PyMac_GetRect, &inMenuRect,
	                      &menuType))
		return NULL;
	_err = GetThemeMenuBackgroundRegion(&inMenuRect,
	                                    menuType,
	                                    (RgnHandle)0);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeMenuSeparator(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inItemRect;
#ifndef DrawThemeMenuSeparator
	PyMac_PRECHECK(DrawThemeMenuSeparator);
#endif
	if (!PyArg_ParseTuple(_args, "O&",
	                      PyMac_GetRect, &inItemRect))
		return NULL;
	_err = DrawThemeMenuSeparator(&inItemRect);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeMenuSeparatorHeight(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	SInt16 outHeight;
#ifndef GetThemeMenuSeparatorHeight
	PyMac_PRECHECK(GetThemeMenuSeparatorHeight);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetThemeMenuSeparatorHeight(&outHeight);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("h",
	                     outHeight);
	return _res;
}

static PyObject *App_GetThemeMenuItemExtra(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeMenuItemType inItemType;
	SInt16 outHeight;
	SInt16 outWidth;
#ifndef GetThemeMenuItemExtra
	PyMac_PRECHECK(GetThemeMenuItemExtra);
#endif
	if (!PyArg_ParseTuple(_args, "H",
	                      &inItemType))
		return NULL;
	_err = GetThemeMenuItemExtra(inItemType,
	                             &outHeight,
	                             &outWidth);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("hh",
	                     outHeight,
	                     outWidth);
	return _res;
}

static PyObject *App_GetThemeMenuTitleExtra(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	SInt16 outWidth;
	Boolean inIsSquished;
#ifndef GetThemeMenuTitleExtra
	PyMac_PRECHECK(GetThemeMenuTitleExtra);
#endif
	if (!PyArg_ParseTuple(_args, "b",
	                      &inIsSquished))
		return NULL;
	_err = GetThemeMenuTitleExtra(&outWidth,
	                              inIsSquished);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("h",
	                     outWidth);
	return _res;
}

static PyObject *App_DrawThemeTabPane(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeDrawState inState;
#ifndef DrawThemeTabPane
	PyMac_PRECHECK(DrawThemeTabPane);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &inRect,
	                      &inState))
		return NULL;
	_err = DrawThemeTabPane(&inRect,
	                        inState);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeTabRegion(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inRect;
	ThemeTabStyle inStyle;
	ThemeTabDirection inDirection;
#ifndef GetThemeTabRegion
	PyMac_PRECHECK(GetThemeTabRegion);
#endif
	if (!PyArg_ParseTuple(_args, "O&HH",
	                      PyMac_GetRect, &inRect,
	                      &inStyle,
	                      &inDirection))
		return NULL;
	_err = GetThemeTabRegion(&inRect,
	                         inStyle,
	                         inDirection,
	                         (RgnHandle)0);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_SetThemeCursor(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeCursor inCursor;
#ifndef SetThemeCursor
	PyMac_PRECHECK(SetThemeCursor);
#endif
	if (!PyArg_ParseTuple(_args, "l",
	                      &inCursor))
		return NULL;
	_err = SetThemeCursor(inCursor);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_SetAnimatedThemeCursor(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeCursor inCursor;
	UInt32 inAnimationStep;
#ifndef SetAnimatedThemeCursor
	PyMac_PRECHECK(SetAnimatedThemeCursor);
#endif
	if (!PyArg_ParseTuple(_args, "ll",
	                      &inCursor,
	                      &inAnimationStep))
		return NULL;
	_err = SetAnimatedThemeCursor(inCursor,
	                              inAnimationStep);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeScrollBarThumbStyle(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeScrollBarThumbStyle outStyle;
#ifndef GetThemeScrollBarThumbStyle
	PyMac_PRECHECK(GetThemeScrollBarThumbStyle);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetThemeScrollBarThumbStyle(&outStyle);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("H",
	                     outStyle);
	return _res;
}

static PyObject *App_GetThemeScrollBarArrowStyle(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeScrollBarArrowStyle outStyle;
#ifndef GetThemeScrollBarArrowStyle
	PyMac_PRECHECK(GetThemeScrollBarArrowStyle);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetThemeScrollBarArrowStyle(&outStyle);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("H",
	                     outStyle);
	return _res;
}

static PyObject *App_GetThemeCheckBoxStyle(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeCheckBoxStyle outStyle;
#ifndef GetThemeCheckBoxStyle
	PyMac_PRECHECK(GetThemeCheckBoxStyle);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetThemeCheckBoxStyle(&outStyle);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("H",
	                     outStyle);
	return _res;
}

static PyObject *App_UseThemeFont(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeFontID inFontID;
	ScriptCode inScript;
#ifndef UseThemeFont
	PyMac_PRECHECK(UseThemeFont);
#endif
	if (!PyArg_ParseTuple(_args, "Hh",
	                      &inFontID,
	                      &inScript))
		return NULL;
	_err = UseThemeFont(inFontID,
	                    inScript);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeTextBox(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	CFStringRef inString;
	ThemeFontID inFontID;
	ThemeDrawState inState;
	Boolean inWrapToWidth;
	Rect inBoundingBox;
	SInt16 inJust;
#ifndef DrawThemeTextBox
	PyMac_PRECHECK(DrawThemeTextBox);
#endif
	if (!PyArg_ParseTuple(_args, "O&HlbO&h",
	                      CFStringRefObj_Convert, &inString,
	                      &inFontID,
	                      &inState,
	                      &inWrapToWidth,
	                      PyMac_GetRect, &inBoundingBox,
	                      &inJust))
		return NULL;
	_err = DrawThemeTextBox(inString,
	                        inFontID,
	                        inState,
	                        inWrapToWidth,
	                        &inBoundingBox,
	                        inJust,
	                        NULL);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_TruncateThemeText(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	CFMutableStringRef inString;
	ThemeFontID inFontID;
	ThemeDrawState inState;
	SInt16 inPixelWidthLimit;
	TruncCode inTruncWhere;
	Boolean outTruncated;
#ifndef TruncateThemeText
	PyMac_PRECHECK(TruncateThemeText);
#endif
	if (!PyArg_ParseTuple(_args, "O&Hlhh",
	                      CFMutableStringRefObj_Convert, &inString,
	                      &inFontID,
	                      &inState,
	                      &inPixelWidthLimit,
	                      &inTruncWhere))
		return NULL;
	_err = TruncateThemeText(inString,
	                         inFontID,
	                         inState,
	                         inPixelWidthLimit,
	                         inTruncWhere,
	                         &outTruncated);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("b",
	                     outTruncated);
	return _res;
}

static PyObject *App_GetThemeTextDimensions(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	CFStringRef inString;
	ThemeFontID inFontID;
	ThemeDrawState inState;
	Boolean inWrapToWidth;
	Point ioBounds;
	SInt16 outBaseline;
#ifndef GetThemeTextDimensions
	PyMac_PRECHECK(GetThemeTextDimensions);
#endif
	if (!PyArg_ParseTuple(_args, "O&HlbO&",
	                      CFStringRefObj_Convert, &inString,
	                      &inFontID,
	                      &inState,
	                      &inWrapToWidth,
	                      PyMac_GetPoint, &ioBounds))
		return NULL;
	_err = GetThemeTextDimensions(inString,
	                              inFontID,
	                              inState,
	                              inWrapToWidth,
	                              &ioBounds,
	                              &outBaseline);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&h",
	                     PyMac_BuildPoint, ioBounds,
	                     outBaseline);
	return _res;
}

static PyObject *App_GetThemeTextShadowOutset(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeFontID inFontID;
	ThemeDrawState inState;
	Rect outOutset;
#ifndef GetThemeTextShadowOutset
	PyMac_PRECHECK(GetThemeTextShadowOutset);
#endif
	if (!PyArg_ParseTuple(_args, "Hl",
	                      &inFontID,
	                      &inState))
		return NULL;
	_err = GetThemeTextShadowOutset(inFontID,
	                                inState,
	                                &outOutset);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     PyMac_BuildRect, &outOutset);
	return _res;
}

static PyObject *App_DrawThemeScrollBarArrows(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect bounds;
	ThemeTrackEnableState enableState;
	ThemeTrackPressState pressState;
	Boolean isHoriz;
	Rect trackBounds;
#ifndef DrawThemeScrollBarArrows
	PyMac_PRECHECK(DrawThemeScrollBarArrows);
#endif
	if (!PyArg_ParseTuple(_args, "O&bbb",
	                      PyMac_GetRect, &bounds,
	                      &enableState,
	                      &pressState,
	                      &isHoriz))
		return NULL;
	_err = DrawThemeScrollBarArrows(&bounds,
	                                enableState,
	                                pressState,
	                                isHoriz,
	                                &trackBounds);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     PyMac_BuildRect, &trackBounds);
	return _res;
}

static PyObject *App_GetThemeScrollBarTrackRect(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect bounds;
	ThemeTrackEnableState enableState;
	ThemeTrackPressState pressState;
	Boolean isHoriz;
	Rect trackBounds;
#ifndef GetThemeScrollBarTrackRect
	PyMac_PRECHECK(GetThemeScrollBarTrackRect);
#endif
	if (!PyArg_ParseTuple(_args, "O&bbb",
	                      PyMac_GetRect, &bounds,
	                      &enableState,
	                      &pressState,
	                      &isHoriz))
		return NULL;
	_err = GetThemeScrollBarTrackRect(&bounds,
	                                  enableState,
	                                  pressState,
	                                  isHoriz,
	                                  &trackBounds);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     PyMac_BuildRect, &trackBounds);
	return _res;
}

static PyObject *App_HitTestThemeScrollBarArrows(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	Boolean _rv;
	Rect scrollBarBounds;
	ThemeTrackEnableState enableState;
	ThemeTrackPressState pressState;
	Boolean isHoriz;
	Point ptHit;
	Rect trackBounds;
	ControlPartCode partcode;
#ifndef HitTestThemeScrollBarArrows
	PyMac_PRECHECK(HitTestThemeScrollBarArrows);
#endif
	if (!PyArg_ParseTuple(_args, "O&bbbO&",
	                      PyMac_GetRect, &scrollBarBounds,
	                      &enableState,
	                      &pressState,
	                      &isHoriz,
	                      PyMac_GetPoint, &ptHit))
		return NULL;
	_rv = HitTestThemeScrollBarArrows(&scrollBarBounds,
	                                  enableState,
	                                  pressState,
	                                  isHoriz,
	                                  ptHit,
	                                  &trackBounds,
	                                  &partcode);
	_res = Py_BuildValue("bO&h",
	                     _rv,
	                     PyMac_BuildRect, &trackBounds,
	                     partcode);
	return _res;
}

static PyObject *App_DrawThemeScrollBarDelimiters(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeWindowType flavor;
	Rect inContRect;
	ThemeDrawState state;
	ThemeWindowAttributes attributes;
#ifndef DrawThemeScrollBarDelimiters
	PyMac_PRECHECK(DrawThemeScrollBarDelimiters);
#endif
	if (!PyArg_ParseTuple(_args, "HO&ll",
	                      &flavor,
	                      PyMac_GetRect, &inContRect,
	                      &state,
	                      &attributes))
		return NULL;
	_err = DrawThemeScrollBarDelimiters(flavor,
	                                    &inContRect,
	                                    state,
	                                    attributes);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeButton(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inBounds;
	UInt16 inKind;
	ThemeButtonDrawInfo inNewInfo;
	ThemeButtonDrawInfo inPrevInfo;
	UInt32 inUserData;
#ifndef DrawThemeButton
	PyMac_PRECHECK(DrawThemeButton);
#endif
	if (!PyArg_ParseTuple(_args, "O&HO&O&l",
	                      PyMac_GetRect, &inBounds,
	                      &inKind,
	                      ThemeButtonDrawInfo_Convert, &inNewInfo,
	                      ThemeButtonDrawInfo_Convert, &inPrevInfo,
	                      &inUserData))
		return NULL;
	_err = DrawThemeButton(&inBounds,
	                       inKind,
	                       &inNewInfo,
	                       &inPrevInfo,
	                       NULL,
	                       NULL,
	                       inUserData);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeButtonRegion(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inBounds;
	UInt16 inKind;
	ThemeButtonDrawInfo inNewInfo;
#ifndef GetThemeButtonRegion
	PyMac_PRECHECK(GetThemeButtonRegion);
#endif
	if (!PyArg_ParseTuple(_args, "O&HO&",
	                      PyMac_GetRect, &inBounds,
	                      &inKind,
	                      ThemeButtonDrawInfo_Convert, &inNewInfo))
		return NULL;
	_err = GetThemeButtonRegion(&inBounds,
	                            inKind,
	                            &inNewInfo,
	                            (RgnHandle)0);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeButtonContentBounds(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inBounds;
	UInt16 inKind;
	ThemeButtonDrawInfo inDrawInfo;
	Rect outBounds;
#ifndef GetThemeButtonContentBounds
	PyMac_PRECHECK(GetThemeButtonContentBounds);
#endif
	if (!PyArg_ParseTuple(_args, "O&HO&",
	                      PyMac_GetRect, &inBounds,
	                      &inKind,
	                      ThemeButtonDrawInfo_Convert, &inDrawInfo))
		return NULL;
	_err = GetThemeButtonContentBounds(&inBounds,
	                                   inKind,
	                                   &inDrawInfo,
	                                   &outBounds);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     PyMac_BuildRect, &outBounds);
	return _res;
}

static PyObject *App_GetThemeButtonBackgroundBounds(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect inBounds;
	UInt16 inKind;
	ThemeButtonDrawInfo inDrawInfo;
	Rect outBounds;
#ifndef GetThemeButtonBackgroundBounds
	PyMac_PRECHECK(GetThemeButtonBackgroundBounds);
#endif
	if (!PyArg_ParseTuple(_args, "O&HO&",
	                      PyMac_GetRect, &inBounds,
	                      &inKind,
	                      ThemeButtonDrawInfo_Convert, &inDrawInfo))
		return NULL;
	_err = GetThemeButtonBackgroundBounds(&inBounds,
	                                      inKind,
	                                      &inDrawInfo,
	                                      &outBounds);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     PyMac_BuildRect, &outBounds);
	return _res;
}

static PyObject *App_PlayThemeSound(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeSoundKind kind;
#ifndef PlayThemeSound
	PyMac_PRECHECK(PlayThemeSound);
#endif
	if (!PyArg_ParseTuple(_args, "O&",
	                      PyMac_GetOSType, &kind))
		return NULL;
	_err = PlayThemeSound(kind);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_BeginThemeDragSound(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeDragSoundKind kind;
#ifndef BeginThemeDragSound
	PyMac_PRECHECK(BeginThemeDragSound);
#endif
	if (!PyArg_ParseTuple(_args, "O&",
	                      PyMac_GetOSType, &kind))
		return NULL;
	_err = BeginThemeDragSound(kind);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_EndThemeDragSound(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
#ifndef EndThemeDragSound
	PyMac_PRECHECK(EndThemeDragSound);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = EndThemeDragSound();
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeTickMark(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect bounds;
	ThemeDrawState state;
#ifndef DrawThemeTickMark
	PyMac_PRECHECK(DrawThemeTickMark);
#endif
	if (!PyArg_ParseTuple(_args, "O&l",
	                      PyMac_GetRect, &bounds,
	                      &state))
		return NULL;
	_err = DrawThemeTickMark(&bounds,
	                         state);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeChasingArrows(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect bounds;
	UInt32 index;
	ThemeDrawState state;
	UInt32 eraseData;
#ifndef DrawThemeChasingArrows
	PyMac_PRECHECK(DrawThemeChasingArrows);
#endif
	if (!PyArg_ParseTuple(_args, "O&lll",
	                      PyMac_GetRect, &bounds,
	                      &index,
	                      &state,
	                      &eraseData))
		return NULL;
	_err = DrawThemeChasingArrows(&bounds,
	                              index,
	                              state,
	                              NULL,
	                              eraseData);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemePopupArrow(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Rect bounds;
	ThemeArrowOrientation orientation;
	ThemePopupArrowSize size;
	ThemeDrawState state;
	UInt32 eraseData;
#ifndef DrawThemePopupArrow
	PyMac_PRECHECK(DrawThemePopupArrow);
#endif
	if (!PyArg_ParseTuple(_args, "O&HHll",
	                      PyMac_GetRect, &bounds,
	                      &orientation,
	                      &size,
	                      &state,
	                      &eraseData))
		return NULL;
	_err = DrawThemePopupArrow(&bounds,
	                           orientation,
	                           size,
	                           state,
	                           NULL,
	                           eraseData);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeStandaloneGrowBox(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Point origin;
	ThemeGrowDirection growDirection;
	Boolean isSmall;
	ThemeDrawState state;
#ifndef DrawThemeStandaloneGrowBox
	PyMac_PRECHECK(DrawThemeStandaloneGrowBox);
#endif
	if (!PyArg_ParseTuple(_args, "O&Hbl",
	                      PyMac_GetPoint, &origin,
	                      &growDirection,
	                      &isSmall,
	                      &state))
		return NULL;
	_err = DrawThemeStandaloneGrowBox(origin,
	                                  growDirection,
	                                  isSmall,
	                                  state);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_DrawThemeStandaloneNoGrowBox(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Point origin;
	ThemeGrowDirection growDirection;
	Boolean isSmall;
	ThemeDrawState state;
#ifndef DrawThemeStandaloneNoGrowBox
	PyMac_PRECHECK(DrawThemeStandaloneNoGrowBox);
#endif
	if (!PyArg_ParseTuple(_args, "O&Hbl",
	                      PyMac_GetPoint, &origin,
	                      &growDirection,
	                      &isSmall,
	                      &state))
		return NULL;
	_err = DrawThemeStandaloneNoGrowBox(origin,
	                                    growDirection,
	                                    isSmall,
	                                    state);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeStandaloneGrowBoxBounds(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	Point origin;
	ThemeGrowDirection growDirection;
	Boolean isSmall;
	Rect bounds;
#ifndef GetThemeStandaloneGrowBoxBounds
	PyMac_PRECHECK(GetThemeStandaloneGrowBoxBounds);
#endif
	if (!PyArg_ParseTuple(_args, "O&Hb",
	                      PyMac_GetPoint, &origin,
	                      &growDirection,
	                      &isSmall))
		return NULL;
	_err = GetThemeStandaloneGrowBoxBounds(origin,
	                                       growDirection,
	                                       isSmall,
	                                       &bounds);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     PyMac_BuildRect, &bounds);
	return _res;
}

static PyObject *App_NormalizeThemeDrawingState(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
#ifndef NormalizeThemeDrawingState
	PyMac_PRECHECK(NormalizeThemeDrawingState);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = NormalizeThemeDrawingState();
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_GetThemeDrawingState(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeDrawingState outState;
#ifndef GetThemeDrawingState
	PyMac_PRECHECK(GetThemeDrawingState);
#endif
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetThemeDrawingState(&outState);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     ThemeDrawingStateObj_New, outState);
	return _res;
}

static PyObject *App_ApplyThemeBackground(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeBackgroundKind inKind;
	Rect bounds;
	ThemeDrawState inState;
	SInt16 inDepth;
	Boolean inColorDev;
#ifndef ApplyThemeBackground
	PyMac_PRECHECK(ApplyThemeBackground);
#endif
	if (!PyArg_ParseTuple(_args, "lO&lhb",
	                      &inKind,
	                      PyMac_GetRect, &bounds,
	                      &inState,
	                      &inDepth,
	                      &inColorDev))
		return NULL;
	_err = ApplyThemeBackground(inKind,
	                            &bounds,
	                            inState,
	                            inDepth,
	                            inColorDev);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_SetThemeTextColorForWindow(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	WindowPtr window;
	Boolean isActive;
	SInt16 depth;
	Boolean isColorDev;
#ifndef SetThemeTextColorForWindow
	PyMac_PRECHECK(SetThemeTextColorForWindow);
#endif
	if (!PyArg_ParseTuple(_args, "O&bhb",
	                      WinObj_Convert, &window,
	                      &isActive,
	                      &depth,
	                      &isColorDev))
		return NULL;
	_err = SetThemeTextColorForWindow(window,
	                                  isActive,
	                                  depth,
	                                  isColorDev);
	if (_err != noErr) return PyMac_Error(_err);
	Py_INCREF(Py_None);
	_res = Py_None;
	return _res;
}

static PyObject *App_IsValidAppearanceFileType(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	Boolean _rv;
	OSType fileType;
#ifndef IsValidAppearanceFileType
	PyMac_PRECHECK(IsValidAppearanceFileType);
#endif
	if (!PyArg_ParseTuple(_args, "O&",
	                      PyMac_GetOSType, &fileType))
		return NULL;
	_rv = IsValidAppearanceFileType(fileType);
	_res = Py_BuildValue("b",
	                     _rv);
	return _res;
}

static PyObject *App_GetThemeBrushAsColor(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeBrush inBrush;
	SInt16 inDepth;
	Boolean inColorDev;
	RGBColor outColor;
#ifndef GetThemeBrushAsColor
	PyMac_PRECHECK(GetThemeBrushAsColor);
#endif
	if (!PyArg_ParseTuple(_args, "hhb",
	                      &inBrush,
	                      &inDepth,
	                      &inColorDev))
		return NULL;
	_err = GetThemeBrushAsColor(inBrush,
	                            inDepth,
	                            inColorDev,
	                            &outColor);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     QdRGB_New, &outColor);
	return _res;
}

static PyObject *App_GetThemeTextColor(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeTextColor inColor;
	SInt16 inDepth;
	Boolean inColorDev;
	RGBColor outColor;
#ifndef GetThemeTextColor
	PyMac_PRECHECK(GetThemeTextColor);
#endif
	if (!PyArg_ParseTuple(_args, "hhb",
	                      &inColor,
	                      &inDepth,
	                      &inColorDev))
		return NULL;
	_err = GetThemeTextColor(inColor,
	                         inDepth,
	                         inColorDev,
	                         &outColor);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("O&",
	                     QdRGB_New, &outColor);
	return _res;
}

static PyObject *App_GetThemeMetric(PyObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	ThemeMetric inMetric;
	SInt32 outMetric;
#ifndef GetThemeMetric
	PyMac_PRECHECK(GetThemeMetric);
#endif
	if (!PyArg_ParseTuple(_args, "l",
	                      &inMetric))
		return NULL;
	_err = GetThemeMetric(inMetric,
	                      &outMetric);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("l",
	                     outMetric);
	return _res;
}

static PyMethodDef App_methods[] = {
	{"RegisterAppearanceClient", (PyCFunction)App_RegisterAppearanceClient, 1,
	 PyDoc_STR("() -> None")},
	{"UnregisterAppearanceClient", (PyCFunction)App_UnregisterAppearanceClient, 1,
	 PyDoc_STR("() -> None")},
	{"SetThemePen", (PyCFunction)App_SetThemePen, 1,
	 PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None")},
	{"SetThemeBackground", (PyCFunction)App_SetThemeBackground, 1,
	 PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inIsColorDevice) -> None")},
	{"SetThemeTextColor", (PyCFunction)App_SetThemeTextColor, 1,
	 PyDoc_STR("(ThemeTextColor inColor, SInt16 inDepth, Boolean inIsColorDevice) -> None")},
	{"SetThemeWindowBackground", (PyCFunction)App_SetThemeWindowBackground, 1,
	 PyDoc_STR("(WindowPtr inWindow, ThemeBrush inBrush, Boolean inUpdate) -> None")},
	{"DrawThemeWindowHeader", (PyCFunction)App_DrawThemeWindowHeader, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemeWindowListViewHeader", (PyCFunction)App_DrawThemeWindowListViewHeader, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemePlacard", (PyCFunction)App_DrawThemePlacard, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemeEditTextFrame", (PyCFunction)App_DrawThemeEditTextFrame, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemeListBoxFrame", (PyCFunction)App_DrawThemeListBoxFrame, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemeFocusRect", (PyCFunction)App_DrawThemeFocusRect, 1,
	 PyDoc_STR("(Rect inRect, Boolean inHasFocus) -> None")},
	{"DrawThemePrimaryGroup", (PyCFunction)App_DrawThemePrimaryGroup, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemeSecondaryGroup", (PyCFunction)App_DrawThemeSecondaryGroup, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemeSeparator", (PyCFunction)App_DrawThemeSeparator, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemeModelessDialogFrame", (PyCFunction)App_DrawThemeModelessDialogFrame, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"DrawThemeGenericWell", (PyCFunction)App_DrawThemeGenericWell, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState, Boolean inFillCenter) -> None")},
	{"DrawThemeFocusRegion", (PyCFunction)App_DrawThemeFocusRegion, 1,
	 PyDoc_STR("(Boolean inHasFocus) -> None")},
	{"IsThemeInColor", (PyCFunction)App_IsThemeInColor, 1,
	 PyDoc_STR("(SInt16 inDepth, Boolean inIsColorDevice) -> (Boolean _rv)")},
	{"GetThemeAccentColors", (PyCFunction)App_GetThemeAccentColors, 1,
	 PyDoc_STR("() -> (CTabHandle outColors)")},
	{"DrawThemeMenuBarBackground", (PyCFunction)App_DrawThemeMenuBarBackground, 1,
	 PyDoc_STR("(Rect inBounds, ThemeMenuBarState inState, UInt32 inAttributes) -> None")},
	{"GetThemeMenuBarHeight", (PyCFunction)App_GetThemeMenuBarHeight, 1,
	 PyDoc_STR("() -> (SInt16 outHeight)")},
	{"DrawThemeMenuBackground", (PyCFunction)App_DrawThemeMenuBackground, 1,
	 PyDoc_STR("(Rect inMenuRect, ThemeMenuType inMenuType) -> None")},
	{"GetThemeMenuBackgroundRegion", (PyCFunction)App_GetThemeMenuBackgroundRegion, 1,
	 PyDoc_STR("(Rect inMenuRect, ThemeMenuType menuType) -> None")},
	{"DrawThemeMenuSeparator", (PyCFunction)App_DrawThemeMenuSeparator, 1,
	 PyDoc_STR("(Rect inItemRect) -> None")},
	{"GetThemeMenuSeparatorHeight", (PyCFunction)App_GetThemeMenuSeparatorHeight, 1,
	 PyDoc_STR("() -> (SInt16 outHeight)")},
	{"GetThemeMenuItemExtra", (PyCFunction)App_GetThemeMenuItemExtra, 1,
	 PyDoc_STR("(ThemeMenuItemType inItemType) -> (SInt16 outHeight, SInt16 outWidth)")},
	{"GetThemeMenuTitleExtra", (PyCFunction)App_GetThemeMenuTitleExtra, 1,
	 PyDoc_STR("(Boolean inIsSquished) -> (SInt16 outWidth)")},
	{"DrawThemeTabPane", (PyCFunction)App_DrawThemeTabPane, 1,
	 PyDoc_STR("(Rect inRect, ThemeDrawState inState) -> None")},
	{"GetThemeTabRegion", (PyCFunction)App_GetThemeTabRegion, 1,
	 PyDoc_STR("(Rect inRect, ThemeTabStyle inStyle, ThemeTabDirection inDirection) -> None")},
	{"SetThemeCursor", (PyCFunction)App_SetThemeCursor, 1,
	 PyDoc_STR("(ThemeCursor inCursor) -> None")},
	{"SetAnimatedThemeCursor", (PyCFunction)App_SetAnimatedThemeCursor, 1,
	 PyDoc_STR("(ThemeCursor inCursor, UInt32 inAnimationStep) -> None")},
	{"GetThemeScrollBarThumbStyle", (PyCFunction)App_GetThemeScrollBarThumbStyle, 1,
	 PyDoc_STR("() -> (ThemeScrollBarThumbStyle outStyle)")},
	{"GetThemeScrollBarArrowStyle", (PyCFunction)App_GetThemeScrollBarArrowStyle, 1,
	 PyDoc_STR("() -> (ThemeScrollBarArrowStyle outStyle)")},
	{"GetThemeCheckBoxStyle", (PyCFunction)App_GetThemeCheckBoxStyle, 1,
	 PyDoc_STR("() -> (ThemeCheckBoxStyle outStyle)")},
	{"UseThemeFont", (PyCFunction)App_UseThemeFont, 1,
	 PyDoc_STR("(ThemeFontID inFontID, ScriptCode inScript) -> None")},
	{"DrawThemeTextBox", (PyCFunction)App_DrawThemeTextBox, 1,
	 PyDoc_STR("(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Rect inBoundingBox, SInt16 inJust) -> None")},
	{"TruncateThemeText", (PyCFunction)App_TruncateThemeText, 1,
	 PyDoc_STR("(CFMutableStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, SInt16 inPixelWidthLimit, TruncCode inTruncWhere) -> (Boolean outTruncated)")},
	{"GetThemeTextDimensions", (PyCFunction)App_GetThemeTextDimensions, 1,
	 PyDoc_STR("(CFStringRef inString, ThemeFontID inFontID, ThemeDrawState inState, Boolean inWrapToWidth, Point ioBounds) -> (Point ioBounds, SInt16 outBaseline)")},
	{"GetThemeTextShadowOutset", (PyCFunction)App_GetThemeTextShadowOutset, 1,
	 PyDoc_STR("(ThemeFontID inFontID, ThemeDrawState inState) -> (Rect outOutset)")},
	{"DrawThemeScrollBarArrows", (PyCFunction)App_DrawThemeScrollBarArrows, 1,
	 PyDoc_STR("(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)")},
	{"GetThemeScrollBarTrackRect", (PyCFunction)App_GetThemeScrollBarTrackRect, 1,
	 PyDoc_STR("(Rect bounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz) -> (Rect trackBounds)")},
	{"HitTestThemeScrollBarArrows", (PyCFunction)App_HitTestThemeScrollBarArrows, 1,
	 PyDoc_STR("(Rect scrollBarBounds, ThemeTrackEnableState enableState, ThemeTrackPressState pressState, Boolean isHoriz, Point ptHit) -> (Boolean _rv, Rect trackBounds, ControlPartCode partcode)")},
	{"DrawThemeScrollBarDelimiters", (PyCFunction)App_DrawThemeScrollBarDelimiters, 1,
	 PyDoc_STR("(ThemeWindowType flavor, Rect inContRect, ThemeDrawState state, ThemeWindowAttributes attributes) -> None")},
	{"DrawThemeButton", (PyCFunction)App_DrawThemeButton, 1,
	 PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inNewInfo, ThemeButtonDrawInfo inPrevInfo, UInt32 inUserData) -> None")},
	{"GetThemeButtonRegion", (PyCFunction)App_GetThemeButtonRegion, 1,
	 PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inNewInfo) -> None")},
	{"GetThemeButtonContentBounds", (PyCFunction)App_GetThemeButtonContentBounds, 1,
	 PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inDrawInfo) -> (Rect outBounds)")},
	{"GetThemeButtonBackgroundBounds", (PyCFunction)App_GetThemeButtonBackgroundBounds, 1,
	 PyDoc_STR("(Rect inBounds, UInt16 inKind, ThemeButtonDrawInfo inDrawInfo) -> (Rect outBounds)")},
	{"PlayThemeSound", (PyCFunction)App_PlayThemeSound, 1,
	 PyDoc_STR("(ThemeSoundKind kind) -> None")},
	{"BeginThemeDragSound", (PyCFunction)App_BeginThemeDragSound, 1,
	 PyDoc_STR("(ThemeDragSoundKind kind) -> None")},
	{"EndThemeDragSound", (PyCFunction)App_EndThemeDragSound, 1,
	 PyDoc_STR("() -> None")},
	{"DrawThemeTickMark", (PyCFunction)App_DrawThemeTickMark, 1,
	 PyDoc_STR("(Rect bounds, ThemeDrawState state) -> None")},
	{"DrawThemeChasingArrows", (PyCFunction)App_DrawThemeChasingArrows, 1,
	 PyDoc_STR("(Rect bounds, UInt32 index, ThemeDrawState state, UInt32 eraseData) -> None")},
	{"DrawThemePopupArrow", (PyCFunction)App_DrawThemePopupArrow, 1,
	 PyDoc_STR("(Rect bounds, ThemeArrowOrientation orientation, ThemePopupArrowSize size, ThemeDrawState state, UInt32 eraseData) -> None")},
	{"DrawThemeStandaloneGrowBox", (PyCFunction)App_DrawThemeStandaloneGrowBox, 1,
	 PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None")},
	{"DrawThemeStandaloneNoGrowBox", (PyCFunction)App_DrawThemeStandaloneNoGrowBox, 1,
	 PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall, ThemeDrawState state) -> None")},
	{"GetThemeStandaloneGrowBoxBounds", (PyCFunction)App_GetThemeStandaloneGrowBoxBounds, 1,
	 PyDoc_STR("(Point origin, ThemeGrowDirection growDirection, Boolean isSmall) -> (Rect bounds)")},
	{"NormalizeThemeDrawingState", (PyCFunction)App_NormalizeThemeDrawingState, 1,
	 PyDoc_STR("() -> None")},
	{"GetThemeDrawingState", (PyCFunction)App_GetThemeDrawingState, 1,
	 PyDoc_STR("() -> (ThemeDrawingState outState)")},
	{"ApplyThemeBackground", (PyCFunction)App_ApplyThemeBackground, 1,
	 PyDoc_STR("(ThemeBackgroundKind inKind, Rect bounds, ThemeDrawState inState, SInt16 inDepth, Boolean inColorDev) -> None")},
	{"SetThemeTextColorForWindow", (PyCFunction)App_SetThemeTextColorForWindow, 1,
	 PyDoc_STR("(WindowPtr window, Boolean isActive, SInt16 depth, Boolean isColorDev) -> None")},
	{"IsValidAppearanceFileType", (PyCFunction)App_IsValidAppearanceFileType, 1,
	 PyDoc_STR("(OSType fileType) -> (Boolean _rv)")},
	{"GetThemeBrushAsColor", (PyCFunction)App_GetThemeBrushAsColor, 1,
	 PyDoc_STR("(ThemeBrush inBrush, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)")},
	{"GetThemeTextColor", (PyCFunction)App_GetThemeTextColor, 1,
	 PyDoc_STR("(ThemeTextColor inColor, SInt16 inDepth, Boolean inColorDev) -> (RGBColor outColor)")},
	{"GetThemeMetric", (PyCFunction)App_GetThemeMetric, 1,
	 PyDoc_STR("(ThemeMetric inMetric) -> (SInt32 outMetric)")},
	{NULL, NULL, 0}
};


#else  	/* __LP64__ */

static PyMethodDef App_methods[] = {
	{NULL, NULL, 0}
};

#endif /* __LP64__ */


void init_App(void)
{
	PyObject *m;
#ifndef __LP64__
	PyObject *d;
#endif /* !__LP64__ */


	m = Py_InitModule("_App", App_methods);
#ifndef __LP64__
	d = PyModule_GetDict(m);
	App_Error = PyMac_GetOSErrException();
	if (App_Error == NULL ||
	    PyDict_SetItemString(d, "Error", App_Error) != 0)
		return;
	ThemeDrawingState_Type.ob_type = &PyType_Type;
	if (PyType_Ready(&ThemeDrawingState_Type) < 0) return;
	Py_INCREF(&ThemeDrawingState_Type);
	PyModule_AddObject(m, "ThemeDrawingState", (PyObject *)&ThemeDrawingState_Type);
	/* Backward-compatible name */
	Py_INCREF(&ThemeDrawingState_Type);
	PyModule_AddObject(m, "ThemeDrawingStateType", (PyObject *)&ThemeDrawingState_Type);
#endif /* __LP64__ */
}

/* ======================== End module _App ========================= */