javauis/m2g_qt/javasrc/com/nokia/microedition/m2g/M2GSVGImage.java
author hgs
Fri, 29 Oct 2010 11:49:32 +0300
changeset 87 1627c337e51e
parent 80 d6dafc5d983f
permissions -rw-r--r--
v2.2.21_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     1
/*
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     3
* All rights reserved.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     8
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    11
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    12
* Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    13
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    14
* Description:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    15
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    16
*/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    17
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    18
package com.nokia.microedition.m2g;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    19
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    20
import java.io.ByteArrayInputStream;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    21
import java.io.IOException;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    22
import java.io.InputStream;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    23
import javax.microedition.m2g.ExternalResourceHandler;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    24
import javax.microedition.m2g.SVGImage;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    25
import org.w3c.dom.Document;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    26
import org.w3c.dom.svg.SVGElement;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    27
import org.w3c.dom.DOMException;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    28
import com.nokia.microedition.m2g.connection.*;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    29
import com.nokia.mj.impl.utils.Logger;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    30
import com.nokia.mj.impl.utils.StreamUtils;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    31
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    32
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    33
/*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    34
 * Image implementation
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    35
 */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    36
public class M2GSVGImage
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    37
        extends SVGImage
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    38
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    39
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    40
    // STATIC CONSTANTS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    41
    //--------------------------------------------------
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
    42
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    43
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    44
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    45
    //  VARIABLES
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    46
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    47
    M2GDocument iDocument = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    48
    private SVGElement iFocusedNode = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    49
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    50
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    51
    //  METHODS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    52
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    53
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    54
     * Constructor
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    55
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    56
    M2GSVGImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    57
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    58
        super();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    59
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    60
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    61
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    62
     * @see javax.microedition.m2g.SVGImage#activate()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    63
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    64
    public void activate()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    65
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    66
        SVGElement node = iFocusedNode;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    67
        while (node != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    68
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    69
            ((M2GDocument)getDocument()).handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    70
                        M2GSVGConstants.EVENT_ACTIVATE,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    71
                        node,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    72
                        M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    73
            node = (SVGElement)node.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    74
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    75
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    76
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    77
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    78
     * @see javax.microedition.m2g.SVGImage#dispatchMouseEvent()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    79
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    80
    public void dispatchMouseEvent(String type, int x, int y)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    81
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    82
        if (type == null || type.equals(""))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    83
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    84
            Logger.ELOG(Logger.EJavaUI, "dispatchMouseEvent() NullPointerException");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    85
            throw new NullPointerException(/*SF*/"The type is null."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    86
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    87
        if (x < 0 || y < 0)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    88
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    89
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    90
                        "dispatchMouseEvent() IllegalArgumentException");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    91
            throw new IllegalArgumentException(/*SF*/"The x or y values are negative."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    92
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    93
        if (!type.equals(M2GSVGConstants.EVENT_CLICK))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    94
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    95
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    96
                        "dispatchMouseEvent() DOMException - only click event is supported");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    97
            throw new DOMException(DOMException.NOT_SUPPORTED_ERR, /*SF*/"The event type is not supported."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    98
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    99
        int elementHandle = _dispatchMouseEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   100
                                iDocument.getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   101
                                iDocument.getHandle(), x, y);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   102
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   103
        SVGElement targetElement = M2GSVGElement.buildElement(elementHandle, iDocument);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   104
        SVGElement usedFromElement = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   105
        if ((targetElement != null) && ((M2GSVGElement)targetElement).isUsed())
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   106
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   107
            usedFromElement = ((M2GSVGElement)((M2GSVGElement)targetElement).getUsedFromElement());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   108
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   109
        if (targetElement instanceof M2GSVGElement)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   110
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   111
            iFocusedNode = targetElement;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   112
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   113
        while (targetElement != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   114
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   115
            // click event
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   116
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   117
                                      M2GSVGConstants.EVENT_CLICK, targetElement, M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   118
            // DOMActivate event
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   119
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   120
                                      M2GSVGConstants.EVENT_ACTIVATE, targetElement, M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   121
            // Gets parent node
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   122
            targetElement = (SVGElement)targetElement.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   123
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   124
        // The "target element" is only a clone. The "used from element" is the actual element.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   125
        if (usedFromElement != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   126
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   127
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   128
                                      M2GSVGConstants.EVENT_CLICK, usedFromElement, M2GEvent.WRAPPED_EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   129
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   130
                                      M2GSVGConstants.EVENT_ACTIVATE, usedFromElement, M2GEvent.WRAPPED_EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   131
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   132
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   133
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   134
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   135
     * @see javax.microedition.m2g.SVGImage#focusOn()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   136
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   137
    public void focusOn(SVGElement element)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   138
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   139
        SVGElement tempNode = element;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   140
        // If focusOn is called on the same element, do not focus out.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   141
        boolean callFocusOut =
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   142
            (((iFocusedNode != null) && (iFocusedNode == element ? false : true)) || ((iFocusedNode != null) && (element == null)));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   143
        //Checking to see if the element is hooked into the tree.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   144
        if (element != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   145
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   146
            tempNode = element;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   147
            while (tempNode != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   148
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   149
                if ((tempNode.getLocalName()).equals(M2GSVGConstants.ROOT_SVG_ELEMENT_NAME))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   150
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   151
                    // Breaks if tempNode is root svg
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   152
                    break;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   153
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   154
                tempNode = (SVGElement)tempNode.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   155
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   156
            // This indicates that the element does not contain a root element,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   157
            // therefore does not belong to the document.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   158
            if (tempNode == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   159
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   160
                Logger.ELOG(Logger.EJavaUI, "focusOn() - DOMException invalid element");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   161
                throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, /*SF*/"Invalid element."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   162
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   163
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   164
        // Focus out from the current focused node and its parents
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   165
        if (callFocusOut)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   166
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   167
            if (iFocusedNode instanceof M2GSVGElement)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   168
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   169
                _focusOut(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   170
                    ((M2GSVGElement)iFocusedNode).getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   171
                    ((M2GSVGElement)iFocusedNode).getDocument().getHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   172
                    ((M2GSVGElement)iFocusedNode).getHandle());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   173
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   174
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   175
            // Focus out the current focused node and its parents
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   176
            tempNode = iFocusedNode;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   177
            while (tempNode != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   178
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   179
                iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   180
                                          M2GSVGConstants.EVENT_FOCUS_OUT, tempNode, M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   181
                tempNode = (SVGElement)tempNode.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   182
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   183
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   184
        //focus in for element and its parents
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   185
        if ((element != null) && (element instanceof M2GSVGElement))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   186
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   187
            _focusOn(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   188
                ((M2GSVGElement)element).getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   189
                ((M2GSVGElement)element).getDocument().getHandle(),
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   190
                ((M2GSVGElement)element).getHandle());
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   191
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   192
        tempNode = element;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   193
        while (tempNode != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   194
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   195
            iDocument.handleEvent(new M2GEvent(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   196
                                      M2GSVGConstants.EVENT_FOCUS_IN, tempNode, M2GEvent.EVENT_TARGET));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   197
            tempNode = (SVGElement)tempNode.getParentNode();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   198
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   199
        // Sets the new focus
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   200
        iFocusedNode = element;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   201
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   202
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   203
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   204
     * @see javax.microedition.m2g.SVGImage#getDocument()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   205
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   206
    public Document getDocument()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   207
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   208
        return iDocument;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   209
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   210
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   211
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   212
     * @see javax.microedition.m2g.ScalableImage#getViewportHeight()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   213
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   214
    public synchronized int getViewportHeight()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   215
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   216
        return iDocument.getViewportHeight();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   217
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   218
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   219
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   220
    /*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   221
     * @see javax.microedition.m2g.ScalableImage#getViewportWidth()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   222
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   223
    public synchronized int getViewportWidth()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   224
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   225
        return iDocument.getViewportWidth();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   226
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   227
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   228
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   229
     * @see javax.microedition.m2g.SVGImage#incrementTime()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   230
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   231
    public void incrementTime(float seconds)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   232
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   233
        ((M2GSVGSVGElement)iDocument.getDocumentElement()).incrementTime(seconds);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   234
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   235
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   236
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   237
     * @see javax.microedition.m2g.ScalableImage#requestCompleted()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   238
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   239
    public void requestCompleted(String uri, InputStream resourceData) throws IOException
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   240
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   241
        if (uri == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   242
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   243
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   244
                        "requestCompleted() throw NullPointerException");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   245
            throw new NullPointerException(/*SF*/"The URI is null."/*SF*/);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   246
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   247
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   248
        if (resourceData != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   249
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   250
            byte receiveData[] = StreamUtils.readBytesFromStream(resourceData, -1);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   251
            iDocument.requestCompleted(uri, receiveData);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   252
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   253
        else
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   254
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   255
            // Indicates that the requested resource could not be
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   256
            // fetched by the ResourceHandler or application,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   257
            // and in this event the SVG engine will not make further attempts
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   258
            // to load this resource.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   259
            // Pass the null to the native side so it can delete the image
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   260
            iDocument.requestCompleted(uri, null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   261
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   262
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   263
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   264
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   265
     * Set document
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   266
     * @param aDocument -
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   267
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   268
    public void setDocument(M2GDocument aDocument)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   269
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   270
        iDocument = aDocument;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   271
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   272
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   273
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   274
     * @see javax.microedition.m2g.ScalableImage#setViewportHeight()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   275
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   276
    public synchronized void setViewportHeight(int height)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   277
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   278
        iDocument.setViewportHeight(height);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   279
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   280
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   281
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   282
     * @see javax.microedition.m2g.ScalableImage#setViewportWidth()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   283
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   284
    public synchronized void setViewportWidth(int width)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   285
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   286
        iDocument.setViewportWidth(width);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   287
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   288
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   289
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   290
    //  STATIC METHODS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   291
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   292
    /*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   293
     * @see javax.microedition.m2g.SVGImage#createEmptyImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   294
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   295
    public static M2GSVGImage buildEmptyImage(ExternalResourceHandler handler)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   296
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   297
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   298
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   299
            return M2GSVGImage.buildImage(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   300
                       new ByteArrayInputStream(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   301
                           M2GSVGConstants.getInstance().iEmptySvgDocument.getBytes()),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   302
                       handler, null, null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   303
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   304
        catch (IOException e)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   305
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   306
            Logger.ELOG(Logger.EJavaUI, "M2GSVGImage: buildEmptyImage - IOEception: " + e.toString());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   307
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   308
        return null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   309
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   310
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   311
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   312
     * Build svg image
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   313
     * @see javax.microedition.m2g.ScalableImage#createImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   314
     * @param stream Plain text stream that contains svg data
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   315
     * @param handler External resource handler. If null then default
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   316
     * external resource handler is used.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   317
     * @param baseUrl A base url from where a document is downloaded.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   318
     * @param suffixUrl The suffix url according to the DRM opening mode of the SVG file
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   319
     * Null if it's not known.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   320
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   321
    public static M2GSVGImage buildImage(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   322
        InputStream stream,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   323
        ExternalResourceHandler handler,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   324
        String baseUrl,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   325
        String suffixUrl) throws IOException
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   326
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   327
        if (stream == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   328
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   329
            throw new NullPointerException();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   330
        }
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   331
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   332
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   333
        String strData = new String(StreamUtils.readBytesFromStream(stream, -1));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   334
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   335
        // Default handler is used if the specified handler is null
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   336
        if (handler == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   337
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   338
            handler = M2GConnectionFactory.getExternalResourceHandler(null);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   339
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   340
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   341
        // Creates and setups svg image
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   342
        M2GSVGImage image = new M2GSVGImage();
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   343
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   344
        M2GDocument document = M2GDocument.buildDocument(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   345
                                   image,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   346
                                   baseUrl,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   347
                                   suffixUrl,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   348
                                   strData,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   349
                                   handler);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   350
        // Checks document validity
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   351
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   352
        image.setDocument(document);
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   353
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   354
        if (handler != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   355
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   356
            // Gets size of external resources
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   357
            int itemCount = _getExternalListSize(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   358
                                document.getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   359
                                document.getHandle());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   360
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   361
            // Loops through external items
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   362
            for (int index = 0; index < itemCount; index++)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   363
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   364
                String url = _getExternalListItem(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   365
                                 document.getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   366
                                 document.getHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   367
                                 index);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   368
                // Calls an external implementation of the resource handler
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   369
                if ((url != null) && !(url.equals("")))
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   370
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   371
                    document.invokeResourceHandler(url);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   372
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   373
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   374
        }
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   375
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   376
        // initialise the viewport
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   377
        _initViewport(document.getNativeSVGProxyHandle(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   378
                      document.getHandle());
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   379
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   380
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   381
        return image;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   382
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   383
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   384
    /**
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   385
     * @see javax.microedition.m2g.ScalableImage#createImage()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   386
     */
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   387
    public static M2GSVGImage buildImage(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   388
        String url, ExternalResourceHandler handler) throws IOException
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   389
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   390
        // Checks passed parameters
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   391
        if (url == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   392
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   393
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   394
                        "M2GSVGImage: 2 buildImage() - url is null");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   395
            throw new NullPointerException();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   396
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   397
        if (url.length() == 0)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   398
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   399
            Logger.ELOG(Logger.EJavaUI,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   400
                        "M2GSVGImage: 2 buildImage() - url is empty");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   401
            throw new IllegalArgumentException();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   402
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   403
        // Default handler is used if the specified handler is null
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   404
        if (handler == null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   405
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   406
            handler = M2GConnectionFactory.getExternalResourceHandler(url);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   407
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   408
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   409
        // Open the url and get input stream
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   410
        M2GSVGImage image = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   411
        M2GConnectionProxy connectionProxy = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   412
        try
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   413
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   414
            connectionProxy = M2GConnectionFactory.create(url);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   415
            image = M2GSVGImage.buildImage(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   416
                        connectionProxy.getInputStream(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   417
                        handler,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   418
                        connectionProxy.getBaseUrl(),
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   419
                        connectionProxy.getSuffixUrl());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   420
            // Set connection policy
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   421
            if (image != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   422
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   423
                Document doc = image.getDocument();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   424
                if (doc != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   425
                {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   426
                    ((M2GDocument)doc).setConnectionPolicy(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   427
                        connectionProxy.getConnectionPolicy());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   428
                }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   429
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   430
            return image;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   431
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   432
        finally
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   433
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   434
            if (connectionProxy != null)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   435
            {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   436
                connectionProxy.close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   437
                connectionProxy = null;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   438
            }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   439
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   440
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   441
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   442
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   443
    // NATIVE METHODS
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   444
    //--------------------------------------------------
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   445
    private native static int _dispatchMouseEvent(
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   446
        int aSvgProxyHandle,int aDocumentHandle,
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   447
        int aX, int aY);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   448
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   449
    private native static void _focusOn(
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   450
        int aSvgProxyHandle,int aDocumentHandle,
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   451
        int aSvgElementHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   452
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   453
    private native static void _focusOut(
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   454
        int aSvgProxyHandle,int aDocumentHandle,
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   455
        int aSvgElementHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   456
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   457
    native static int _getExternalListSize(
87
1627c337e51e v2.2.21_1
hgs
parents: 80
diff changeset
   458
        int aSvgProxyHandle, int aDocumentHandle);
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   459
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   460
    native static String _getExternalListItem(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   461
        int aSvgProxyHandle, int aDocumentHandle,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   462
        int aIndex);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   463
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   464
    private native static void _initViewport(
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   465
        int aSvgProxyHandle, int aDocumentHandle);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   466
}