javauis/m2g_akn/src/jni/M2GSVGPath.cpp
branchRCL_3
changeset 14 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/m2g_akn/src/jni/M2GSVGPath.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,785 @@
+/*
+* 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_M2GSVGPath.h"
+#include "MM2GSVGProxy.h"
+#include <methodwrappers.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_M2GSVGPath::_addClose
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::AddCloseL method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ */
+LOCAL_C void DoAddCloseL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle)
+{
+    aProxy->AddCloseL(STATIC_CAST(TM2GSvgPathHandle, aPathHandle));
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT void JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1addClose(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jint aPathHandle,
+    jboolean aUiToolKit)
+{
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _addClose - begin");
+    TInt err = KM2GNotOk;
+    if (aUiToolKit)  // If eSWT is the current toolkit
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pAddCloseL)(const TM2GSvgPathHandle&);
+            pAddCloseL AddCloseL = &MM2GSVGProxy::AddCloseL;
+            MM2GSVGProxy* aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgPathHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TMethodWrapper1<MM2GSVGProxy, const TM2GSvgPathHandle& > AddClose(
+                *aProxy,
+                AddCloseL,
+                lPathHandle);
+            err = client->Execute(AddClose);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoAddCloseL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle);
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _addClose - end");
+}
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_addCurve
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::AddCurveTo method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ * @param aPathCurveData Curve parameters
+ */
+LOCAL_C void DoAddCurveToL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle,
+    TM2GPathCurveData* aPathCurveData)
+{
+    aProxy->AddCurveToL(
+        STATIC_CAST(TM2GSvgPathHandle, aPathHandle),
+        *aPathCurveData);
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT void JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1addCurveTo(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jint aPathHandle,
+    jfloat aX1, jfloat aY1, jfloat aX2, jfloat aY2, jfloat aX3, jfloat aY3 ,
+    jboolean aUiToolKit)
+{
+    M2G_DEBUG_6("M2G_DEBUG: JNI ( M2GSVGPath ) _addCurveTo: X1=%f, Y1=%f, X2=%f, Y2=%f, X3=%f, Y3=%f - begin", aX1, aY1, aX2, aY2, aX3, aY3);
+    TInt err = KM2GNotOk;
+    if (aUiToolKit)  // If eSWT is the current toolkit
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pAddCurveToL)(const TM2GSvgPathHandle& ,const TM2GPathCurveData&);
+            pAddCurveToL AddCurveToL = &MM2GSVGProxy::AddCurveToL;
+            MM2GSVGProxy* aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgPathHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TM2GPathCurveData curve;
+            curve[ 0 ] = STATIC_CAST(TReal32, aX1);
+            curve[ 1 ] = STATIC_CAST(TReal32, aY1);
+            curve[ 2 ] = STATIC_CAST(TReal32, aX2);
+            curve[ 3 ] = STATIC_CAST(TReal32, aY2);
+            curve[ 4 ] = STATIC_CAST(TReal32, aX3);
+            curve[ 5 ] = STATIC_CAST(TReal32, aY3);
+            TMethodWrapper2<MM2GSVGProxy, const TM2GSvgPathHandle& ,const TM2GPathCurveData& > AddCurveTo(
+                *aProxy,
+                AddCurveToL,
+                lPathHandle,
+                curve);
+            err = client->Execute(AddCurveTo);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+        if (eventSource && aSvgProxyHandle)
+        {
+            TM2GPathCurveData curve;
+            curve[ 0 ] = STATIC_CAST(TReal32, aX1);
+            curve[ 1 ] = STATIC_CAST(TReal32, aY1);
+            curve[ 2 ] = STATIC_CAST(TReal32, aX2);
+            curve[ 3 ] = STATIC_CAST(TReal32, aY2);
+            curve[ 4 ] = STATIC_CAST(TReal32, aX3);
+            curve[ 5 ] = STATIC_CAST(TReal32, aY3);
+
+            err = eventSource->ExecuteTrap(
+                      &DoAddCurveToL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle,
+                      &curve);
+
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _addCurveTo - end");
+}
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_addLineTo
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::AddLineToL method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ * @param aX -
+ * @param aY -
+ */
+LOCAL_C void DoAddLineToL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle,
+    TReal32* aX, TReal32* aY)
+{
+    aProxy->AddLineToL(STATIC_CAST(TM2GSvgPathHandle, aPathHandle), *aX, *aY);
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT void JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1addLineTo(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jint aPathHandle,
+    jfloat aX, jfloat aY ,jboolean aUiToolKit)
+{
+    M2G_DEBUG_2("M2G_DEBUG: JNI ( M2GSVGPath ) _addLineTo: X=%f, Y=%f - begin", aX, aY);
+    TInt err = KM2GNotOk;
+    if (aUiToolKit)  // If eSWT is the current toolkit
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pAddLineToL)(const TM2GSvgPathHandle& ,const TReal32& , const TReal32&);
+            pAddLineToL AddLineToL = &MM2GSVGProxy::AddLineToL;
+            MM2GSVGProxy* aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgPathHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TMethodWrapper3<MM2GSVGProxy, const TM2GSvgPathHandle& ,const TReal32& , const TReal32& > AddLineTo(
+                *aProxy,
+                AddLineToL,
+                lPathHandle,
+                *(REINTERPRET_CAST(TReal32*, &aX)),
+                *(REINTERPRET_CAST(TReal32*, &aY)));
+            err = client->Execute(AddLineTo);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoAddLineToL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle,
+                      REINTERPRET_CAST(TReal32*, &aX),
+                      REINTERPRET_CAST(TReal32*, &aY));
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _addLineTo - end");
+}
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_addMoveTo
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::AddMoveToL method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ * @param aX -
+ * @param aY -
+ */
+LOCAL_C void DoAddMoveToL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle,
+    TReal32* aX, TReal32* aY)
+{
+    aProxy->AddMoveToL(STATIC_CAST(TM2GSvgPathHandle, aPathHandle), *aX, *aY);
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT void JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1addMoveTo(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jint aPathHandle,
+    jfloat aX,
+    jfloat aY,
+    jboolean aUiToolkit)
+{
+    M2G_DEBUG_2("M2G_DEBUG: JNI ( M2GSVGPath ) _addMoveTo: X=%f, Y=%f - begin", aX, aY);
+    TInt err           = KM2GNotOk;
+    if (aUiToolkit)
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pAddMoveToL)(
+                const TM2GSvgPathHandle&,
+                const TReal32&,
+                const TReal32&);
+            pAddMoveToL AddMoveToL = &MM2GSVGProxy::AddMoveToL;
+            MM2GSVGProxy *             aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgDocumentHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TMethodWrapper3<MM2GSVGProxy,
+            const TM2GSvgPathHandle&,
+            const TReal32&,
+            const TReal32&
+            > AddMoveTo(
+                *aProxy,
+                AddMoveToL,
+                lPathHandle,
+                aX,
+                aY
+            );
+            err = client->Execute(AddMoveTo);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoAddMoveToL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle,
+                      REINTERPRET_CAST(TReal32*, &aX),
+                      REINTERPRET_CAST(TReal32*, &aY));
+
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _addMoveTo - end");
+}
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_addQuadTo
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::AddQuadToL method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ * @param aX1 -
+ * @param aY1 -
+ * @param aX2 -
+ * @param aY2 -
+ */
+LOCAL_C void DoAddQuadToL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle,
+    TReal32* aX1, TReal32* aY1, TReal32* aX2, TReal32* aY2)
+{
+    aProxy->AddQuadToL(
+        STATIC_CAST(TM2GSvgPathHandle, aPathHandle),
+        *aX1, *aY1, *aX2, *aY2);
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT void JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1addQuadTo(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jint aPathHandle,
+    jfloat aX1, jfloat aY1, jfloat aX2, jfloat aY2,jboolean aUiToolkit)
+{
+    M2G_DEBUG_4("M2G_DEBUG: JNI ( M2GSVGPath ) _addQuadTo: X1=%f, Y1=%f, X2=%f, Y2=%f - begin", aX1, aY1, aX2, aY2);
+    // TInt elementHandle = M2G_INVALID_HANDLE;
+    TInt err           = KM2GNotOk;
+    if (aUiToolkit)
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pAddQuadToL)(
+                const TM2GSvgPathHandle&,
+                const TReal32&,
+                const TReal32&,
+                const TReal32&,
+                const TReal32&);
+            pAddQuadToL AddQuadToL = &MM2GSVGProxy::AddQuadToL;
+            MM2GSVGProxy *             aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgDocumentHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TMethodWrapper5<MM2GSVGProxy,
+            const TM2GSvgPathHandle&,
+            const TReal32&,
+            const TReal32&,
+            const TReal32&,
+            const TReal32&
+            > AddQuadTo(
+                *aProxy,
+                AddQuadToL,
+                lPathHandle,
+                aX1,
+                aY1,
+                aX2,
+                aY2
+            );
+            err = client->Execute(AddQuadTo);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoAddQuadToL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle,
+                      REINTERPRET_CAST(TReal32*, &aX1),
+                      REINTERPRET_CAST(TReal32*, &aY1),
+                      REINTERPRET_CAST(TReal32*, &aX2),
+                      REINTERPRET_CAST(TReal32*, &aY2));
+
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _addQuadTo - end");
+}
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_createPath
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::CreatePathL method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Path handle
+ */
+LOCAL_C void DoCreatePathL(
+    MM2GSVGProxy* aProxy, TInt* aPathHandle)
+{
+    aProxy->CreatePathL(*aPathHandle);
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT jint JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1createPath(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jboolean aUiToolkit)
+{
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _createPath - begin");
+
+    TInt err           = KM2GNotOk;
+    TInt pathHandle = M2G_INVALID_HANDLE;
+    if (aUiToolkit)
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pCreatePathL)(TM2GSvgPathHandle&);
+            pCreatePathL CreatePathL = &MM2GSVGProxy::CreatePathL;
+            MM2GSVGProxy *    aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TMethodWrapper1<MM2GSVGProxy,TM2GSvgPathHandle&> CreatePath(
+                *aProxy,
+                CreatePathL,
+                pathHandle
+            );
+            err = client->Execute(CreatePath);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoCreatePathL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      &pathHandle);
+
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+
+    M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GSVGPath ) _createPath: %d - end", pathHandle);
+    return STATIC_CAST(jint, pathHandle);
+}
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_destroyPath
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::DestroyPathL method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ */
+LOCAL_C void DoDestroyPathL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle)
+{
+    aProxy->DestroyPathL(
+        STATIC_CAST(TM2GSvgPathHandle, aPathHandle));
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT void JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1destroyPath(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jint aPathHandle,
+    jboolean aUiToolkit)
+{
+    M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GSVGPath ) _destroyPath: %d - begin", aPathHandle);
+    TInt err           = KM2GNotOk;
+    if (aUiToolkit)
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pDestroyPathL)(const TM2GSvgPathHandle&);
+            pDestroyPathL DestroyPathL = &MM2GSVGProxy::DestroyPathL;
+            MM2GSVGProxy *             aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgDocumentHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TMethodWrapper1<MM2GSVGProxy,const TM2GSvgPathHandle& > DestroyPath(
+                *aProxy,
+                DestroyPathL,
+                lPathHandle
+            );
+            err = client->Execute(DestroyPath);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoDestroyPathL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle);
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _destroyPath - end");
+}
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_getNumberOfSegments
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::GetNumberOfSegments method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ * @return Number of segments
+ */
+LOCAL_C void DoGetNumberOfSegmentsL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle,
+    TInt* aNumberOfSegments)
+{
+    aProxy->GetNumberOfSegmentsL(
+        STATIC_CAST(TM2GSvgPathHandle, aPathHandle),
+        *aNumberOfSegments);
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT jint JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1getNumberOfSegments(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jint aPathHandle,
+    jboolean aUiToolkit)
+{
+    M2G_DEBUG_0("M2G_DEBUG: JNI ( M2GSVGPath ) _getNumberOfSegments - begin");
+    TInt err              = KM2GNotOk;
+    TInt numberOfSegments = 0;
+    if (aUiToolkit)
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pGetNumberOfSegmentsL)(const TM2GSvgPathHandle&, TInt&);
+            pGetNumberOfSegmentsL GetNumberOfSegmentsL = &MM2GSVGProxy::GetNumberOfSegmentsL;
+            MM2GSVGProxy *             aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgDocumentHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TMethodWrapper2<MM2GSVGProxy,const TM2GSvgPathHandle&, TInt& > GetNumberOfSegments(
+                *aProxy,
+                GetNumberOfSegmentsL,
+                lPathHandle,
+                numberOfSegments
+            );
+            err = client->Execute(GetNumberOfSegments);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoGetNumberOfSegmentsL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle, &numberOfSegments);
+
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+    M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GSVGPath ) _getNumberOfSegments: %d - end", numberOfSegments);
+    return STATIC_CAST(jint, numberOfSegments);
+}
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_getSegmentParameter
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::GetSegmentParameterL method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ * @param aSegmentIndex -
+ * @param aParamIndex -
+ * @param aSegmentParam Segment parameter
+ */
+LOCAL_C void DoGetSegmentParameterL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle, TInt aSegmentIndex, TInt aParamIndex,
+    TReal32* aSegmentParam)
+{
+    aProxy->GetSegmentParameterL(
+        STATIC_CAST(TM2GSvgPathHandle, aPathHandle), aSegmentIndex,
+        aParamIndex, *aSegmentParam);
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT jfloat JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1getSegmentParameter(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    jint aPathHandle, jint aSegmentIndex, jint aParamIndex, jboolean aUiToolkit)
+{
+    M2G_DEBUG_2("M2G_DEBUG: JNI ( M2GSVGPath ) _getSegmentParameter: seg index=%d, param index=%d - begin", aSegmentIndex, aParamIndex);
+    TInt err              = KM2GNotOk;
+    TReal32 segmentParam  = 0;
+    if (aUiToolkit)
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pGetSegmentParameterL)(
+                const TM2GSvgPathHandle&,
+                TInt,
+                TInt,
+                TReal32&);
+            pGetSegmentParameterL GetSegmentParameterL = &MM2GSVGProxy::GetSegmentParameterL;
+            MM2GSVGProxy *             aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgDocumentHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TMethodWrapper4<MM2GSVGProxy,const TM2GSvgPathHandle&, TInt, TInt, TReal32& > GetSegmentParameter
+            (
+                *aProxy,
+                GetSegmentParameterL,
+                lPathHandle,
+                aSegmentIndex,
+                aParamIndex,
+                segmentParam
+            );
+            err = client->Execute(GetSegmentParameter);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoGetSegmentParameterL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle, aSegmentIndex, aParamIndex, &segmentParam);
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+
+    M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GSVGPath ) _getSegmentParameter: %f - end", segmentParam);
+    return STATIC_CAST(jfloat, segmentParam);
+}
+
+
+// -----------------------------------------------------------------------------
+// Java_com_nokia_microedition_m2g_M2GSVGPath::_getSegmentType
+// -----------------------------------------------------------------------------
+/**
+ * Calls MM2GSVGProxy::GetSegmentTypeL method.
+ * @since Series S60 3.0
+ * @param aProxy Proxy instance.
+ * @param aPathHandle Svg path handle
+ * @param aSegmentIndex -
+ * @param aSegmentType Segment type to be returned
+ */
+LOCAL_C void DoGetSegmentTypeL(
+    MM2GSVGProxy* aProxy,
+    TInt aPathHandle, TInt aSegmentIndex, TInt16* aSegmentType)
+{
+    return aProxy->GetSegmentTypeL(
+               STATIC_CAST(TM2GSvgPathHandle, aPathHandle), aSegmentIndex,
+               *aSegmentType);
+}
+
+/**
+ * JNI method
+ */
+JNIEXPORT jshort JNICALL
+Java_com_nokia_microedition_m2g_M2GSVGPath__1getSegmentType(
+    JNIEnv* aJni,
+    jclass,
+    jint aEventSourceHandle,
+    jint aSvgProxyHandle,
+    TInt aPathHandle,
+    jint aIndex,
+    jboolean aUiToolkit)
+{
+    M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GSVGPath ) _getSegmentType: index=%d - begin", aIndex);
+    TInt err              = KM2GNotOk;
+    TInt16 aSegmentType  = 0;
+    if (aUiToolkit)
+    {
+        MSwtClient* client = reinterpret_cast< MSwtClient* >(aEventSourceHandle);
+        if (client && aSvgProxyHandle)
+        {
+            typedef void (MM2GSVGProxy::*pGetSegmentTypeL)(
+                const TM2GSvgPathHandle&,
+                TInt,
+                TInt16&);
+            pGetSegmentTypeL GetSegmentTypeL = &MM2GSVGProxy::GetSegmentTypeL;
+            MM2GSVGProxy *             aProxy = JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle);
+            TM2GSvgDocumentHandle lPathHandle = STATIC_CAST(TM2GSvgPathHandle, aPathHandle);
+            TMethodWrapper3<MM2GSVGProxy,const TM2GSvgPathHandle&, TInt, TInt16& > GetSegmentType
+            (
+                *aProxy,
+                GetSegmentTypeL,
+                lPathHandle,
+                aIndex,
+                aSegmentType
+            );
+            err = client->Execute(GetSegmentType);
+        }
+    }
+    else
+    {
+        CM2GEventSource* eventSource = JavaUnhand< CM2GEventSource >(aEventSourceHandle);
+
+        if (eventSource && aSvgProxyHandle)
+        {
+            err = eventSource->ExecuteTrap(
+                      &DoGetSegmentTypeL,
+                      JavaUnhand< MM2GSVGProxy >(aSvgProxyHandle),
+                      aPathHandle, aIndex, &aSegmentType);
+
+        }
+    }
+    M2GGeneral::CheckErrorCode(aJni, err);
+    M2G_DEBUG_1("M2G_DEBUG: JNI ( M2GSVGPath ) _getSegmentType: %d - end", aSegmentType);
+    return STATIC_CAST(jshort, aSegmentType);
+}
+
+M2G_NS_END