diff --git a/csdl/__init__.py b/csdl/__init__.py index 7c24195..8c51258 100644 --- a/csdl/__init__.py +++ b/csdl/__init__.py @@ -146,6 +146,16 @@ class Renderer(object): ctypes.byref(a))) return (r,g,b,a) + @property + def viewport(self): + rect = Rect() + _SDL.SDL_RenderGetViewport(self._renderer, ctypes.byref(rect)) + return rect + + @viewport.setter + def viewport(self, rect): + _SDL.SDL_RenderSetViewport(self._renderer, ctypes.pointer(rect)) + def clear(self): errcheck(_SDL.SDL_RenderClear(self._renderer)) @@ -333,6 +343,54 @@ class Rect(ctypes.Structure): ('height', ctypes.c_int), ) + def __eq__(self, other): + return (self.x == other.x and self.y == other.y and + self.width == other.width and self.height == other.height) + + @staticmethod + def enclose_points(points, clip=None): + PtArray = Point*len(points) + _sdl_points = PtArray(*[Point(*pt) for pt in points]) + result = Rect() + + # returns True if a rect is created + if _SDL.SDL_EnclosePoints(_sdl_points, len(points), + ctypes.pointer(clip) if clip else None, + ctypes.byref(result)): + return result + + def intersects(self, other): + return _SDL.SDL_HasIntersection(ctypes.pointer(self), + ctypes.pointer(other)) == 1 + + def intersection(self, other): + result = Rect() + + # returns True if an intersection is found + if _SDL.SDL_IntersectRect(ctypes.pointer(self), ctypes.pointer(other), + ctypes.byref(result)): + return result + + def union(self, other): + result = Rect() + _SDL.SDL_UnionRect(ctypes.pointer(self), ctypes.pointer(other), + ctypes.byref(result)) + return result + + def intersects_line(self, x1, y1, x2, y2): + return _SDL.SDL_IntersectRectAndLine(ctypes.pointer(self), + ctypes.pointer(x1), + ctypes.pointer(y1), + ctypes.pointer(x2), + ctypes.pointer(y2)) == 1 + + def is_empty(self): + return self.width <= 0 or self.height <= 0 + + def __repr__(self): + return 'Rect({0}, {1}, {2}, {3})'.format(self.x, self.y, + self.width, self.height) + class Point(ctypes.Structure): _fields_ = ( ('x', ctypes.c_int), diff --git a/not_supported.txt b/not_supported.txt index a95ba34..8fa8ded 100644 --- a/not_supported.txt +++ b/not_supported.txt @@ -18,11 +18,14 @@ http://wiki.libsdl.org/moin.cgi/CategoryVideo CategoryRender SDL_CreateSoftwareRenderer SDL_CreateTexture, SDL_CreateTextureFromSurface, SDL_DestroyTexture, SDL_DirtyTexture - SDL_GetRenderDrawBlendMode - SDL_GetTextureAlphaMod - SDL_GetTextureBlendMode - SDL_GetTextureColorMode - SDL_LockTexture - SDL_QueryTexture - SDL_QueryTexturePixels + SDL_GetRenderDrawBlendMode/SDL_SetRenderDrawBlendMode + SDL_GetTextureAlphaMod/SDL_SetTextureAlphaMod + SDL_GetTextureBlendMode/SDL_SetTextureBlendMode + SDL_GetTextureColorMode/SDL_SetTextureColorMod + SDL_LockTexture/SDL_UnlockTexture + SDL_QueryTexture/SDL_QueryTexturePixels + SDL_UpdateTexture SDL_RenderCopy + SDL_RenderReadPixels -- returns void* + +SDL_pixels