std::queue<Event> SDLInputBackend::fetchEvents()
    {
        SDL_Event event;
        std::queue<Event> result;

        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_QUIT)
                result.push(closed());
            else if(event.type == SDL_VIDEORESIZE)
                result.push(resized(event));
            else if(event.type == SDL_ACTIVEEVENT)
                result.push(active(event));
            else if(event.type == SDL_KEYDOWN)
                result.push(keyPressed(event));
            else if(event.type == SDL_KEYUP)
                result.push(keyReleased(event));
            else if(event.type == SDL_MOUSEBUTTONDOWN)
                result.push(mouseButtonPressed(event));
            else if(event.type == SDL_MOUSEBUTTONUP)
                result.push(mouseButtonReleased(event));
            else if(event.type == SDL_MOUSEMOTION)
                result.push(mouseMoved(event));
            else if(event.type == SDL_JOYBUTTONDOWN)
                result.push(gamepadButtonPressed(event));
            else if(event.type == SDL_JOYBUTTONUP)
                result.push(gamepadButtonReleased(event));
            else if(event.type == SDL_JOYAXISMOTION)
                result.push(gamepadMoved(event));
        }

        return result;
    }
bool Viewer::deviceEventOccurred(const DeviceEvent &event) {
	switch (event.getType()) {
		case Device::EKeyDownEvent:
			if (event.getKeyboardKey() == 'q' 
				|| event.getKeyboardSpecial() == Device::EKeyEscape) {
				m_quit = true;
				m_leaveEventLoop = true;
			} else {
				keyPressed(event);
			}
			break;
		case Device::EKeyUpEvent: keyReleased(event); break;
		case Device::EMouseMotionEvent: mouseMoved(event); break;
		case Device::EMouseDragEvent: mouseDragged(event); break;
		case Device::EMouseButtonDownEvent: mouseButtonPressed(event); break;
		case Device::EMouseButtonUpEvent: mouseButtonReleased(event); break;
		case Device::EMouseBeginDragEvent: mouseBeginDrag(event); break;
		case Device::EMouseEndDragEvent: mouseEndDrag(event); break;
		case Device::EQuitEvent:
			m_quit = true;
			m_leaveEventLoop = true;
			break;
		case Device::EResizeEvent:
			m_renderer->reconfigure(m_device);
			windowResized(event);
			// no break
		case Device::EGainFocusEvent:
			m_leaveEventLoop = true;
			break;
	}

	return true;
}
Exemple #3
0
	void ItemBox::notifyMouseButtonReleased(Widget* _sender, int _left, int _top, MouseButton _id)
	{
		bool needEvent = !mStartDrop;
		mouseButtonReleased(_id);

		if (needEvent)
			eventNotifyItem(this, IBNotifyItemData(getIndexByWidget(_sender), IBNotifyItemData::MouseReleased, _left, _top, _id));
	}
Exemple #4
0
void mouse(int button, int state, int x, int y)
{
    if (state == GLUT_DOWN) {
        mouseButtonPressed(button, x, y);
    }
    else {
        mouseButtonReleased(button, x, y);
    }
	if(!TwEventMouseButtonGLUT(button,state,x,y) ) {

	}
}
Exemple #5
0
void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods)
{
    double x, y;
    glfwGetCursorPos(window, &x, &y);

    Context *ctx = static_cast<Context *>(glfwGetWindowUserPointer(window));
    if (action == GLFW_PRESS) {
        mouseButtonPressed(ctx, button, x, y);
    }
    else {
        mouseButtonReleased(ctx, button, x, y);
    }
}
Exemple #6
0
void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods)
{
    double x, y;
    glfwGetCursorPos(window, &x, &y);
    if(!TwEventMouseButtonGLFW(button, action)){
      if (action == GLFW_PRESS) {
          mouseButtonPressed(button, x, y);
      }
      else {
          mouseButtonReleased(button, x, y);
      }
  }
}
    std::queue<Event> SFMLInputBackend::fetchEvents()
    {
        sf::Event event;
        std::queue<Event> result;

        while (mWindow.pollEvent(event))
        {
            if(event.type == sf::Event::Closed)
                result.push(closed());
            else if(event.type == sf::Event::Resized)
                result.push(resized(event));
            else if(event.type == sf::Event::LostFocus)
                result.push(lostFocus());
            else if(event.type == sf::Event::GainedFocus)
                result.push(gainedFocus());
            else if(event.type == sf::Event::TextEntered)
                result.push(textEntered(event));
            else if(event.type == sf::Event::KeyPressed)
                result.push(keyPressed(event));
            else if(event.type == sf::Event::KeyReleased)
                result.push(keyReleased(event));
            else if(event.type == sf::Event::MouseWheelMoved)
                result.push(mouseWheelMoved(event));
            else if(event.type == sf::Event::MouseButtonPressed)
                result.push(mouseButtonPressed(event));
            else if(event.type == sf::Event::MouseButtonReleased)
                result.push(mouseButtonReleased(event));
            else if(event.type == sf::Event::MouseMoved)
                result.push(mouseMoved(event));
            else if(event.type == sf::Event::MouseEntered)
                result.push(mouseEntered());
            else if(event.type == sf::Event::MouseLeft)
                result.push(mouseLeft());
            else if(event.type == sf::Event::JoystickButtonPressed)
                result.push(gamepadButtonPressed(event));
            else if(event.type == sf::Event::JoystickButtonReleased)
                result.push(gamepadButtonReleased(event));
            else if(event.type == sf::Event::JoystickMoved)
                result.push(gamepadMoved(event));
            else if(event.type == sf::Event::JoystickConnected)
                result.push(gamepadConnected(event));
            else if(event.type == sf::Event::JoystickDisconnected)
                result.push(gamepadDisconnected(event));
        }

        return result;
    }
Exemple #8
0
void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods)
{
#ifdef WITH_TWEAKBAR
    if (TwEventMouseButtonGLFW3(window, button, action, mods)) return;
#endif // WITH_TWEAKBAR

    double x, y;
    glfwGetCursorPos(window, &x, &y);

    Context *ctx = static_cast<Context *>(glfwGetWindowUserPointer(window));
    if (action == GLFW_PRESS) {
        mouseButtonPressed(ctx, button, x, y);
    }
    else {
        mouseButtonReleased(ctx, button, x, y);
    }
}
Exemple #9
0
  const SUCCESS Events::handleEvent(const SDL_Event * const Event)
  {
    switch(Event->type)
    {  //newline brackets implemented since this is a lot of nesting
    case SDL_WINDOWEVENT: ///Some sort of input or output gained or lost
      {
        const Uint8 &winID = Event->window.windowID;
        switch(Event->window.event) 
        {
        case SDL_WINDOWEVENT_ENTER:   ///Mouse message handling gained or lost
          return mouseEnter(winID);
          
        case SDL_WINDOWEVENT_LEAVE:   ///General input message handling gained or lost
          return mouseLeave(winID);

        case SDL_WINDOWEVENT_MINIMIZED:   ///Output to the screen at all gained or lost
          return minimized(winID);
          
        case SDL_WINDOWEVENT_RESTORED:
          return restored(winID);
          
        case SDL_WINDOWEVENT_MAXIMIZED:
          return maximized(winID);
          
        case SDL_WINDOWEVENT_SHOWN:
          return shown(winID);
          
        case SDL_WINDOWEVENT_HIDDEN:
          return hidden(winID);
          
        case SDL_WINDOWEVENT_EXPOSED:
          return exposed(winID);
          
        case SDL_WINDOWEVENT_FOCUS_GAINED:
          return keyboardFocusGain(winID);
          
        case SDL_WINDOWEVENT_FOCUS_LOST:
          return keyboardFocusLost(winID);
          
        case SDL_WINDOWEVENT_SIZE_CHANGED:
            return changeSize(winID);
            
        case SDL_WINDOWEVENT_RESIZED:
          return resized(winID, Dimensions<int>(Event->window.data1, Event->window.data2));
          
        case SDL_WINDOWEVENT_MOVED:
          return moved(winID, Point<int>(Event->window.data1, Event->window.data2));
          
        case SDL_WINDOWEVENT_CLOSE:
          return windowExited(winID);
          
        default:   ///For some reason there is an unknown window event
          return FAILED;
        }
        break;
      }
    case SDL_KEYDOWN:
      {
        if(Event->key.repeat)
        {
          return keyHeld(Event->key.windowID, Event->key.keysym);
        }
        else
        {
          return keyPressed(Event->key.windowID, Event->key.keysym);
        }
        break;
      }
    case SDL_KEYUP:
        return keyReleased(Event->key.windowID, Event->key.keysym);
        
    case SDL_TEXTINPUT:
        return textInput(Event->text.windowID, Event->text.text);
        
    case SDL_TEXTEDITING:
        return textEdit(Event->edit.windowID, Event->edit.text, Event->edit.start, Event->edit.length);
        
    case SDL_MOUSEMOTION:
      return mouseMove(Event->motion.windowID, Event->motion.which,
                       Delta<Point<int> >(Point<int>(Event->motion.xrel, Event->motion.yrel), 
                                          Point<int>(Event->motion.x, Event->motion.y)),
                       bitset<N_MOUSE_BUTTONS>(Event->motion.state));
                       
    case SDL_MOUSEBUTTONDOWN:
      return mouseButtonPressed(Event->button.windowID, Event->button.which, Event->button.button, Event->button.clicks,
                                Point<int>(Event->button.x, Event->button.y));
      
    case SDL_MOUSEBUTTONUP:
        return mouseButtonReleased(Event->button.windowID, Event->button.which, Event->button.button, Event->button.clicks,
                                  Point<int>(Event->button.x, Event->button.y));
     
    case SDL_MOUSEWHEEL:
        return mouseWheel(Event->wheel.windowID, Event->wheel.which, Point<int>(Event->wheel.x, Event->wheel.y));
        
    case SDL_JOYAXISMOTION:
      return joyAxis(Event->jaxis.which, Event->jaxis.axis, Event->jaxis.value);
    
    case SDL_JOYBUTTONDOWN:
      return joyButtonPressed(Event->jbutton.which, Event->jbutton.button);
      
    case SDL_JOYBUTTONUP:
      return joyButtonReleased(Event->jbutton.which, Event->jbutton.button);
      
    case SDL_JOYHATMOTION:
      return joyHatChange(Event->jhat.which, Event->jhat.hat, Event->jhat.value);
        
    case SDL_JOYBALLMOTION:
      return joyBallMove(Event->jball.which, Event->jball.ball, Point<int>(Event->jball.xrel, Event->jball.yrel));
      
    case SDL_DROPFILE:
    {
      const SUCCESS ret = droppedFile(Event->drop.file);
      SDL_free(Event->drop.file);
      return ret;
    }
      
    case SDL_SYSWMEVENT:
      return unhandledSystemEvent(Event->syswm.msg);
     
    case SDL_QUIT:
      return appExited();
        
    case SDL_USEREVENT:
    default:
      {
        return userEvent(Event->user.windowID, Event->user.code, Event->user.data1, Event->user.data2);
      }
    }

    return FAILED;
  }
Exemple #10
0
void SdlContext::refreshInputs()
{
    SCOPE_profile_cpu_function("RenderTimer");

    SDL_Event events;
    auto input = _dependencyManager->getInstance<Input>();

    input->frameUpdate();
    if (_firstCall)
    {
        _initJoysticks(*input);
        _firstCall = false;
    }
    while (SDL_PollEvent(&events))
    {
        switch (events.type)
        {
        case SDL_KEYDOWN:
            input->keyInputPressed(findAgeMappedKey(events.key.keysym.sym), findAgePhysicalKey(events.key.keysym.scancode));
            break;
        case SDL_KEYUP:
            input->keyInputReleased(findAgeMappedKey(events.key.keysym.sym), findAgePhysicalKey(events.key.keysym.scancode));
            break;
        case SDL_MOUSEBUTTONDOWN:
            input->mouseButtonPressed(findAgeMouseButton(events.button.button));
            break;
        case SDL_MOUSEBUTTONUP:
            input->mouseButtonReleased(findAgeMouseButton(events.button.button));
            break;
        case SDL_MOUSEWHEEL:
            input->setMouseWheel(glm::ivec2(events.wheel.x, events.wheel.y));
            break;
        case SDL_MOUSEMOTION:
            input->setMousePosition(glm::ivec2(events.motion.x, events.motion.y), glm::ivec2(events.motion.xrel, events.motion.yrel));
            break;
        case SDL_JOYDEVICEADDED:
            _addJoystick(*input, events.jdevice.which);
            break;
        case SDL_JOYDEVICEREMOVED:
            _removeJoystick(*input, events.jdevice.which);
            break;
        case SDL_JOYAXISMOTION:
        {
            uint32_t joyId = _fromSdlJoystickIdToAge(events.jaxis.which);
            AgeJoystickAxis joyAxis = findAgeJoystickAxis(events.jaxis.axis);
            float value = (float)events.jaxis.value / 32768.0f;
            input->setJoystickAxis(joyId, joyAxis, value);
        }
        break;
        case SDL_JOYBUTTONDOWN:
        {
            uint32_t joyId = _fromSdlJoystickIdToAge(events.jbutton.which);
            AgeJoystickButtons joyButton = findAgeJoystickButton(events.jbutton.button);
            input->joystickButtonPressed(joyId, joyButton);
        }
        break;
        case SDL_JOYBUTTONUP:
        {
            uint32_t joyId = _fromSdlJoystickIdToAge(events.jbutton.which);
            AgeJoystickButtons joyButton = findAgeJoystickButton(events.jbutton.button);
            input->joystickButtonReleased(joyId, joyButton);
        }
        break;
        case SDL_JOYBALLMOTION:
        {
            uint32_t joyId = _fromSdlJoystickIdToAge(events.jball.which);
            input->setJoystickTrackBall(joyId, events.jball.ball, glm::ivec2(events.jball.xrel, events.jball.yrel));
        }
        break;
        case SDL_JOYHATMOTION:
        {
            uint32_t joyId = _fromSdlJoystickIdToAge(events.jhat.which);
            AgeJoystickHatDirections joyHatDir = findAgeJoystickHatDirection(events.jhat.value);
            input->setJoystickHat(joyId, events.jhat.hat, joyHatDir);
        }
        break;
        case SDL_WINDOWEVENT:
            input->addWindowInput(findAgeWindowInput(events.window.event));
            break;
        default:
            input->addWindowInput(findAgeWindowInput(events.type));
            break;
        }
    }
    input->sendMouseStateToIMGUI();
}
 void Label::mouseReleaseEvent(QMouseEvent* event) {
     Qt::MouseButton mouseButton = event->button();
     m_mouseButtonsPressed.erase(mouseButton);
     emit mouseButtonReleased(mouseButton);
     event->accept();
 }
	void DDContainer::onMouseButtonReleased(int _left, int _top, MouseButton _id)
	{
		mouseButtonReleased(_id);

		Base::onMouseButtonReleased(_left, _top, _id);
	}
	void ListCtrl::notifyMouseButtonReleased(Widget* _sender, int _left, int _top, MouseButton _id)
	{
		mouseButtonReleased(_id);
		eventNotifyItem(this, IBNotifyItemData(getIndexByWidget(_sender), IBNotifyItemData::MouseReleased, _left, _top, _id));
	}