📄 gnu_java_awt_peer_gtk_gdkgraphics.c
字号:
gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_fillRect (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height){ struct graphics *g = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_draw_rectangle (g->drawable, g->gc, TRUE, x + g->x_offset, y + g->y_offset, width, height); gdk_flush (); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_drawRect (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height){ struct graphics *g = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_draw_rectangle (g->drawable, g->gc, FALSE, x + g->x_offset, y + g->y_offset, width, height); gdk_flush (); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_copyArea (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height, jint dx, jint dy){ struct graphics *g = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_draw_drawable ((GdkWindow *)g->drawable, g->gc, (GdkWindow *)g->drawable, x + g->x_offset, y + g->y_offset, x + g->x_offset + dx, y + g->y_offset + dy, width, height); gdk_flush (); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_clearRect (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height){ struct graphics *g = NULL; GdkGCValues saved; GtkWidget *widget = NULL; union widget_union w; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); if (!g) { gdk_threads_leave (); return; } if (GDK_IS_WINDOW (g->drawable)) { w.widget = &widget; gdk_window_get_user_data (GDK_WINDOW (g->drawable), w.void_widget); if (widget == NULL || !GTK_IS_EVENT_BOX (widget)) gdk_window_clear_area ((GdkWindow *) g->drawable, x + g->x_offset, y + g->y_offset, width, height); } else { gdk_gc_get_values (g->gc, &saved); gdk_gc_set_foreground (g->gc, &(saved.background)); gdk_draw_rectangle (g->drawable, g->gc, TRUE, x + g->x_offset, y + g->y_offset, width, height); gdk_gc_set_foreground (g->gc, &(saved.foreground)); } gdk_flush (); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_setFunction (JNIEnv *env, jobject obj, jint func){ struct graphics *g = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_gc_set_function (g->gc, func); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_setFGColor (JNIEnv *env, jobject obj, jint red, jint green, jint blue){ GdkColor color; struct graphics *g = NULL; gdk_threads_enter (); color.red = red << 8; color.green = green << 8; color.blue = blue << 8; g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_colormap_alloc_color (g->cm, &color, TRUE, TRUE); gdk_gc_set_foreground (g->gc, &color); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_drawArc (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height, jint angle1, jint angle2){ struct graphics *g = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_draw_arc (g->drawable, g->gc, FALSE, x + g->x_offset, y + g->y_offset, width, height, angle1 << 6, angle2 << 6); gdk_flush (); gdk_threads_leave ();} static GdkPoint *translate_points (JNIEnv *env, jintArray xpoints, jintArray ypoints, jint npoints, jint x_offset, jint y_offset){ GdkPoint *points; jint *x, *y; int i; /* allocate one more point than necessary, in case we need to tack on an extra due to the semantics of Java polygons. */ points = g_malloc (sizeof (GdkPoint) * (npoints + 1)); x = (*env)->GetIntArrayElements (env, xpoints, NULL); y = (*env)->GetIntArrayElements (env, ypoints, NULL); for (i = 0; i < npoints; i++) { points[i].x = x[i] + x_offset; points[i].y = y[i] + y_offset; } (*env)->ReleaseIntArrayElements (env, xpoints, x, JNI_ABORT); (*env)->ReleaseIntArrayElements (env, ypoints, y, JNI_ABORT); return points;}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_drawPolyline (JNIEnv *env, jobject obj, jintArray xpoints, jintArray ypoints, jint npoints){ struct graphics *g = NULL; GdkPoint *points = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); points = translate_points (env, xpoints, ypoints, npoints, g->x_offset, g->y_offset); gdk_draw_lines (g->drawable, g->gc, points, npoints); gdk_flush (); g_free (points); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_drawPolygon (JNIEnv *env, jobject obj, jintArray xpoints, jintArray ypoints, jint npoints){ struct graphics *g = NULL; GdkPoint *points = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); points = translate_points (env, xpoints, ypoints, npoints, g->x_offset, g->y_offset); /* make sure the polygon is closed, per Java semantics. if it's not, we close it. */ if (points[0].x != points[npoints-1].x || points[0].y != points[npoints-1].y) points[npoints++] = points[0]; gdk_draw_lines (g->drawable, g->gc, points, npoints); gdk_flush (); g_free (points); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_fillPolygon (JNIEnv *env, jobject obj, jintArray xpoints, jintArray ypoints, jint npoints){ struct graphics *g = NULL; GdkPoint *points = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); points = translate_points (env, xpoints, ypoints, npoints, g->x_offset, g->y_offset); gdk_draw_polygon (g->drawable, g->gc, TRUE, points, npoints); gdk_flush (); g_free (points); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_fillArc (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height, jint angle1, jint angle2){ struct graphics *g = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_draw_arc (g->drawable, g->gc, TRUE, x + g->x_offset, y + g->y_offset, width, height, angle1 << 6, angle2 << 6); gdk_flush (); gdk_threads_leave ();} JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_drawOval (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height){ struct graphics *g = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_draw_arc (g->drawable, g->gc, FALSE, x + g->x_offset, y + g->y_offset, width, height, 0, 23040); gdk_flush (); gdk_threads_leave ();} JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_fillOval (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height){ struct graphics *g = NULL; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); gdk_draw_arc (g->drawable, g->gc, TRUE, x + g->x_offset, y + g->y_offset, width, height, 0, 23040); gdk_flush (); gdk_threads_leave ();}JNIEXPORT void JNICALLJava_gnu_java_awt_peer_gtk_GdkGraphics_setClipRectangle (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height){ struct graphics *g = NULL; GdkRectangle rectangle; gdk_threads_enter (); g = (struct graphics *) NSA_GET_G_PTR (env, obj); rectangle.x = x + g->x_offset; rectangle.y = y + g->y_offset; rectangle.width = width; rectangle.height = height; gdk_gc_set_clip_rectangle (g->gc, &rectangle); gdk_threads_leave ();}static voidrealize_cb (GtkWidget *widget __attribute__ ((unused)), jobject jgraphics){ (*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(), jgraphics, initComponentGraphicsUnlockedID); NSA_DEL_GLOBAL_G_REF (cp_gtk_gdk_env(), jgraphics);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -