Added support for PenState and Patterns (and the accompanying qd
globals)
diff --git a/Mac/Modules/qd/Qdmodule.c b/Mac/Modules/qd/Qdmodule.c
index a9f1865..14d5a4d 100644
--- a/Mac/Modules/qd/Qdmodule.c
+++ b/Mac/Modules/qd/Qdmodule.c
@@ -415,6 +415,28 @@
 	return _res;
 }
 
+static PyObject *Qd_BackPat(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Pattern *pat__in__;
+	int pat__in_len__;
+	if (!PyArg_ParseTuple(_args, "s#",
+	                      (char **)&pat__in__, &pat__in_len__))
+		return NULL;
+	if (pat__in_len__ != sizeof(Pattern))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)");
+		goto pat__error__;
+	}
+	BackPat(pat__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_InitCursor(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -530,6 +552,43 @@
 	return _res;
 }
 
+static PyObject *Qd_GetPenState(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	PenState pnState__out__;
+	if (!PyArg_ParseTuple(_args, ""))
+		return NULL;
+	GetPenState(&pnState__out__);
+	_res = Py_BuildValue("s#",
+	                     (char *)&pnState__out__, (int)sizeof(PenState));
+ pnState__error__: ;
+	return _res;
+}
+
+static PyObject *Qd_SetPenState(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	PenState *pnState__in__;
+	int pnState__in_len__;
+	if (!PyArg_ParseTuple(_args, "s#",
+	                      (char **)&pnState__in__, &pnState__in_len__))
+		return NULL;
+	if (pnState__in_len__ != sizeof(PenState))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(PenState)");
+		goto pnState__error__;
+	}
+	SetPenState(pnState__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pnState__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_PenSize(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -563,6 +622,28 @@
 	return _res;
 }
 
+static PyObject *Qd_PenPat(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Pattern *pat__in__;
+	int pat__in_len__;
+	if (!PyArg_ParseTuple(_args, "s#",
+	                      (char **)&pat__in__, &pat__in_len__))
+		return NULL;
+	if (pat__in_len__ != sizeof(Pattern))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)");
+		goto pat__error__;
+	}
+	PenPat(pat__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_PenNormal(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -898,6 +979,31 @@
 	return _res;
 }
 
+static PyObject *Qd_FillRect(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Rect r;
+	Pattern *pat__in__;
+	int pat__in_len__;
+	if (!PyArg_ParseTuple(_args, "O&s#",
+	                      PyMac_GetRect, &r,
+	                      (char **)&pat__in__, &pat__in_len__))
+		return NULL;
+	if (pat__in_len__ != sizeof(Pattern))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)");
+		goto pat__error__;
+	}
+	FillRect(&r,
+	         pat__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_FrameOval(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -958,6 +1064,31 @@
 	return _res;
 }
 
+static PyObject *Qd_FillOval(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Rect r;
+	Pattern *pat__in__;
+	int pat__in_len__;
+	if (!PyArg_ParseTuple(_args, "O&s#",
+	                      PyMac_GetRect, &r,
+	                      (char **)&pat__in__, &pat__in_len__))
+		return NULL;
+	if (pat__in_len__ != sizeof(Pattern))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)");
+		goto pat__error__;
+	}
+	FillOval(&r,
+	         pat__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_FrameRoundRect(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -1042,6 +1173,37 @@
 	return _res;
 }
 
+static PyObject *Qd_FillRoundRect(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Rect r;
+	short ovalWidth;
+	short ovalHeight;
+	Pattern *pat__in__;
+	int pat__in_len__;
+	if (!PyArg_ParseTuple(_args, "O&hhs#",
+	                      PyMac_GetRect, &r,
+	                      &ovalWidth,
+	                      &ovalHeight,
+	                      (char **)&pat__in__, &pat__in_len__))
+		return NULL;
+	if (pat__in_len__ != sizeof(Pattern))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)");
+		goto pat__error__;
+	}
+	FillRoundRect(&r,
+	              ovalWidth,
+	              ovalHeight,
+	              pat__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_FrameArc(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -1126,6 +1288,37 @@
 	return _res;
 }
 
+static PyObject *Qd_FillArc(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Rect r;
+	short startAngle;
+	short arcAngle;
+	Pattern *pat__in__;
+	int pat__in_len__;
+	if (!PyArg_ParseTuple(_args, "O&hhs#",
+	                      PyMac_GetRect, &r,
+	                      &startAngle,
+	                      &arcAngle,
+	                      (char **)&pat__in__, &pat__in_len__))
+		return NULL;
+	if (pat__in_len__ != sizeof(Pattern))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)");
+		goto pat__error__;
+	}
+	FillArc(&r,
+	        startAngle,
+	        arcAngle,
+	        pat__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_NewRgn(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -1521,6 +1714,31 @@
 	return _res;
 }
 
+static PyObject *Qd_FillRgn(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	RgnHandle rgn;
+	Pattern *pat__in__;
+	int pat__in_len__;
+	if (!PyArg_ParseTuple(_args, "O&s#",
+	                      ResObj_Convert, &rgn,
+	                      (char **)&pat__in__, &pat__in_len__))
+		return NULL;
+	if (pat__in_len__ != sizeof(Pattern))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)");
+		goto pat__error__;
+	}
+	FillRgn(rgn,
+	        pat__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_ScrollRect(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -1811,6 +2029,31 @@
 	return _res;
 }
 
+static PyObject *Qd_FillPoly(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	PolyHandle poly;
+	Pattern *pat__in__;
+	int pat__in_len__;
+	if (!PyArg_ParseTuple(_args, "O&s#",
+	                      ResObj_Convert, &poly,
+	                      (char **)&pat__in__, &pat__in_len__))
+		return NULL;
+	if (pat__in_len__ != sizeof(Pattern))
+	{
+		PyErr_SetString(PyExc_TypeError, "buffer length should be sizeof(Pattern)");
+		goto pat__error__;
+	}
+	FillPoly(poly,
+	         pat__in__);
+	Py_INCREF(Py_None);
+	_res = Py_None;
+ pat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_SetPt(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -2875,6 +3118,27 @@
 	return _res;
 }
 
+static PyObject *Qd_GetIndPattern(_self, _args)
+	PyObject *_self;
+	PyObject *_args;
+{
+	PyObject *_res = NULL;
+	Pattern thePat__out__;
+	short patternListID;
+	short index;
+	if (!PyArg_ParseTuple(_args, "hh",
+	                      &patternListID,
+	                      &index))
+		return NULL;
+	GetIndPattern(&thePat__out__,
+	              patternListID,
+	              index);
+	_res = Py_BuildValue("s#",
+	                     (char *)&thePat__out__, (int)sizeof(Pattern));
+ thePat__error__: ;
+	return _res;
+}
+
 static PyObject *Qd_TextFont(_self, _args)
 	PyObject *_self;
 	PyObject *_args;
@@ -3154,6 +3418,8 @@
 	 "(RgnHandle rgn) -> None"},
 	{"ClipRect", (PyCFunction)Qd_ClipRect, 1,
 	 "(Rect r) -> None"},
+	{"BackPat", (PyCFunction)Qd_BackPat, 1,
+	 "(Pattern pat) -> None"},
 	{"InitCursor", (PyCFunction)Qd_InitCursor, 1,
 	 "() -> None"},
 	{"SetCursor", (PyCFunction)Qd_SetCursor, 1,
@@ -3170,10 +3436,16 @@
 	 "() -> None"},
 	{"GetPen", (PyCFunction)Qd_GetPen, 1,
 	 "(Point pt) -> (Point pt)"},
+	{"GetPenState", (PyCFunction)Qd_GetPenState, 1,
+	 "() -> (PenState pnState)"},
+	{"SetPenState", (PyCFunction)Qd_SetPenState, 1,
+	 "(PenState pnState) -> None"},
 	{"PenSize", (PyCFunction)Qd_PenSize, 1,
 	 "(short width, short height) -> None"},
 	{"PenMode", (PyCFunction)Qd_PenMode, 1,
 	 "(short mode) -> None"},
+	{"PenPat", (PyCFunction)Qd_PenPat, 1,
+	 "(Pattern pat) -> None"},
 	{"PenNormal", (PyCFunction)Qd_PenNormal, 1,
 	 "() -> None"},
 	{"MoveTo", (PyCFunction)Qd_MoveTo, 1,
@@ -3212,6 +3484,8 @@
 	 "(Rect r) -> None"},
 	{"InvertRect", (PyCFunction)Qd_InvertRect, 1,
 	 "(Rect r) -> None"},
+	{"FillRect", (PyCFunction)Qd_FillRect, 1,
+	 "(Rect r, Pattern pat) -> None"},
 	{"FrameOval", (PyCFunction)Qd_FrameOval, 1,
 	 "(Rect r) -> None"},
 	{"PaintOval", (PyCFunction)Qd_PaintOval, 1,
@@ -3220,6 +3494,8 @@
 	 "(Rect r) -> None"},
 	{"InvertOval", (PyCFunction)Qd_InvertOval, 1,
 	 "(Rect r) -> None"},
+	{"FillOval", (PyCFunction)Qd_FillOval, 1,
+	 "(Rect r, Pattern pat) -> None"},
 	{"FrameRoundRect", (PyCFunction)Qd_FrameRoundRect, 1,
 	 "(Rect r, short ovalWidth, short ovalHeight) -> None"},
 	{"PaintRoundRect", (PyCFunction)Qd_PaintRoundRect, 1,
@@ -3228,6 +3504,8 @@
 	 "(Rect r, short ovalWidth, short ovalHeight) -> None"},
 	{"InvertRoundRect", (PyCFunction)Qd_InvertRoundRect, 1,
 	 "(Rect r, short ovalWidth, short ovalHeight) -> None"},
+	{"FillRoundRect", (PyCFunction)Qd_FillRoundRect, 1,
+	 "(Rect r, short ovalWidth, short ovalHeight, Pattern pat) -> None"},
 	{"FrameArc", (PyCFunction)Qd_FrameArc, 1,
 	 "(Rect r, short startAngle, short arcAngle) -> None"},
 	{"PaintArc", (PyCFunction)Qd_PaintArc, 1,
@@ -3236,6 +3514,8 @@
 	 "(Rect r, short startAngle, short arcAngle) -> None"},
 	{"InvertArc", (PyCFunction)Qd_InvertArc, 1,
 	 "(Rect r, short startAngle, short arcAngle) -> None"},
+	{"FillArc", (PyCFunction)Qd_FillArc, 1,
+	 "(Rect r, short startAngle, short arcAngle, Pattern pat) -> None"},
 	{"NewRgn", (PyCFunction)Qd_NewRgn, 1,
 	 "() -> (RgnHandle _rv)"},
 	{"OpenRgn", (PyCFunction)Qd_OpenRgn, 1,
@@ -3280,6 +3560,8 @@
 	 "(RgnHandle rgn) -> None"},
 	{"InvertRgn", (PyCFunction)Qd_InvertRgn, 1,
 	 "(RgnHandle rgn) -> None"},
+	{"FillRgn", (PyCFunction)Qd_FillRgn, 1,
+	 "(RgnHandle rgn, Pattern pat) -> None"},
 	{"ScrollRect", (PyCFunction)Qd_ScrollRect, 1,
 	 "(Rect r, short dh, short dv, RgnHandle updateRgn) -> None"},
 	{"CopyBits", (PyCFunction)Qd_CopyBits, 1,
@@ -3312,6 +3594,8 @@
 	 "(PolyHandle poly) -> None"},
 	{"InvertPoly", (PyCFunction)Qd_InvertPoly, 1,
 	 "(PolyHandle poly) -> None"},
+	{"FillPoly", (PyCFunction)Qd_FillPoly, 1,
+	 "(PolyHandle poly, Pattern pat) -> None"},
 	{"SetPt", (PyCFunction)Qd_SetPt, 1,
 	 "(Point pt, short h, short v) -> (Point pt)"},
 	{"LocalToGlobal", (PyCFunction)Qd_LocalToGlobal, 1,
@@ -3432,6 +3716,8 @@
 	 "(Rect shieldRect, Point offsetPt) -> None"},
 	{"ScreenRes", (PyCFunction)Qd_ScreenRes, 1,
 	 "() -> (short scrnHRes, short scrnVRes)"},
+	{"GetIndPattern", (PyCFunction)Qd_GetIndPattern, 1,
+	 "(short patternListID, short index) -> (Pattern thePat)"},
 	{"TextFont", (PyCFunction)Qd_TextFont, 1,
 	 "(short font) -> None"},
 	{"TextFace", (PyCFunction)Qd_TextFace, 1,
@@ -3487,6 +3773,22 @@
 		o = PyString_FromStringAndSize((char *)&qd.arrow, sizeof(qd.arrow));
 		if (o == NULL || PyDict_SetItemString(d, "arrow", o) != 0)
 			Py_FatalError("can't initialize Qd.arrow");
+		o = PyString_FromStringAndSize((char *)&qd.black, sizeof(qd.black));
+		if (o == NULL || PyDict_SetItemString(d, "black", o) != 0)
+			Py_FatalError("can't initialize Qd.black");
+		o = PyString_FromStringAndSize((char *)&qd.white, sizeof(qd.white));
+		if (o == NULL || PyDict_SetItemString(d, "white", o) != 0)
+			Py_FatalError("can't initialize Qd.white");
+		o = PyString_FromStringAndSize((char *)&qd.gray, sizeof(qd.gray));
+		if (o == NULL || PyDict_SetItemString(d, "gray", o) != 0)
+			Py_FatalError("can't initialize Qd.gray");
+		o = PyString_FromStringAndSize((char *)&qd.ltGray, sizeof(qd.ltGray));
+		if (o == NULL || PyDict_SetItemString(d, "ltGray", o) != 0)
+			Py_FatalError("can't initialize Qd.ltGray");
+		o = PyString_FromStringAndSize((char *)&qd.dkGray, sizeof(qd.dkGray));
+		if (o == NULL || PyDict_SetItemString(d, "dkGray", o) != 0)
+			Py_FatalError("can't initialize Qd.dkGray");
+		/* thePort, screenBits and randSeed still missing... */
 	}
 
 
diff --git a/Mac/Modules/qd/qdgen.py b/Mac/Modules/qd/qdgen.py
index 105eab7..7ea15fe 100644
--- a/Mac/Modules/qd/qdgen.py
+++ b/Mac/Modules/qd/qdgen.py
@@ -53,6 +53,11 @@
 )
 functions.append(f)
 
+f = Function(void, 'BackPat',
+    (Pattern_ptr, 'pat', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'InitCursor',
 )
 functions.append(f)
@@ -87,6 +92,16 @@
 )
 functions.append(f)
 
+f = Function(void, 'GetPenState',
+    (PenState, 'pnState', OutMode),
+)
+functions.append(f)
+
+f = Function(void, 'SetPenState',
+    (PenState_ptr, 'pnState', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'PenSize',
     (short, 'width', InMode),
     (short, 'height', InMode),
@@ -98,6 +113,11 @@
 )
 functions.append(f)
 
+f = Function(void, 'PenPat',
+    (Pattern_ptr, 'pat', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'PenNormal',
 )
 functions.append(f)
@@ -209,6 +229,12 @@
 )
 functions.append(f)
 
+f = Function(void, 'FillRect',
+    (Rect_ptr, 'r', InMode),
+    (Pattern_ptr, 'pat', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'FrameOval',
     (Rect_ptr, 'r', InMode),
 )
@@ -229,6 +255,12 @@
 )
 functions.append(f)
 
+f = Function(void, 'FillOval',
+    (Rect_ptr, 'r', InMode),
+    (Pattern_ptr, 'pat', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'FrameRoundRect',
     (Rect_ptr, 'r', InMode),
     (short, 'ovalWidth', InMode),
@@ -257,6 +289,14 @@
 )
 functions.append(f)
 
+f = Function(void, 'FillRoundRect',
+    (Rect_ptr, 'r', InMode),
+    (short, 'ovalWidth', InMode),
+    (short, 'ovalHeight', InMode),
+    (Pattern_ptr, 'pat', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'FrameArc',
     (Rect_ptr, 'r', InMode),
     (short, 'startAngle', InMode),
@@ -285,6 +325,14 @@
 )
 functions.append(f)
 
+f = Function(void, 'FillArc',
+    (Rect_ptr, 'r', InMode),
+    (short, 'startAngle', InMode),
+    (short, 'arcAngle', InMode),
+    (Pattern_ptr, 'pat', InMode),
+)
+functions.append(f)
+
 f = Function(RgnHandle, 'NewRgn',
 )
 functions.append(f)
@@ -414,6 +462,12 @@
 )
 functions.append(f)
 
+f = Function(void, 'FillRgn',
+    (RgnHandle, 'rgn', InMode),
+    (Pattern_ptr, 'pat', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'ScrollRect',
     (Rect_ptr, 'r', InMode),
     (short, 'dh', InMode),
@@ -509,6 +563,12 @@
 )
 functions.append(f)
 
+f = Function(void, 'FillPoly',
+    (PolyHandle, 'poly', InMode),
+    (Pattern_ptr, 'pat', InMode),
+)
+functions.append(f)
+
 f = Function(void, 'SetPt',
     (Point, 'pt', InOutMode),
     (short, 'h', InMode),
@@ -859,6 +919,13 @@
 )
 functions.append(f)
 
+f = Function(void, 'GetIndPattern',
+    (Pattern, 'thePat', OutMode),
+    (short, 'patternListID', InMode),
+    (short, 'index', InMode),
+)
+functions.append(f)
+
 # Generated from 'Sap:CodeWarrior7:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:QuickDrawText.h'
 
 f = Function(void, 'TextFont',
diff --git a/Mac/Modules/qd/qdscan.py b/Mac/Modules/qd/qdscan.py
index 013f6b1..2838c06 100644
--- a/Mac/Modules/qd/qdscan.py
+++ b/Mac/Modules/qd/qdscan.py
@@ -85,8 +85,8 @@
 			'ColorSearchProcPtr',
 			'ColorSearchUPP',
 			'ConstPatternParam',
-			'Pattern_ptr',
-			'Pattern',
+##			'Pattern_ptr',
+##			'Pattern',
 ##			'Cursor_ptr',
 			'DeviceLoopDrawingProcPtr',
 			'DeviceLoopFlags',
@@ -94,8 +94,8 @@
 			'GDHandle',
 			'GrafVerb',
 			'OpenCPicParams_ptr',
-			'PenState',
-			'PenState_ptr',
+##			'PenState',
+##			'PenState_ptr',
 			'Ptr',
 			'QDProcs',
 			'ReqListRec',
diff --git a/Mac/Modules/qd/qdsupport.py b/Mac/Modules/qd/qdsupport.py
index 387ee9c..e295c14 100644
--- a/Mac/Modules/qd/qdsupport.py
+++ b/Mac/Modules/qd/qdsupport.py
@@ -45,8 +45,12 @@
 BitMap_ptr = OpaqueByValueType("BitMapPtr", "BMObj")
 RGBColor = OpaqueType('RGBColor', 'QdRGB')
 RGBColor_ptr = RGBColor
-Cursor = StructInputBufferType('Cursor')
-Cursor_ptr = Cursor
+
+Cursor_ptr = StructInputBufferType('Cursor')
+Pattern = StructOutputBufferType('Pattern')
+Pattern_ptr = StructInputBufferType('Pattern')
+PenState = StructOutputBufferType('PenState')
+PenState_ptr = StructInputBufferType('PenState')
 
 includestuff = includestuff + """
 #include <%s>""" % MACHEADERFILE + """
@@ -87,6 +91,22 @@
 	o = PyString_FromStringAndSize((char *)&qd.arrow, sizeof(qd.arrow));
 	if (o == NULL || PyDict_SetItemString(d, "arrow", o) != 0)
 		Py_FatalError("can't initialize Qd.arrow");
+	o = PyString_FromStringAndSize((char *)&qd.black, sizeof(qd.black));
+	if (o == NULL || PyDict_SetItemString(d, "black", o) != 0)
+		Py_FatalError("can't initialize Qd.black");
+	o = PyString_FromStringAndSize((char *)&qd.white, sizeof(qd.white));
+	if (o == NULL || PyDict_SetItemString(d, "white", o) != 0)
+		Py_FatalError("can't initialize Qd.white");
+	o = PyString_FromStringAndSize((char *)&qd.gray, sizeof(qd.gray));
+	if (o == NULL || PyDict_SetItemString(d, "gray", o) != 0)
+		Py_FatalError("can't initialize Qd.gray");
+	o = PyString_FromStringAndSize((char *)&qd.ltGray, sizeof(qd.ltGray));
+	if (o == NULL || PyDict_SetItemString(d, "ltGray", o) != 0)
+		Py_FatalError("can't initialize Qd.ltGray");
+	o = PyString_FromStringAndSize((char *)&qd.dkGray, sizeof(qd.dkGray));
+	if (o == NULL || PyDict_SetItemString(d, "dkGray", o) != 0)
+		Py_FatalError("can't initialize Qd.dkGray");
+	/* thePort, screenBits and randSeed still missing... */
 }
 """