Rect class

This commit is contained in:
James Turk 2011-03-16 00:01:43 -04:00
parent 0bd9c80cdb
commit 5c0ed01dac
2 changed files with 68 additions and 7 deletions

View File

@ -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),

View File

@ -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