Example #1
0
void Manip::onMotion(const Point& pt)
{
    if (mDragStarted)
    {
        mDragDelta = pt - mDragCurrent;
        mDragCurrent = pt;
        _onDrag(pt);
    }
    else
        _onMove(pt);
}
Example #2
0
void Gdl_updateMsg(void) // will manage event and launch callback
{    
    #ifdef usePtc
           ptc_getMsg();
    #endif

    #ifdef useSdl
    SDL_Event event;
	/* Check for events */
	while (SDL_PollEvent (&event))
	{     u32 key;
       switch (event.type)
		{
			case SDL_KEYDOWN:
				key = event.key.keysym.sym;
			/* if press Ctrl + C, terminate program */
               // if ( (key == SDLK_c) && (event.key.keysym.mod & (KMOD_LCTRL | KMOD_RCTRL)) ) done = 1;
                  if(key < keyArraySize)
        		  {	if(_onKey) _onKey(key,1);
              		lastKey[key]=keyArray[key];
                    keyArray[key]=1;
        		  }
				break;
			case SDL_KEYUP:
                 key = event.key.keysym.sym;
                  if(key < keyArraySize)
        		  {	if(_onKey) _onKey(key,0);
              		lastKey[key]=keyArray[key];
                    keyArray[key]=0;
        		  }
				break;
			case SDL_JOYBUTTONDOWN:
				/* if press Start button, terminate program */
				if ( event.jbutton.button == 8 )
					done = 1;
				break;
			case SDL_JOYBUTTONUP:
				break;
		    case SDL_MOUSEMOTION:
                mousex = event.motion.x;
                mousey = event.motion.y;
                isMouseHere = 1;
                if(_onMove) _onMove();
                break;
            case SDL_MOUSEBUTTONDOWN:
                isMouseHere = 1; 
                switch(event.button.button)
                {  case SDL_BUTTON_LEFT:   mouseLeftState=1;  if(_onClick)_onClick(-1,1); break;
                   case SDL_BUTTON_MIDDLE: mouseMidlState=1;  if(_onClick)_onClick( 0,1); break;
                   case SDL_BUTTON_RIGHT : mouseRightState=1; if(_onClick)_onClick( 1,1); break;
                }; break;
            case SDL_MOUSEBUTTONUP:
                isMouseHere = 1; 
                switch(event.button.button)
                {  case SDL_BUTTON_LEFT:   mouseLeftState=0;  if(_onClick)_onClick(-1,0); break;
                   case SDL_BUTTON_MIDDLE: mouseMidlState=0;  if(_onClick)_onClick( 0,0); break;
                   case SDL_BUTTON_RIGHT : mouseRightState=0; if(_onClick)_onClick( 1,0); break;
                }; break;
            case SDL_ACTIVEEVENT:
                if(event.active.state != SDL_APPMOUSEFOCUS)
                   isAppActive = event.active.gain;
                else isMouseHere = event.active.gain;
                break;
			case SDL_QUIT:
				done = 1;
				break;
			default:
				break;
		}
	}
    #endif
}
Example #3
0
u32 Gdl_processMsg(u32 msg, u32 arg1, u32 arg2)
{
 #ifdef usePtc
    switch(msg)
	 { /* a key was pushed */	
        case WM_KEYDOWN:
    		{ u32 key = (arg1&0xFF);
              if(key < 256)
    		  {	if(_onKey) _onKey(key,1);
          		keyArray[key+512]=keyArray[key]; keyArray[key]=1;
    		  }
            }
		break;
     /* a key was released */
		case WM_KEYUP:
			 { u32 key = (arg1&0xFF);
              if(key < 256)
    		  {	if(_onKey) _onKey(key,0);
          		keyArray[key+512]=keyArray[key]; keyArray[key]=0;
    		  }
            }
		break;
	/* mouse left click */
		case WM_LBUTTONDOWN:
			if(_onClick) _onClick(-1,1);
			mouseLeftState=1;
		break;
	/* mouse left click end */
		case WM_LBUTTONUP:
			if(_onClick) _onClick(-1,0);
			mouseLeftState=0;
		break;
	/* mouse right click */
		case WM_RBUTTONDOWN:
			if(_onClick) _onClick(1,1);
			mouseRightState = 1 ;
		break;
	/* mouse right click end */
		case WM_RBUTTONUP:
			if(_onClick) _onClick(1,0);
			mouseRightState = 0 ;
		break;
	/* mouse middle click */
		case WM_MBUTTONDOWN:
			if(_onClick) _onClick(0,1);
			mouseMidlState = 1 ;
		break;
	/* mouse middle click end */
		case WM_MBUTTONUP:
			if(_onClick) _onClick(0,0);
			mouseMidlState = 0 ;
		break;
    /* a file is dropped onto the app */
		case WM_DROPFILES: 
			{	char *path = (char*)malloc(512);
				u32 nb = DragQueryFile((HDROP)arg1,0xffffffff,path,256);
				for(u32 n=0;n<nb;n++)
					{	DragQueryFile((HDROP)arg1,n,path,256);
						if(_onFileDrop) _onFileDrop(path);
					}
				DragFinish((HDROP)arg1); // say at wdows we have finish
				free(path);
			}
		break;
    /* mouse has move */
		case WM_MOUSEMOVE:
            isMouseHere = 1;
			mouseLeftState = (((int)arg1) & MK_LBUTTON);
			if(_onMove) _onMove();
		break;
    /* whell rolled */
		case 0x020A : 
			{	int way = ((int)arg1) < 0 ; // way == 1 -> whell go down
				if(_onWhell) _onWhell(way);
			}
		break;
    /* focus killed */
		case WM_KILLFOCUS:
            isAppActive = 0;
			if(_onFocus) _onFocus(0);
		break;
    /* focus set */
		case WA_CLICKACTIVE:
		case WA_ACTIVE:
		case WM_SETFOCUS:
             isAppActive = 1;
			if(_onFocus) _onFocus(1);
		break;
    /* app closed */
		case WM_CLOSE:
             Gdl_exit(1);
		break;
	/* full screen switch */
        case 0x42424242:
             
        break;
	/* mouse leave windows */
		case WM_NCMOUSEMOVE:
        //case WM_CAPTURECHANGED:
            isMouseHere = 0; 
			//if(_onMouseOut) _onMouseOut();
		break;
		default: return 0;
  };
  #endif
  return 1;
}