diff Modules/stdwinmodule.c @ 244:47eb81da46dc legacy-trunk

Added xor functions. Hide/show focus hacks around tedraw are no longer needed.
author Guido van Rossum <guido@python.org>
date Tue, 14 May 1991 12:09:25 +0000
parents 8f62a5457319
children 9eb13c67ae6f
line wrap: on
line diff
--- a/Modules/stdwinmodule.c	Tue May 14 12:08:10 1991 +0000
+++ b/Modules/stdwinmodule.c	Tue May 14 12:09:25 1991 +0000
@@ -314,6 +314,7 @@
 	INCREF(None);
 	return None;
 }
+
 static object *
 drawing_fillcircle(dp, args)
 	drawingobject *dp;
@@ -328,6 +329,19 @@
 }
 
 static object *
+drawing_xorcircle(dp, args)
+	drawingobject *dp;
+	object *args;
+{
+	int a[3];
+	if (!getpointintarg(args, a))
+		return NULL;
+	wxorcircle(a[0], a[1], a[2]);
+	INCREF(None);
+	return None;
+}
+
+static object *
 drawing_elarc(dp, args)
 	drawingobject *dp;
 	object *args;
@@ -354,6 +368,19 @@
 }
 
 static object *
+drawing_xorelarc(dp, args)
+	drawingobject *dp;
+	object *args;
+{
+	int a[6];
+	if (!get3pointarg(args, a))
+		return NULL;
+	wxorelarc(a[0], a[1], a[2], a[3], a[4], a[5]);
+	INCREF(None);
+	return None;
+}
+
+static object *
 drawing_box(dp, args)
 	drawingobject *dp;
 	object *args;
@@ -463,6 +490,21 @@
 }
 
 static object *
+drawing_xorpoly(dp, args)
+	drawingobject *dp;
+	object *args;
+{
+	int n;
+	POINT *points = getpointsarray(args, &n);
+	if (points == NULL)
+		return NULL;
+	wxorpoly(n, points);
+	DEL(points);
+	INCREF(None);
+	return None;
+}
+
+static object *
 drawing_cliprect(dp, args)
 	drawingobject *dp;
 	object *args;
@@ -665,8 +707,8 @@
 	{"cliprect",	drawing_cliprect},
 	{"elarc",	drawing_elarc},
 	{"erase",	drawing_erase},
+	{"fillcircle",	drawing_fillcircle},
 	{"fillelarc",	drawing_fillelarc},
-	{"fillcircle",	drawing_fillcircle},
 	{"fillpoly",	drawing_fillpoly},
 	{"invert",	drawing_invert},
 	{"line",	drawing_line},
@@ -675,7 +717,10 @@
 	{"poly",	drawing_poly},
 	{"shade",	drawing_shade},
 	{"text",	drawing_text},
+	{"xorcircle",	drawing_xorcircle},
+	{"xorelarc",	drawing_xorelarc},
 	{"xorline",	drawing_xorline},
+	{"xorpoly",	drawing_xorpoly},
 	
 	/* Text measuring methods: */
 	{"baseline",	drawing_baseline},
@@ -801,17 +846,9 @@
 	if (a[2] > right) a[2] = right;
 	if (a[3] > bottom) a[3] = bottom;
 	if (a[0] < a[2] && a[1] < a[3]) {
-		/* Hide/show focus around draw call; these are undocumented,
-		   but required here to get the highlighting correct.
-		   The call to werase is also required for this reason.
-		   Finally, this forces us to require (above) that we are NOT
-		   already drawing. */
-		tehidefocus(tp);
 		wbegindrawing(self->t_ref->w_win);
-		werase(a[0], a[1], a[2], a[3]);
 		tedrawnew(tp, a[0], a[1], a[2], a[3]);
 		wenddrawing(self->t_ref->w_win);
-		teshowfocus(tp);
 	}
 	INCREF(None);
 	return None;