/**
 * $Id: sdltoprojectM.h,v 1.1.1.1 2005/12/23 19:54:50 psperl Exp $
 *
 * Translates SDL -> projectM variables
 *
 * $Log: sdltoprojectM.h,v $
 * Revision 1.1.1.1  2005/12/23 19:54:50  psperl
 *
 *
 * Revision 1.1.1.1  2005/12/23 18:42:00  psperl
 * Initial Import
 *
 * Revision 1.1  2004/10/08 00:35:28  cvs
 * Moved and imported
 *
 * Revision 1.1.1.1  2004/10/04 12:56:00  cvs
 * Imported
 *
 */

#ifndef _SDLTOPROJECTM_H
#define _SDLTOPROJECTM_H

#include <event.h>
#ifdef WIN32
#include <SDL.h>
#else
#include <SDL/SDL.h>
#endif

inline projectMEvent sdl2pmEvent( SDL_Event event ) {

    switch ( event.type ) {
        case SDL_VIDEORESIZE:
            return PROJECTM_VIDEORESIZE;
        case SDL_KEYUP:
            return PROJECTM_KEYUP;
        case SDL_KEYDOWN:
            return PROJECTM_KEYDOWN;
        default:
            return PROJECTM_KEYUP;
      }
  }

projectMKeycode sdl2pmKeycode( SDLKey keysym, SDLMod mod) {

    bool caps = (mod == KMOD_LSHIFT) ||
                (mod == KMOD_RSHIFT) ||
                (mod == KMOD_CAPS);

    switch ( keysym ) {
        case SDLK_F1:
            return PROJECTM_K_F1;
        case SDLK_F2:
            return PROJECTM_K_F2;
        case SDLK_F3:
            return PROJECTM_K_F3;
        case SDLK_F4:
            return PROJECTM_K_F4;
        case SDLK_F5:
            return PROJECTM_K_F5;
        case SDLK_F6:
            return PROJECTM_K_F6;
        case SDLK_F7:
            return PROJECTM_K_F7;
        case SDLK_F8:
            return PROJECTM_K_F8;
        case SDLK_F9:
            return PROJECTM_K_F9;
        case SDLK_F10:
            return PROJECTM_K_F10;
        case SDLK_F11:
            return PROJECTM_K_F11;
        case SDLK_F12:
            return PROJECTM_K_F12;
	  case SDLK_ESCAPE:
	    return PROJECTM_K_ESCAPE;
    case SDLK_a:
      return PROJECTM_K_a;
    case SDLK_b:
      return PROJECTM_K_b;
    case SDLK_c:
      return PROJECTM_K_c;
    case SDLK_d:
      return PROJECTM_K_d;
    case SDLK_e:
      return PROJECTM_K_e;
    case SDLK_f:
      return PROJECTM_K_f;
    case SDLK_g:
      return PROJECTM_K_g;
    case SDLK_h:
      return PROJECTM_K_h;
    case SDLK_i:
      return PROJECTM_K_i;
    case SDLK_j:
      return PROJECTM_K_j;
    case SDLK_k:
      return PROJECTM_K_k;
    case SDLK_l:
      return PROJECTM_K_l;
    case SDLK_m:
      return PROJECTM_K_m;
    case SDLK_n:
      return caps ? PROJECTM_K_N : PROJECTM_K_n;
    case SDLK_o:
      return PROJECTM_K_o;
    case SDLK_p:
        return caps ? PROJECTM_K_P : PROJECTM_K_p;
    case SDLK_q:
      return PROJECTM_K_q;
    case SDLK_r:
        return caps ? PROJECTM_K_R : PROJECTM_K_r;
    case SDLK_s:
      return PROJECTM_K_s;
    case SDLK_t:
      return PROJECTM_K_t;
    case SDLK_u:
      return PROJECTM_K_u;
    case SDLK_v:
      return PROJECTM_K_v;
    case SDLK_w:
      return PROJECTM_K_w;
    case SDLK_x:
      return PROJECTM_K_x;
    case SDLK_y:
      return PROJECTM_K_y;
    case SDLK_z:
      return PROJECTM_K_z;
    case SDLK_UP:
      return PROJECTM_K_UP;
    case SDLK_RETURN:
      return PROJECTM_K_RETURN;
    case SDLK_RIGHT:
      return PROJECTM_K_RIGHT;
    case SDLK_LEFT:
      return PROJECTM_K_LEFT;
    case SDLK_DOWN:
      return PROJECTM_K_DOWN;
    case SDLK_PAGEUP:
      return PROJECTM_K_PAGEUP;
    case SDLK_PAGEDOWN:
      return PROJECTM_K_PAGEDOWN;

        default:
            return PROJECTM_K_NONE;
      }
  }

inline projectMModifier sdl2pmModifier( SDLMod mod ) {
    return PROJECTM_KMOD_LSHIFT;
  }

#endif /** _SDLTOPROJECTM_H */
