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()