Package de.dfki.km.text20.services.trackingdevices.eyes

Examples of de.dfki.km.text20.services.trackingdevices.eyes.EyeTrackingEvent


     */
    public long getStopTime() {
        final Fixation fixation = this.$fixations.compact().get(-1);
        if (fixation == null || fixation.getTrackingEvents() == null) return 0;

        final EyeTrackingEvent trackingEvent = $(fixation.getTrackingEvents()).get(-1);
        if (trackingEvent == null) return 0;

        return trackingEvent.getEventTime();
    }
View Full Code Here


                        final PointerInfo pointerInfo = MouseInfo.getPointerInfo();

                        // Obtain information from the mouse
                        final Point point = pointerInfo.getLocation();

                        final EyeTrackingEvent event = createEvent(point);

                        MouseTrackingDevice.this.listenerLock.lock();
                        // And dispatch it to the listener
                        for (int i = 0; i < MouseTrackingDevice.this.trackingListener.size(); i++) {
                            final EyeTrackingListener l = MouseTrackingDevice.this.trackingListener.get(i);
View Full Code Here

                this.listenerLock.unlock();
            }
        }

        public EyeTrackingEvent createEvent(final Point p) {
            return new EyeTrackingEvent() {

                long et = System.currentTimeMillis();

                @Override
                public boolean areValid(final EyeTrackingEventValidity... validities) {
View Full Code Here

     *
     * @return .
     */
    private boolean checkLastFixationStopped() {
        if (this.fixation == null) return false;
        final EyeTrackingEvent last = getLast(1).get(0);

        if (last.getGazeCenter().distance(this.fixation) > OUTER_RING_SIZE / 2) {
            this.numOutsideOuterRing++;
        }
        if (last.getGazeCenter().distance(this.fixation) <= INNER_RING_SIZE / 2) {
            this.numOutsideOuterRing = 0;
        }

        if (this.numOutsideOuterRing > FIXATION_THRESHOLD) {
            this.fixation = null;
View Full Code Here

     * @return .
     */
    private boolean checkStillInsideFixation() {
        if (!assertSize()) return false;
        if (this.fixation == null) return false;
        final EyeTrackingEvent last = getLast(1).get(0);

        if (last.getGazeCenter().distance(this.fixation) <= INNER_RING_SIZE / 2) {
            this.stillInsideFixation = true;
            return true;
        }

        return false;
View Full Code Here

        final int lstSize = trackingEvents.size();

        double res = 0.;
        for (int i = 0; i < lstSize; ++i) {
            for (int j = i + 1; j < lstSize; ++j) {
                final EyeTrackingEvent ei = trackingEvents.get(i);
                final EyeTrackingEvent ej = trackingEvents.get(j);
                final double dist = ei.getGazeCenter().distance(ej.getGazeCenter());
                res += dist;
            }
        }
        res = res / lstSize;
        return res;
View Full Code Here

        this.filters.add(filter);
    }

    @Override
    public EyeTrackingEvent filterEvent(final EyeTrackingEvent event) {
        EyeTrackingEvent e = event; // use a new variable to suppress warning
        for (final AbstractFilter filter : this.filters) {
            e = filter.filterEvent(e);
        }
        return e;
    }
View Full Code Here

        // If the element is not visible, don't do anything
        if (!this.pseudorenderer.getStatus().contains(PseudorendererStatus.VISIBLE))
            return;

        // Put entry in filter
        final EyeTrackingEvent filterEvent = this.filter.filterEvent(event);

        // Update the displacement filter
        this.displacementFilter.updateDocumentOffset(this.pseudorenderer.getViewport());
        this.displacementFilter.updateScreenPosition(this.pseudorenderer.getGeometry());

        final Rectangle region = new Rectangle(event.getGazeCenter(), this.searchSize);
        region.x -= this.searchSize.width / 2;
        region.y -= this.searchSize.height / 2;

        // Update elements in region.
        final Collection<RenderElement> allElementsIntersecting = this.pseudorenderer.getAllElementsIntersecting(region, CoordinatesType.SCREEN_BASED);
        for (final RenderElement renderElement : allElementsIntersecting) {
            this.displacementFilter.updateRenderElement(renderElement);
        }

        final EyeTrackingEvent attracted = this.displacementFilter.filterEvent(filterEvent);

        Point fixation = this.filter.getFixation().getCenter();

        // If nothing changed ...
        if (!(this.filter.isNewFixation() || this.filter.isEndOfFixation())) return;

        if (fixation == null) {
            // Execute all handler
            for (final String h : handler) {
                this.browserPlugin.executeJSFunction(h, -1, -1);
            }
        } else {
            fixation = attracted.getGazeCenter();
            // Find what's below the gaze
            final Point dp = this.pseudorenderer.convertPoint(fixation, CoordinatesType.SCREEN_BASED, CoordinatesType.DOCUMENT_BASED);
            if (dp == null) return;

            // Execute all handler
View Full Code Here

        // If the element is no000000t visible, don't do anything
        if (!this.pseudorenderer.getStatus().contains(PseudorendererStatus.VISIBLE))
            return;

        // a) Put entry in filter
        final EyeTrackingEvent filterEvent = this.fixationFilter.filterEvent(event);

        // b) Update filters with data near the current gaze point
        updateFilter(event);

        // c) And calculate the attracted position using updated data
        //final TrackingEvent attracted = this.displacementFilter.filterEvent(filterEvent);
        final EyeTrackingEvent attracted = filterEvent;

        // We're only interested in new fixations
        if (!this.fixationFilter.isNewFixation()) return;

        // Now we hopefully have better fixation information
        final Point fixation = attracted.getGazeCenter();

        updateFixations(filterEvent.getEventTime(), fixation);
    }
View Full Code Here

        if (this.eyeTrackingDevice == null) return;

        final AtomicLong lng = new AtomicLong();
        final AtomicBoolean warned = new AtomicBoolean(false);

        this.eyeTrackingDevice.addTrackingListener(new EyeTrackingListener() {

            @Override
            public void newTrackingEvent(final EyeTrackingEvent event) {
                lng.set(System.currentTimeMillis());
            }
View Full Code Here

TOP

Related Classes of de.dfki.km.text20.services.trackingdevices.eyes.EyeTrackingEvent

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.