/******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ #include "swt.h" #include "gdip_structs.h" #include "gdip_stats.h" extern "C" { #define Gdip_NATIVE(func) Java_org_eclipse_swt_internal_gdip_Gdip_##func #ifndef NO_Graphics_1DrawLines JNIEXPORT jint JNICALL Gdip_NATIVE(Graphics_1DrawLines) (JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3) { Point *points = NULL; jint *lparg2=NULL; jint rc = 0; Gdip_NATIVE_ENTER(env, that, Graphics_1DrawLines_FUNC); if (arg2) if ((lparg2 = env->GetIntArrayElements(arg2, NULL)) == NULL) goto fail; if (lparg2) { points = new Point[arg3]; for (int i=0, j=0; iDrawLines((Pen *)arg1, points, (INT)arg3); fail: if (lparg2 && points) delete points; if (arg2 && lparg2) env->ReleaseIntArrayElements(arg2, lparg2, JNI_ABORT); Gdip_NATIVE_EXIT(env, that, Graphics_1DrawLines_FUNC); return rc; } #endif #ifndef NO_Graphics_1DrawPolygon JNIEXPORT jint JNICALL Gdip_NATIVE(Graphics_1DrawPolygon) (JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3) { Point *points = NULL; jint *lparg2=NULL; jint rc = 0; Gdip_NATIVE_ENTER(env, that, Graphics_1DrawPolygon_FUNC); if (arg2) if ((lparg2 = env->GetIntArrayElements(arg2, NULL)) == NULL) goto fail; if (lparg2) { points = new Point[arg3]; for (int i=0, j=0; iDrawPolygon((Pen *)arg1, points, (INT)arg3); fail: if (lparg2 && points) delete points; if (arg2 && lparg2) env->ReleaseIntArrayElements(arg2, lparg2, JNI_ABORT); Gdip_NATIVE_EXIT(env, that, Graphics_1DrawPolygon_FUNC); return rc; } #endif #ifndef NO_Graphics_1FillPolygon JNIEXPORT jint JNICALL Gdip_NATIVE(Graphics_1FillPolygon) (JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3, jint arg4) { Point *points = NULL; jint *lparg2=NULL; jint rc = 0; Gdip_NATIVE_ENTER(env, that, Graphics_1FillPolygon_FUNC); if (arg2) if ((lparg2 = env->GetIntArrayElements(arg2, NULL)) == NULL) goto fail; if (lparg2) { points = new Point[arg3]; for (int i=0, j=0; iFillPolygon((Brush *)arg1, points, (INT)arg3, (FillMode)arg4); fail: if (lparg2 && points) delete points; if (arg2 && lparg2) env->ReleaseIntArrayElements(arg2, lparg2, JNI_ABORT); Gdip_NATIVE_EXIT(env, that, Graphics_1FillPolygon_FUNC); return rc; } #endif #ifndef NO_GraphicsPath_1GetPathPoints JNIEXPORT jint JNICALL Gdip_NATIVE(GraphicsPath_1GetPathPoints) (JNIEnv *env, jclass that, jint arg0, jfloatArray arg1, jint arg2) { PointF *points = NULL; jfloat *lparg1=NULL; jint rc = 0; Gdip_NATIVE_ENTER(env, that, GraphicsPath_1GetPathPoints_FUNC); if (arg1) if ((lparg1 = env->GetFloatArrayElements(arg1, NULL)) == NULL) goto fail; if (lparg1) { points = new PointF[arg2]; } rc = (jint)((GraphicsPath *)arg0)->GetPathPoints(points, arg2); fail: if (lparg1 && points) { for (int i=0, j=0; iReleaseFloatArrayElements(arg1, lparg1, 0); Gdip_NATIVE_EXIT(env, that, GraphicsPath_1GetPathPoints_FUNC); return rc; } #endif #ifndef NO_Matrix_1TransformPoints__I_3FI JNIEXPORT jint JNICALL Gdip_NATIVE(Matrix_1TransformPoints__I_3FI) (JNIEnv *env, jclass that, jint arg0, jfloatArray arg1, jint arg2) { PointF *points = NULL; jfloat *lparg1=NULL; jint rc = 0; Gdip_NATIVE_ENTER(env, that, Matrix_1TransformPoints__I_3FI_FUNC); if (arg1) if ((lparg1 = env->GetFloatArrayElements(arg1, NULL)) == NULL) goto fail; if (lparg1) { points = new PointF[arg2]; for (int i=0, j=0; iTransformPoints(points, arg2); fail: if (lparg1 && points) { for (int i=0, j=0; iReleaseFloatArrayElements(arg1, lparg1, 0); Gdip_NATIVE_EXIT(env, that, Matrix_1TransformPoints__I_3FI_FUNC); return rc; } #endif #ifndef NO_LinearGradientBrush_1SetInterpolationColors JNIEXPORT jint JNICALL Gdip_NATIVE(LinearGradientBrush_1SetInterpolationColors) (JNIEnv *env, jclass that, jint arg0, jintArray arg1, jfloatArray arg2, jint arg3) { Color *colors; jint *lparg1=NULL; jfloat *lparg2=NULL; jint rc = 0; Gdip_NATIVE_ENTER(env, that, LinearGradientBrush_1SetInterpolationColors_FUNC); if (arg1) if ((lparg1 = env->GetIntArrayElements(arg1, NULL)) == NULL) goto fail; if (arg2) if ((lparg2 = env->GetFloatArrayElements(arg2, NULL)) == NULL) goto fail; if (lparg1) { colors = new Color[arg3]; for (int i=0; iSetInterpolationColors(colors, (const REAL *)lparg2, arg3); fail: if (lparg1 && colors) { delete colors; } if (arg2 && lparg2) env->ReleaseFloatArrayElements(arg2, lparg2, 0); if (arg1 && lparg1) env->ReleaseIntArrayElements(arg1, lparg1, 0); Gdip_NATIVE_EXIT(env, that, LinearGradientBrush_1SetInterpolationColors_FUNC); return rc; } #endif #ifndef NO_PathGradientBrush_1SetSurroundColors JNIEXPORT jint JNICALL Gdip_NATIVE(PathGradientBrush_1SetSurroundColors) (JNIEnv *env, jclass that, jint arg0, jintArray arg1, jintArray arg2) { Color *colors; jint *lparg1=NULL; jint *lparg2=NULL; jint rc = 0; Gdip_NATIVE_ENTER(env, that, PathGradientBrush_1SetSurroundColors_FUNC); if (arg1) if ((lparg1 = env->GetIntArrayElements(arg1, NULL)) == NULL) goto fail; if (arg2) if ((lparg2 = env->GetIntArrayElements(arg2, NULL)) == NULL) goto fail; if (lparg1 && lparg2) { colors = new Color[lparg2[0]]; for (int i=0; iSetSurroundColors((Color *)colors, (INT *)lparg2); fail: if (lparg1 && lparg2 && colors) { delete colors; } if (arg2 && lparg2) env->ReleaseIntArrayElements(arg2, lparg2, 0); if (arg1 && lparg1) env->ReleaseIntArrayElements(arg1, lparg1, 0); Gdip_NATIVE_EXIT(env, that, PathGradientBrush_1SetSurroundColors_FUNC); return rc; } #endif }