On 2 Dec 2006 at 9:42, Brian Fisher wrote: > It seems to consider left and top just fine to me and seems to be a > proper union exactly like I'd expect. Have you had problems with it? > > attached is a quick test I used. > > On 12/1/06, Lenard Lindstrom <[EMAIL PROTECTED]> wrote: > > Does Rect.union ignore rectangle positions? That is, does it only > > return a rectangle whose width and height is the maximum of the > > widths and heights of the two compared rectangles rather than a > > rectangle that will actually cover the two rectangles as they are > > positioned? > > >From your exampIe I see Rect.union returns a boundary rectangle enclosing its two source rectangles. That is what I want. I confused myself by exchanging the position and size arguments to Rect when doing an interactive test. Thanks to your help I have solved my problem.
For anyone who is curious this is the problem code that led to my question: foreground_rect = foreground.get_rect() shadow_rect = shadow.get_rect() dx, dy = shadow_offset shadow_rect.center = foreground_rect.center if dx > 0: shadow_rect.move_ip((dx, 0)) elif dx < 0: foreground_rect.move_ip((-dx, 0)) if dy > 0: shadow_rect.move_ip((0, dy)) elif dy < 0: foreground_rect.move_ip((0, -dy)) rect = foreground_rect.union(shadow_rect) image = pygame.Surface(rect.size, pygame.SRCALPHA, 32) image.blit(shadow, shadow_rect) image.blit(foreground, foreground_rect) where "foreground" and "shadow" are both surfaces originally positioned at the origin. The intension was to have "image" contain both the "foreground" image as well as its shifted "shadow". But the "foreground" image was being clipped. I thought maybe Rect.union was not returning a large enough rectangle. But that is not the problem. Instead I failed to adjust the "foreground" and "shadow" positions when blitting to "image". The following changes solve the problem: image.blit(shadow, (shadow_rect.left - rect.left, shadow_rect.top - rect.top)) image.blit(foreground, (foreground_rect.left - rect.left, foreground_rect.top - rect.top)) Now if only tuples supported array arithmetic ( shadow_rect.topleft - rect.topleft ) or Rects had a negative move method. :-) Lenard Lindstrom <[EMAIL PROTECTED]>