1 | 2 patches for repository http://code.ouroborus.net/gloss/gloss-head: |
---|
2 | |
---|
3 | Fri Nov 12 10:46:25 PST 2010 Thomas.DuBuisson@gmail.com |
---|
4 | * Convert motion points based on window size |
---|
5 | |
---|
6 | The points used for motion events and key/mouse events disagreed because one method was being convereted to a new coordinate system (based on the window size) while the other was not. This patch makes sure points for either event are converted. |
---|
7 | |
---|
8 | Fri Nov 12 10:55:02 PST 2010 Thomas.DuBuisson@gmail.com |
---|
9 | * Fix position conversion typos |
---|
10 | |
---|
11 | New patches: |
---|
12 | |
---|
13 | [Convert motion points based on window size |
---|
14 | Thomas.DuBuisson@gmail.com**20101112184625 |
---|
15 | Ignore-this: 4c5713b28a85d1af5f751e8ee10d7088 |
---|
16 | |
---|
17 | The points used for motion events and key/mouse events disagreed because one method was being convereted to a new coordinate system (based on the window size) while the other was not. This patch makes sure points for either event are converted. |
---|
18 | ] hunk ./library/Graphics/Gloss/Internals/Interface/Game.hs 121 |
---|
19 | callback_keyMouse worldRef viewRef eventFn |
---|
20 | = KeyMouse (handle_keyMouse worldRef viewRef eventFn) |
---|
21 | |
---|
22 | -handle_keyMouse worldRef viewRef eventFn key keyState keyMods pos |
---|
23 | - = do size@(GLUT.Size sizeX_ sizeY_) <- GL.get GLUT.windowSize |
---|
24 | +convertPoint pos = do |
---|
25 | + = do size@(GLUT.Size sizeX_ sizeY_) <- GL.getGLUT.windowSize |
---|
26 | let (sizeX, sizeY) = (fromIntegral sizeX_, fromIntegral sizeY_) |
---|
27 | |
---|
28 | let GLUT.Position px_ py_ = pos |
---|
29 | hunk ./library/Graphics/Gloss/Internals/Interface/Game.hs 132 |
---|
30 | let px' = px - sizeX / 2 |
---|
31 | let py' = py - sizeY / 2 |
---|
32 | let pos' = (px', py') |
---|
33 | - |
---|
34 | + return pos' |
---|
35 | + |
---|
36 | +handle_keyMouse worldRef viewRef eventFn key keyState keyMods pos |
---|
37 | + = do pos' <- convertPoint |
---|
38 | worldRef `modifyIORef` \world -> eventFn (EventKey key keyState keyMods pos') world |
---|
39 | |
---|
40 | |
---|
41 | hunk ./library/Graphics/Gloss/Internals/Interface/Game.hs 149 |
---|
42 | = Motion (handle_motion worldRef eventFn) |
---|
43 | |
---|
44 | handle_motion worldRef eventFn pos |
---|
45 | - = let GLUT.Position x y = pos |
---|
46 | - pos' = (fromIntegral x, fromIntegral y) |
---|
47 | - in worldRef `modifyIORef` \world -> eventFn (EventMotion pos') world |
---|
48 | + = do pos' <- convertPoint pos |
---|
49 | + worldRef `modifyIORef` \world -> eventFn (EventMotion pos') world |
---|
50 | |
---|
51 | |
---|
52 | |
---|
53 | [Fix position conversion typos |
---|
54 | Thomas.DuBuisson@gmail.com**20101112185502 |
---|
55 | Ignore-this: 94ef819de773148f41a2f026ffc16a64 |
---|
56 | ] hunk ./library/Graphics/Gloss/Internals/Interface/Game.hs 121 |
---|
57 | callback_keyMouse worldRef viewRef eventFn |
---|
58 | = KeyMouse (handle_keyMouse worldRef viewRef eventFn) |
---|
59 | |
---|
60 | -convertPoint pos = do |
---|
61 | - = do size@(GLUT.Size sizeX_ sizeY_) <- GL.getGLUT.windowSize |
---|
62 | +convertPoint :: GL.Position -> IO (Float,Float) |
---|
63 | +convertPoint pos |
---|
64 | + = do size@(GLUT.Size sizeX_ sizeY_) <- GL.get GLUT.windowSize |
---|
65 | let (sizeX, sizeY) = (fromIntegral sizeX_, fromIntegral sizeY_) |
---|
66 | |
---|
67 | let GLUT.Position px_ py_ = pos |
---|
68 | hunk ./library/Graphics/Gloss/Internals/Interface/Game.hs 136 |
---|
69 | return pos' |
---|
70 | |
---|
71 | handle_keyMouse worldRef viewRef eventFn key keyState keyMods pos |
---|
72 | - = do pos' <- convertPoint |
---|
73 | + = do pos' <- convertPoint pos |
---|
74 | worldRef `modifyIORef` \world -> eventFn (EventKey key keyState keyMods pos') world |
---|
75 | |
---|
76 | |
---|
77 | hunk ./library/Graphics/Gloss/Internals/Interface/Game.hs 151 |
---|
78 | |
---|
79 | handle_motion worldRef eventFn pos |
---|
80 | = do pos' <- convertPoint pos |
---|
81 | - worldRef `modifyIORef` \world -> eventFn (EventMotion pos') world |
---|
82 | + worldRef `modifyIORef` \world -> eventFn (EventMotion pos') world |
---|
83 | |
---|
84 | |
---|
85 | |
---|
86 | |
---|
87 | Context: |
---|
88 | |
---|
89 | [Start on Delaunay example |
---|
90 | benl@ouroborus.net**20100628064011 |
---|
91 | Ignore-this: 9c2d2f9dba49b0566f51cecd28fcb74a |
---|
92 | ] |
---|
93 | [TAG Release 1.1.0.0 |
---|
94 | benl@ouroborus.net**20100507050236 |
---|
95 | Ignore-this: 725b43f6639eb93464bca129e8d44c9 |
---|
96 | ] |
---|
97 | Patch bundle hash: |
---|
98 | 64295dedd8037790743d3bfde9888c3477e820ad |
---|