diff -r 023eef975703 -r abc41079b313 javauis/m2g_qt/src/jni/M2GDocument.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/m2g_qt/src/jni/M2GDocument.cpp Fri Jul 23 12:27:20 2010 +0300 @@ -0,0 +1,442 @@ +/* +* Copyright (c) 2005-2006 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: JNI methods +* +*/ + +// INCLUDE FILES +#include "CM2GEventSource.h" +#include "com_nokia_microedition_m2g_M2GDocument.h" +#include "MM2GSVGProxy.h" + +M2G_NS_START + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// CLASS DECLARATION + +// ================================ FUNCTIONS ================================== + +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_createDocument +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::CreateDocumentL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aData Document data + * @param aHandle Document handle to be returned + * @throws Exception if not ok +*/ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1createDocument( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jstring aData) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _createDocument - begin"); + + TInt handle = M2G_INVALID_HANDLE; + TInt err = KM2GNotOk; + RJString data(*aJni, aData); + TPtrC16* bData = STATIC_CAST(TPtrC16*, &data); + + M2G_DO_LOCK + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err,aProxy->CreateDocumentL(*bData, handle);); + } + M2G_DO_UNLOCK(aJni) + + handle = M2GGeneral::CheckErrorCodeAndHandle(aJni, err, handle, M2G_INVALID_HANDLE); + M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GDocument ) _createDocument: %d - end", handle); + return handle; +} + +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_createElementNS +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::CreateElementNsL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aType Element type id. + * @param aDocumentHandle Document handle. + * @param aHandle Element handle to be returned + * @throws Exception if not ok + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1createElementNS( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jshort aType, + jint aDocumentHandle) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _createElementNS - begin"); + + // Execute native engine method + TInt handle = M2G_INVALID_HANDLE; + TInt err = KM2GNotOk; + + M2G_DO_LOCK + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err,aProxy->CreateElementNsL( + aType, + aDocumentHandle, + handle); ); + + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GDocument ) _createElementNS: %d - end", handle); + return handle; +} + +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_deleteDocument +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::DeleteDocumentL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aDocumentHandle Document handle + * @throws Exception if not ok + */ +JNIEXPORT void JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1deleteDocument( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jint aDocumentHandle ) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _deleteDocument - begin"); + TInt err = KM2GNotOk; + + M2G_DO_LOCK + // Extract the SVGProxy handle + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err,aProxy->DeleteDocumentL(aDocumentHandle);); + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _deleteDocument - end"); +} + + +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_getElementById +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::GetElementByIdL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aDocumentHandle Document pointer. + * @param aId Element ID. + * @param aHandle Element handle to be returned. + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1getElementById( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jint aDocumentHandle, + jstring aId) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _getElementById - begin"); + TInt handle = M2G_INVALID_HANDLE; + TInt err = KM2GNotOk; + RJString id(*aJni, aId); + TPtrC16* lId = STATIC_CAST(TPtrC16*, &id); + + M2G_DO_LOCK + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err,aProxy->GetElementByIdL(aDocumentHandle, *lId, handle);); + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + + M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GDocument ) _getElementById: %d - end", handle); + return handle; +} + +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_getViewportHeight +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::GetViewportHeightL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aDocumentHandle Document pointer. + * @param aHeight Height to be returned. + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1getViewportHeight( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jint aDocumentHandle) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _getViewportHeight - begin"); + TInt err = KM2GNotOk; + TInt height = 0; + + M2G_DO_LOCK + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err,aProxy->GetViewportHeightL(aDocumentHandle, height);); + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + + M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GDocument ) _getViewportHeight: %d - end", height); + return height; +} +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_getViewportWidth +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::GetViewportWidthL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aDocumentHandle Document pointer. + * @param aWidth Width to be returned. + * Class: com_nokia_microedition_m2g_M2GDocument + * Method: _getViewportWidth + * Signature: + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1getViewportWidth( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jint aDocumentHandle) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _getViewportWidth - begin"); + TInt err = KM2GNotOk; + TInt width = 0; + + M2G_DO_LOCK + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err,aProxy->GetViewportWidthL(aDocumentHandle, width);); + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + + M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GDocument ) _getViewportWidth: %d - end", width); + return width; +} + +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_isElementInDom +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::IsElementInDomL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aDocumentHandle Document pointer. + * @param aElementHandle Element pointer. + * @param aIsElementInDom Result + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1isElementInDOM( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jint aDocumentHandle, + jint aElementHandle) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI _isElementInDOM - begin"); + TInt isElementInDom = -1; + TInt err = KM2GNotOk; + + M2G_DO_LOCK + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err,aProxy->IsElementInDomL( + aDocumentHandle, aElementHandle, isElementInDom);); + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + + M2G_DEBUG_1("M2G_DEBUG: JNI _isElementInDOM: %d - end", isElementInDom); + return isElementInDom; +} + +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_requestCompleted +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::RequestCompletedL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aDocumentHandle Document pointer. + * @param aURI Resource uri + * @param aResourceData Resource data + * @param aCompleted Result + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1requestCompleted( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jint aDocumentHandle, + jstring aURI, + jbyteArray aResourceData) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _requestCompleted - begin"); + + RJString uri(*aJni, aURI); + TInt err = KM2GNotOk; + TPtrC8 lResData8; + jbyte* resBytes = NULL; + + if (aResourceData) + { + resBytes = aJni->GetByteArrayElements(aResourceData, NULL); + lResData8.Set(REINTERPRET_CAST(TUint8*, resBytes), aJni->GetArrayLength(aResourceData)); + } + + TInt completed = -1; + TPtrC16* pUri = STATIC_CAST(TPtrC16*, &uri); + + M2G_DO_LOCK + + if (aSvgProxyHandle) + { + + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + + TRAP(err, aProxy->RequestCompletedL( + aDocumentHandle, + *pUri, + lResData8, + completed);); + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + if (aResourceData) + { + aJni->ReleaseByteArrayElements(aResourceData, resBytes, JNI_ABORT); // don't copy back + } + + M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GDocument ) _requestCompleted: %d - end", completed); + + return completed; +} + +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_setViewportHeight +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::SetViewportHeightL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aDocumentHandle Document pointer. + * @param aHeight Height + * JNI method + */ +JNIEXPORT void JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1setViewportHeight( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jint aDocumentHandle, + jint aHeight) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _setViewportHeight - begin"); + TInt err = KM2GNotOk; + + M2G_DO_LOCK + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err,aProxy->SetViewportHeightL( + (TM2GSvgDocumentHandle)aDocumentHandle, aHeight);); + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _setViewportHeight - end"); +} +// ----------------------------------------------------------------------------- +// Java_com_nokia_microedition_m2g_M2GDocument::_setViewportWidth +// ----------------------------------------------------------------------------- +/** + * Calls MM2GSVGProxy::SetViewportWidthL method. + * @since Series S60 3.0 + * @param aProxy Proxy instance. + * @param aDocumentHandle Document pointer. + * @param aWidth Width + * JNI method + */ +JNIEXPORT void JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1setViewportWidth( + JNIEnv* aJni, + jclass, + jint aSvgProxyHandle, + jint aDocumentHandle, + jint aWidth) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _setViewportWidth - begin"); + TInt err = KM2GNotOk; + + M2G_DO_LOCK + if (aSvgProxyHandle) + { + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TRAP(err, aProxy->SetViewportWidthL( + (TM2GSvgDocumentHandle)aDocumentHandle, aWidth);); + } + M2G_DO_UNLOCK(aJni) + + M2GGeneral::CheckErrorCode(aJni, err); + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _setViewportWidth - end"); +} + +M2G_NS_END