src/touchscreen/nds/SDL_systouchscreen.c
branchgsoc2008_nds
changeset 2675 5e4274591163
parent 2674 f1d07ba2e275
child 2676 082cc3ffd7d8
equal deleted inserted replaced
2674:f1d07ba2e275 2675:5e4274591163
    80  */
    80  */
    81 void
    81 void
    82 SDL_SYS_TouchscreenUpdate(SDL_Touchscreen * touchscreen)
    82 SDL_SYS_TouchscreenUpdate(SDL_Touchscreen * touchscreen)
    83 {
    83 {
    84     u32 keysd, keysu, keysh;
    84     u32 keysd, keysu, keysh;
    85     int xpos, ypos, pressure = 16384;
    85     Uint16 xpos=0, ypos=0, pressure = 32767;
    86     touchPosition touch;
    86     touchPosition touch;
    87 
    87 
    88     scanKeys();
    88     scanKeys();
    89     keysd = keysDown();
    89     keysd = keysDown();
    90     keysh = keysHeld();
    90     keysh = keysHeld();
    91     keysu = keysUp();
    91     keysu = keysUp();
    92     touch=touchReadXY();
    92     touch=touchReadXY();
    93     xpos = (touch.px-128)*256;
    93     xpos = (touch.px << 8) + 1;
    94     ypos = (touch.py-96)*(65536/192);
    94     ypos = (touch.py << 16) / 192 + 1;
       
    95     /* TODO uses touch.x and touch.y for something.
       
    96        we discussed in the mailing list having both "hardware x/y" and
       
    97        "screen x/y" coordinates. */
    95 
    98 
    96     if (((keysd|keysh) & KEY_TOUCH)) {
    99     if ((keysd & KEY_TOUCH)) {
    97         SDL_PrivateTouchPress(touchscreen, 0, xpos, ypos, pressure);
   100         SDL_PrivateTouchPress(touchscreen, 0, xpos, ypos, pressure);
       
   101     }
       
   102     if ((keysh & KEY_TOUCH)) {
       
   103     	SDL_PrivateTouchMove(touchscreen, 0, xpos, ypos, pressure); 
    98     }
   104     }
    99     if ((keysu & KEY_TOUCH)) {
   105     if ((keysu & KEY_TOUCH)) {
   100         SDL_PrivateTouchRelease(touchscreen, 0);
   106         SDL_PrivateTouchRelease(touchscreen, 0);
   101     }
   107     }
   102 }
   108 }