javauis/m2g_qt/javasrc/com/nokia/microedition/m2g/M2GSVGAnimationElement.java
author hgs
Fri, 29 Oct 2010 11:49:32 +0300
changeset 87 1627c337e51e
parent 56 abc41079b313
permissions -rw-r--r--
v2.2.21_1

/*
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/


package com.nokia.microedition.m2g;

import org.w3c.dom.svg.*;
import com.nokia.mj.impl.utils.Logger;


/**
 * This interface represents an Animation element,
 * which contains methods to control the timing of
 * animations.
 */
public class M2GSVGAnimationElement
        extends M2GSVGElement
        implements SVGAnimationElement
{
    //--------------------------------------------------
    // METHODS
    //--------------------------------------------------
    /**
     * Constructor
     * @param aElemnetHandle -
     * @param aDocument -
     */
    public M2GSVGAnimationElement(int aElementHandle, M2GDocument aDocument)
    {
        super(aElementHandle, aDocument);
    }

    /**
     * @see org.w3c.dom.svg.SVGAnimationElement#beginElementAt()
     */
    public void beginElementAt(float offset)
    {
        _beginElementAt(
            getNativeSVGProxyHandle(),
            getDocument().getHandle(), getHandle(), offset,
            getDocument().getRootElement().getCurrentTime());
    }

    /**
     * Same as the beginElementAt with offset 0.0f
     * @see org.w3c.dom.svg.SVGAnimationElement#beginElementAt()
     */
    public void beginElement()
    {
        beginElementAt(0.0f);
    }

    /**
     * @see org.w3c.dom.svg.SVGAnimationElement#endElementAt()
     */
    public void endElementAt(float offset)
    {
        short endAttribute = _getEnumTrait(
                                 getNativeSVGProxyHandle(),
                                 getHandle(), M2GSVGConstants.AT_END);
        // NOTE Native SVG engine checks that element is active so
        // java side doesn't have to do that
        if (endAttribute == M2GSVGConstants.ANIM_INDEFINITE)
        {
            Logger.LOG(Logger.EJavaUI, Logger.EInfo,
                       "endElementAt() - Cannot stop this animation, indefinite attribute");
        }
        else
        {
            _endElementAt(
                getNativeSVGProxyHandle(),
                getDocument().getHandle(), getHandle(),
                (offset + getDocument().getRootElement().getCurrentTime()));
        }
    }


    //--------------------------------------------------
    // NATIVE METHODS
    //--------------------------------------------------
    private native void _beginElementAt(
        int aSvgProxyHandle, int aDocumentHandle,
        int aElementHandle, float aOffset, float aCurrentTime);

    private native void _endElementAt(
        int aSvgProxyHandle, int aDocumentHandle,
        int aElementHandle, float aOffset);

    private native boolean _isActive(
        int aSvgProxyHandle, int aElementHandle);
}