[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] PATCH #147 - gfxdraw doesn't work with inherited surfaces



Thanks :)

On Sun, Jan 20, 2013 at 10:13 AM, Piotr Borkowski <borko84@xxxxxxxxx> wrote:

diff -r 4a4611239021 src/gfxdraw.c
--- a/src/gfxdraw.c    Thu Jan 10 14:18:39 2013 +0000
+++ b/src/gfxdraw.c    Sun Jan 13 22:30:53 2013 +0100
@@ -237,6 +237,7 @@
          PyErr_SetString (PyExc_TypeError, "surface must be a Surface");
          return NULL;
      }
+
      sdlrect = GameRect_FromObject (rect, &temprect);
      if (sdlrect == NULL) {
          return NULL;
@@ -274,9 +275,8 @@
      if (!PyArg_ParseTuple (args, "OOO:box", &surface, &rect, &color)) {
          return NULL;
      }
-
-    if (!PySurface_Check (surface)) {
-        PyErr_SetString (PyExc_TypeError, "surface must be a Surface");
+    if (!PyType_IsSubtype(surface->ob_type, &PySurface_Type)) {
+        PyErr_SetString (PyExc_TypeError, "surface must be a subclass
of Surface");
          return NULL;
      }
      sdlrect = GameRect_FromObject (rect, &temprect);
diff -r 4a4611239021 test/gfxdraw_test.py
--- a/test/gfxdraw_test.py    Thu Jan 10 14:18:39 2013 +0000
+++ b/test/gfxdraw_test.py    Sun Jan 13 22:30:53 2013 +0100
@@ -21,6 +21,12 @@
  import pygame.gfxdraw
  from pygame.locals import *

+
+class Frame(pygame.Surface,object):
+    def __init__(self,x,y,w,h):
+        pygame.Surface.__init__(self,(w,h), SRCALPHA)
+
+
  def intensity(c, i):
      """Return color c changed by intensity i

@@ -707,6 +713,11 @@
                  self.check_at(surf, posn, bg_adjusted)


+    def test_my(self):
+        """ """
+        pygame.display.set_mode((500,500))
+        fr = Frame(50,50,300,300)
+ pygame.gfxdraw.box(fr,pygame.Rect(0,0,50,50),pygame.Color('red'))

  if __name__ == '__main__':
      unittest.main()