diff options
Diffstat (limited to 'gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/jawt/DemoJAWT.c')
-rw-r--r-- | gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/jawt/DemoJAWT.c | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/jawt/DemoJAWT.c b/gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/jawt/DemoJAWT.c new file mode 100644 index 000000000..ee2d7bfec --- /dev/null +++ b/gcc-4.4.3/libjava/classpath/examples/gnu/classpath/examples/jawt/DemoJAWT.c @@ -0,0 +1,150 @@ +/* DemoJAWT.c -- native portion of AWT Native Interface demo + Copyright (C) 2005 Free Software Foundation, Inc. + +This file is part of GNU Classpath examples. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. */ + +#include "DemoJAWT.h" +#include "jawt_md.h" +#include <string.h> + +JNIEXPORT void JNICALL +Java_gnu_classpath_examples_jawt_DemoJAWT_paintIt (JNIEnv* env, + jobject canvas, + jobject graphics, + jboolean on) +{ + JAWT awt; + JAWT_DrawingSurface* surface; + JAWT_DrawingSurfaceInfo* surface_info; + JAWT_X11DrawingSurfaceInfo* surface_info_x11; + jint lock; + GC gc; + int c; + char* test_string = "JAWT"; + XColor orange; + XColor yellow; + XColor blue; + Display* display; + Drawable drawable; + Status status; + + awt.version = JAWT_VERSION_1_3; + if (JAWT_GetAWT (env, &awt) == JNI_FALSE) + { + printf ("couldn't find AWT\n"); + return; + } + + surface = awt.GetDrawingSurface (env, canvas); + if (surface == NULL) + { + printf ("drawing surface is NULL\n"); + return; + } + + lock = surface->Lock (surface); + if ((lock & JAWT_LOCK_ERROR) != 0) + { + printf ("couldn't lock drawing surface\n"); + awt.FreeDrawingSurface (surface); + return; + } + + surface_info = surface->GetDrawingSurfaceInfo (surface); + if (surface_info == NULL) + { + printf ("couldn't get surface information\n"); + surface->Unlock (surface); + awt.FreeDrawingSurface (surface); + return; + } + + surface_info_x11 = (JAWT_X11DrawingSurfaceInfo*) surface_info->platformInfo; + + display = surface_info_x11->display; + drawable = surface_info_x11->drawable; + + gc = XCreateGC (display, drawable, 0, 0); + XSetBackground (display, gc, 0); + + orange.red = 254 * 65535 / 255; + orange.green = 90 * 65535 / 255; + orange.blue = 16 * 65535 / 255; + + /* assume color lookups succeed */ + status = XAllocColor (display, DefaultColormap (display, + DefaultScreen (display)), + &orange); + + if (!status) + { + printf ("color allocation failed\n"); + goto cleanup; + } + + yellow.red = 255 * 65535 / 255; + yellow.green = 255 * 65535 / 255; + yellow.blue = 0 * 65535 / 255; + + XAllocColor (display, DefaultColormap (display, + DefaultScreen (display)), + &yellow); + + if (!status) + { + printf ("color allocation failed\n"); + goto cleanup; + } + + blue.red = 16 * 65535 / 255; + blue.green = 30 * 65535 / 255; + blue.blue = 137 * 65535 / 255; + + XAllocColor (display, DefaultColormap (display, + DefaultScreen (display)), + &blue); + + if (!status) + { + printf ("color allocation failed\n"); + goto cleanup; + } + + for (c = 5; c >= 0; c--) + { + if (c % 2 == on) + XSetForeground (display, gc, yellow.pixel); + else + XSetForeground (display, gc, orange.pixel); + + XFillArc (display, drawable, gc, 140 - c * 15, 140 - c * 15, c * 30, c * 30, 0, 360 * 64); + } + + XSetForeground (display, gc, blue.pixel); + XDrawString (display, drawable, + gc, 129, 145, test_string, strlen (test_string)); + + cleanup: + XFreeGC (display, gc); + + surface->FreeDrawingSurfaceInfo (surface_info); + + surface->Unlock (surface); + + awt.FreeDrawingSurface (surface); +} |