MultitouchImpl.java

/*
 * Copyright © 2012 Nokia Corporation. All rights reserved.
 * Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation.
 * Oracle and Java are trademarks or registered trademarks of Oracle and/or its
 * affiliates. Other product and company names mentioned herein may be trademarks
 * or trade names of their respective owners.
 * See LICENSE.TXT for license information.
 */

package com.nokia.example.paint.touch;

import com.nokia.mid.ui.multipointtouch.MultipointTouch;
import com.nokia.mid.ui.multipointtouch.MultipointTouchListener;

class MultiTouchImpl extends MultiTouch implements MultipointTouchListener {

    MultiTouchImpl() {
        // Listen for multi-touch events
        MultipointTouch.getInstance().addMultipointTouchListener(this);
    }

    /**
     * Deliver pointer events to listener
     * @param ids
     */
    public void pointersChanged(int[] ids) {
        for (int i = 0; i < ids.length; i++) {
            int id = ids[i];
            int x = MultipointTouch.getX(id);
            int y = MultipointTouch.getY(id);
            switch (MultipointTouch.getState(id)) {
                case MultipointTouch.POINTER_PRESSED:
                    touchListener.pointerPressed(x, y, id);
                    break;
                case MultipointTouch.POINTER_DRAGGED:
                    touchListener.pointerDragged(x, y, id);
                    break;
                case MultipointTouch.POINTER_RELEASED:
                    touchListener.pointerReleased(x, y, id);
                    break;
            }
        }
    }

    /**
     * @return Amount of supported touch points
     */
    protected int getPointers() {
        return MultipointTouch.getMaxPointers();
    }
}