OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [examples/] [gnu/] [classpath/] [examples/] [jawt/] [DemoJAWT.c] - Rev 781

Compare with Previous | Blame | View Log

/* 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);
}
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.