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

Re: [pygame] Mac cursors broken



Hello again

I let it run also on a Mac and got the same graphical bug that you described. Would be interersting to see if this code 1:1 would cause the same error on Windows.

Tyger


Am 28.02.2006 um 22:29 schrieb Kamilche:

Bob Ippolito wrote:
On Feb 28, 2006, at 2:50 PM, Kamilche wrote:
I tried my app on the Mac today, and everything works fine (go me!) except the cursors. Some of them are cut in half, some of them are wrapping around funny. I'm compiling custom cursors in a variety of sizes, but all multiples of 8x8. Is there a limitation on the Mac platform regarding cursors, that I'm unaware of?
It would be useful to come up with a reproducible example of this so that if it is indeed broken, someone can figure out why and fix it.
-bob

Here ya go. Run this under Mac and Windows.

--Kamilche

import pygame


arrow = ( "xX ", "X.X ", "X..X ", "X...X ", "X....X ", "X.....X ", "X......X ", "X.......X ", "X........X ", "X.........X ", "X......XXXXX ", "X...X..X ", "X..XX..X ", "X.X XX..X ", "XX X..X ", "X X..X ", " X..X ", " X..X ", " X..X ", " XX ", " ", " ", " ", " ")


no = (" ", " ", " XXXXXX ", " XX......XX ", " X..........X ", " X....XXXX....X ", " X...XX XX...X ", " X.....X X...X ", " X..X...X X..X ", " X...XX...X X...X ", " X..X X...X X..X ", " X..X X...X X..X ", " X..X X.,.X X..X ", " X..X X...X X..X ", " X...X X...XX...X ", " X..X X...X..X ", " X...X X.....X ", " X...XX X...X ", " X....XXXXX...X ", " X..........X ", " XX......XX ", " XXXXXX ", " ", " ", )

def TestCursor(arrow):
hotspot = None
for y in range(len(arrow)):
for x in range(len(arrow[y])):
if arrow[y][x] in ['x', ',', 'O']:
hotspot = x,y
break
if hotspot != None:
break
if hotspot == None:
raise Exception("No hotspot specified for cursor '%s'!" % cursorname)
s2 = []
for line in arrow:
s2.append(line.replace('x', 'X').replace(',', '.').replace ('O', 'o'))
cursor, mask = pygame.cursors.compile(s2, 'X', '.', 'o')
size = len(arrow[0]), len(arrow)
pygame.mouse.set_cursor(size, hotspot, cursor, mask)


def main():
    pygame.init()
    pygame.font.init()
    font = pygame.font.Font(None, 24)
    bg = pygame.display.set_mode((800, 600), 0, 24)
    bg.fill((255,255,255))
    bg.blit(font.render("Click to advance", 1, (0, 0, 0)), (0, 0))
    pygame.display.update()
    for cursor in [no, arrow]:
        TestCursor(cursor)
        quit = 0
        while not quit:
            pygame.event.pump()
            for e in pygame.event.get():
                if e.type == pygame.MOUSEBUTTONDOWN:
                    quit = 1
    pygame.quit()

main()