Ejemplo n.º 1
0
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;
}
void DeviceEventPusher::pushDeviceEventToServer(const DeviceEvent& event)
{
	if(	!active )
		return;

	try {
		switch(event.getEventType())
		{
		case DeviceEvent::Message:
			deviceEventHandlerRef->pushMessageEvent(event.getTMessageEvent());
			break;
		case DeviceEvent::DeviceRefresh:
			deviceEventHandlerRef->pushDeviceRefreshEvent(event.getTDeviceRefreshEvent());
			break;
		case DeviceEvent::DeviceData:
			deviceEventHandlerRef->pushDeviceDataEvent(event.getTDeviceDataEvent());
			break;
		default:
			break;
		}
	}	
	catch(CORBA::TRANSIENT&) {
		active = false;
	}
	catch(CORBA::SystemException&) {
		active = false;
	}
	catch(CORBA::Exception&) {
		active = false;
	}
}
Ejemplo n.º 3
0
void GraphicsImage::UnpackEvent (DeviceEvent& rawEvent)
{
    int width = rawEvent.GetVariable (Command::IMG_WIDTH);
    int height = rawEvent.GetVariable (Command::IMG_HEIGHT);

    if (0 == width || 0 == height) {
        return;
    }

    int rawLength;
    unsigned char* rawData = rawEvent.GetRawData (rawLength);

    int length = (width * height);
    float* imageData = new float[length];
    for (int ii = 0; ii < length; ii++) {
        imageData[ii] = 0;
    }

    //eventsLength = rawLength/2;
    eventsLength = rawLength/4;
    delete[] y_coor;
    y_coor = new int[eventsLength];

    delete[] x_coor;
    x_coor = new int[eventsLength];

    delete[] timeStamp;
    timeStamp = new int[eventsLength];

    for (int ii = 0; ii < eventsLength; ii++) {
        //int x = (~rawData[2*ii]) & 0x007F;
        //int y = (~rawData[2*ii + 1]) & 0x003F;

        int x = (~rawData[4*ii]) & 0x007F;
        int y = (~rawData[4*ii + 1]) & 0x003F;

        y_coor[ii] = y;
        x_coor[ii] = x;

        int addr = (y * width) + x;
        if (addr >=0 && addr < length) {
            imageData[addr] = (imageData[addr]) + 1;
        }

        int time_stamp_a = (int) rawData[4*ii + 2] & 0x00FF;
        int time_stamp_b = (int) (rawData[4*ii + 3] & 0x00FF) << 8;

        timeStamp[ii] = (time_stamp_a + time_stamp_b);
    }

    delete[] rawData;

    // Note: ownership of imageData array is now with canvas.
    canvas->SetData (width, height, imageData, length);
    canvas->Refresh (true, NULL); // Causes the image panel to be repainted.
}
Ejemplo n.º 4
0
void GraphicsImage::OnDeviceEvent (DeviceEvent& rawEvent)
{
    int saveType = rawEvent.GetVariable (Command::SAVE_TYPE);
    if (1 == saveType) {
        while (movie.size() > 0) {
            delete (movie.back());
            movie.pop_back();
        }
    }
    movie.push_back (rawEvent.Clone());
    information->SetMovieFrames (movie.size());

    UnpackEvent (rawEvent);
}
bool X11Device::translateKeyboard(const XEvent &xEvent, DeviceEvent &event) {
    X11Session *session = static_cast<X11Session *>(getSession());

    KeySym sym = XkbKeycodeToKeysym(session->m_display,
                                    xEvent.xkey.keycode, 0, 0);

    /* Default: 0 */
    event.setKeyboardKey(0);
    event.setKeyboardSpecial(0);

    /* Retrieve an 'interpreted' version of the key event */
    int noc = XLookupString(const_cast<XKeyEvent *>(&xEvent.xkey), event.getKeyboardInterpreted(),
                            15, NULL, NULL);
    event.getKeyboardInterpreted()[noc] = 0;

    if (sym != 0) {
        int type = sym >> 8;
        if (type >= 0x00 && type <= 0x0D) {
            /* Alphanumeric key */

            char key = sym & 0xFF;
            if (key >= 'A' && key <= 'Z') {
                /* Convert to lower-case */
                key += ('a' - 'A');
            }

            event.setKeyboardKey(key);
        } else if (type == 0xFE) {
            /* Ignore */
            return false;
        } else if (type == 0xFF) {
            /* Lookup special key */
            event.setKeyboardSpecial(m_keymap[sym & 0xFF]);
            if (event.getKeyboardSpecial()  == ENoSpecial)
                return false;
        } else {
            Log(EWarn, "Unknown X11 keysym: 0x%x", (int) sym);
            return false;
        }
        return true;
    }
void X11Device::translateMouse(const XEvent &xEvent, DeviceEvent &event) {
    event.setMousePosition(Point2i(xEvent.xbutton.x, xEvent.xbutton.y));

    /* Calculate relative coordinates */
    if (m_mouse.x != -1 && m_mouse.y != -1) {
        event.setMouseRelative(Vector2i(event.getMousePosition() - m_mouse));
    } else {
        event.setMouseRelative(Vector2i(0,0));
    }

    m_mouse = event.getMousePosition();

    if (xEvent.xbutton.button == Button1)
        event.setMouseButton(ELeftButton);
    else if (xEvent.xbutton.button == Button2)
        event.setMouseButton(EMiddleButton);
    else if (xEvent.xbutton.button == Button3)
        event.setMouseButton(ERightButton);
    else if (xEvent.xbutton.button == Button4)
        event.setMouseButton(EWheelUpButton);
    else if (xEvent.xbutton.button == Button5)
        event.setMouseButton(EWheelDownButton);
    else
        event.setMouseButton(ENoButton);
}