diff -r f5050f1da672 -r 04becd199f91 javauis/m2g_akn/src/jni/M2GDocument.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/m2g_akn/src/jni/M2GDocument.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,799 @@ +/* +* 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" +#include + +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 + */ +LOCAL_C void DoCreateDocumentL( + MM2GSVGProxy* aProxy, + TPtrC16* aData, + TInt* aHandle) +{ + aProxy->CreateDocumentL(*aData, *aHandle); +} + +/** + * + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1createDocument( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jstring aData, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _createDocument - begin"); + TInt handle = M2G_INVALID_HANDLE; + TInt err = KM2GNotOk; + RJString data(*aJni, aData); + + if (aUiToolkit) // If eSWT is the current toolkit + { + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + typedef void (MM2GSVGProxy::*pCreateDocumentL)(const TPtrC16& ,TInt&); + pCreateDocumentL CreateDocumentL = &MM2GSVGProxy::CreateDocumentL; + TPtrC16* aData = STATIC_CAST(TPtrC16*, &data); + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper2 DoCreateDocument( + *aProxy, + CreateDocumentL, + *aData, + handle); + err = client->Execute(DoCreateDocument); + } + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + + // RJString is a subclass of TPtrC16 + RJString data(*aJni, aData); + + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoCreateDocumentL, + JavaUnhand(aSvgProxyHandle), + STATIC_CAST(TPtrC16*, &data), + &handle); + } + + } + 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 + */ +LOCAL_C void DoCreateElementNsL( + MM2GSVGProxy* aProxy, + TInt16 aType, + TInt aDocumentHandle, + TInt* aHandle) +{ + aProxy->CreateElementNsL( + aType, + aDocumentHandle, + *aHandle); +} + +/** + * + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1createElementNS( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jshort aType, + jint aDocumentHandle, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _createElementNS - begin"); + + // Execute native engine method + TInt handle = M2G_INVALID_HANDLE; + TInt err = KM2GNotOk; + if (aUiToolkit) // If eSWT is the current toolkit + { + // get access to function server + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + // Original function prototype + typedef void (MM2GSVGProxy::*pCreateElementNsL)(const TInt16& ,const TInt&, TInt&); + pCreateElementNsL CreateElementNsL = &MM2GSVGProxy::CreateElementNsL; + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper3 DoCreateElementNs( + *aProxy, + CreateElementNsL, + aType, + aDocumentHandle, + handle); + // call 'DoCreateElementNsL' on aSvgProxyHandle + err = client->Execute(DoCreateElementNs); + } + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoCreateElementNsL, + JavaUnhand(aSvgProxyHandle), + aType, + aDocumentHandle, + &handle); + + } + } + 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 + */ +LOCAL_C void DoDeleteDocumentL(MM2GSVGProxy* aProxy, TInt aDocumentHandle) +{ + aProxy->DeleteDocumentL(aDocumentHandle); +} + +/** + * JNI method + */ +JNIEXPORT void JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1deleteDocument( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jint aDocumentHandle, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _deleteDocument - begin"); + TInt err = KM2GNotOk; + if (aUiToolkit) // If eSWT is the current toolkit + { + // get access to function server + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + + if (client && aSvgProxyHandle) + { + // Original function prototype + typedef void (MM2GSVGProxy::*pDeleteDocumentL)(const TInt&); + + // Get member function address + pDeleteDocumentL DeleteDocumentL = &MM2GSVGProxy::DeleteDocumentL; + + // Extract the SVGProxy handle + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + + // Use the Method wrapper for 1 Arg + TMethodWrapper1 DeleteDocument( + *aProxy, + DeleteDocumentL, + aDocumentHandle); + // call 'DeleteDocumentL' on aSvgProxyHandle + err = client->Execute(DeleteDocument); + } + + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + if (eventSource && aSvgProxyHandle && aDocumentHandle) + { + // Execute native engine method + err = eventSource->ExecuteTrap( + &DoDeleteDocumentL, + JavaUnhand(aSvgProxyHandle), + aDocumentHandle); + + } + } + 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. + */ +LOCAL_C void DoGetElementByIdL( + MM2GSVGProxy* aProxy, + TInt aDocumentHandle, + TPtrC16* aId, + TInt* aHandle) +{ + aProxy->GetElementByIdL(aDocumentHandle, *aId, *aHandle); +} + +/** + * JNI method + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1getElementById( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jint aDocumentHandle, + jstring aId, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _getElementById - begin"); + TInt handle = M2G_INVALID_HANDLE; + TInt err = KM2GNotOk; + RJString id(*aJni, aId); + if (aUiToolkit) + { + // get access to function server + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + typedef void (MM2GSVGProxy::*pGetElementByIdL)(const TInt&, const TPtrC16& ,TInt&); + pGetElementByIdL GetElementByIdL = &MM2GSVGProxy::GetElementByIdL; + TPtrC16* lId = STATIC_CAST(TPtrC16*, &id); + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper3 GetElementById( + *aProxy, + GetElementByIdL, + aDocumentHandle, + *lId, + handle); + err = client->Execute(GetElementById); + } + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoGetElementByIdL, + JavaUnhand(aSvgProxyHandle), + aDocumentHandle, + STATIC_CAST(TPtrC16*, &id), + &handle); + } + } + 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. + */ +LOCAL_C void DoGetViewportHeightL( + MM2GSVGProxy* aProxy, + TInt aDocumentHandle, + TInt* aHeight) +{ + aProxy->GetViewportHeightL(aDocumentHandle, *aHeight); +} + +/** + * JNI method + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1getViewportHeight( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jint aDocumentHandle, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _getViewportHeight - begin"); + TInt err = KM2GNotOk; + TInt height = 0; + if (aUiToolkit) + { + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + // Original function prototype + typedef void (MM2GSVGProxy::*pGetViewportHeightL)(const TInt& ,TInt&); + pGetViewportHeightL GetViewportHeightL = &MM2GSVGProxy::GetViewportHeightL; + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper2 GetViewportHeight( + *aProxy, + GetViewportHeightL, + aDocumentHandle, + height); + err = client->Execute(GetViewportHeight); + } + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoGetViewportHeightL, + JavaUnhand(aSvgProxyHandle), + aDocumentHandle, + &height); + } + } + 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. + */ +LOCAL_C void DoGetViewportWidthL( + MM2GSVGProxy* aProxy, + TInt aDocumentHandle, + TInt* aWidth) +{ + aProxy->GetViewportWidthL(aDocumentHandle, *aWidth); +} + +/** + * Class: com_nokia_microedition_m2g_M2GDocument + * Method: _getViewportWidth + * Signature: + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1getViewportWidth( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jint aDocumentHandle, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _getViewportWidth - begin"); + TInt err = KM2GNotOk; + TInt width = 0; + if (aUiToolkit) + { + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + typedef void (MM2GSVGProxy::*pGetViewportWidthL)(const TInt& ,TInt&); + pGetViewportWidthL GetViewportWidthL = &MM2GSVGProxy::GetViewportWidthL; + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper2 GetViewportWidth( + *aProxy, + GetViewportWidthL, + aDocumentHandle, + width); + err = client->Execute(GetViewportWidth); + } + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoGetViewportWidthL, + JavaUnhand(aSvgProxyHandle), + aDocumentHandle, + &width); + } + } + 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 + */ +LOCAL_C void DoIsElementInDomL( + MM2GSVGProxy* aProxy, + TInt aDocumentHandle, + TInt aElementHandle, + TInt* aIsElementInDom) +{ + aProxy->IsElementInDomL( + aDocumentHandle, aElementHandle, *aIsElementInDom); +} + +/** + * JNI method. + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1isElementInDOM( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jint aDocumentHandle, + jint aElementHandle, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI _isElementInDOM - begin"); + TInt isElementInDom = -1; + TInt err = KM2GNotOk; + if (aUiToolkit) + { + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + typedef void (MM2GSVGProxy::*pIsElementInDomL)(const TInt& ,const TInt&, TInt&); + pIsElementInDomL IsElementInDomL = &MM2GSVGProxy::IsElementInDomL; + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper3 IsElementInDom( + *aProxy, + IsElementInDomL, + aDocumentHandle, + aElementHandle, + isElementInDom); + err = client->Execute(IsElementInDom); + } + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoIsElementInDomL, + JavaUnhand(aSvgProxyHandle), + aDocumentHandle, + aElementHandle, + &isElementInDom); + } + } + 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 + */ +LOCAL_C void DoRequestCompletedL( + MM2GSVGProxy* aProxy, + TM2GSvgDocumentHandle aDocumentHandle, + TPtrC16* aURI, + TPtrC8* aResourceData, + TInt* aCompleted) +{ + aProxy->RequestCompletedL( + aDocumentHandle, + *aURI, + *aResourceData, + *aCompleted); + M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GDocument ) DoRequestCompletedL: %d - end", *aCompleted); +} + +/** + * JNI method + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1requestCompleted( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jint aDocumentHandle, + jstring aURI, + jbyteArray aResourceData, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _requestCompleted - begin"); + + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + 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; + if (aUiToolkit) + { + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + TPtrC16* pUri = STATIC_CAST(TPtrC16*, &uri); + typedef void (MM2GSVGProxy::*pRequestCompletedL)(const TInt& ,const TPtrC16&, const TPtrC8&, TInt&); + pRequestCompletedL RequestCompletedL = &MM2GSVGProxy::RequestCompletedL; + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper4 RequestCompleted( + *aProxy, + RequestCompletedL, + aDocumentHandle, + *pUri, + lResData8, + completed); + err = client->Execute(RequestCompleted); + } + } + else + { + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoRequestCompletedL, + JavaUnhand(aSvgProxyHandle), + aDocumentHandle, + STATIC_CAST(TPtrC16*, &uri), + &lResData8, + &completed); + + } + + } + 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 + */ +LOCAL_C void DoSetViewportHeightL( + MM2GSVGProxy* aProxy, + TInt aDocumentHandle, + TInt aHeight) +{ + aProxy->SetViewportHeightL( + (TM2GSvgDocumentHandle)aDocumentHandle, aHeight); +} + +/** + * JNI method + */ +JNIEXPORT void JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1setViewportHeight( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jint aDocumentHandle, + jint aHeight, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _setViewportHeight - begin"); + TInt err = KM2GNotOk; + if (aUiToolkit) + { + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + typedef void (MM2GSVGProxy::*pSetViewportHeightL)(const TInt& ,TInt); + pSetViewportHeightL SetViewportHeightL = &MM2GSVGProxy::SetViewportHeightL; + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper2 SetViewportHeight( + *aProxy, + SetViewportHeightL, + aDocumentHandle, + aHeight); + err = client->Execute(SetViewportHeight); + } + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoSetViewportHeightL, + JavaUnhand(aSvgProxyHandle), + aDocumentHandle, + aHeight); + } + } + 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 + */ +LOCAL_C void DoSetViewportWidthL( + MM2GSVGProxy* aProxy, + TInt aDocumentHandle, + TInt aWidth) +{ + aProxy->SetViewportWidthL( + (TM2GSvgDocumentHandle)aDocumentHandle, aWidth); +} + +/** + * JNI method + */ +JNIEXPORT void JNICALL +Java_com_nokia_microedition_m2g_M2GDocument__1setViewportWidth( + JNIEnv* aJni, + jclass, + jint aEventSourceHandle, + jint aSvgProxyHandle, + jint aDocumentHandle, + jint aWidth, + jboolean aUiToolkit) +{ + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _setViewportWidth - begin"); + TInt err = KM2GNotOk; + if (aUiToolkit) + { + MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle); + if (client && aSvgProxyHandle) + { + typedef void (MM2GSVGProxy::*pSetViewportWidthL)(const TInt& ,TInt); + pSetViewportWidthL SetViewportWidthL = &MM2GSVGProxy::SetViewportWidthL; + MM2GSVGProxy* aProxy = JavaUnhand(aSvgProxyHandle); + TMethodWrapper2 SetViewportWidth( + *aProxy, + SetViewportWidthL, + aDocumentHandle, + aWidth); + err = client->Execute(SetViewportWidth); + } + } + else + { + CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle); + if (eventSource && aSvgProxyHandle) + { + err = eventSource->ExecuteTrap( + &DoSetViewportWidthL, + JavaUnhand(aSvgProxyHandle), + aDocumentHandle, + aWidth); + + } + } + M2GGeneral::CheckErrorCode(aJni, err); + M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GDocument ) _setViewportWidth - end"); +} + +M2G_NS_END