magick_PixelPacket.c
上传用户:qingzhou
上传日期:2013-04-21
资源大小:733k
文件大小:2k
源码类别:

破解

开发平台:

Java

  1. #include <jni.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <time.h>
  6. #include <sys/types.h>
  7. #include <magick/api.h>
  8. #include "jmagick.h"
  9. #include "magick_PixelPacket.h"
  10. /*
  11.  * Class:     magick_PixelPacket
  12.  * Method:    queryColorDatabase
  13.  * Signature: (Ljava/lang/String;)Lmagick/PixelPacket;
  14.  */
  15. JNIEXPORT jobject JNICALL Java_magick_PixelPacket_queryColorDatabase
  16.     (JNIEnv *env, jclass class, jstring target)
  17. {
  18.     PixelPacket iPixelPacket;
  19.     const char *cstr;
  20.     unsigned int result;
  21.     jmethodID consMethodID;
  22.     jobject jPixelPacket;
  23.     ExceptionInfo exception;
  24.     cstr = (*env)->GetStringUTFChars(env, target, 0);
  25.     GetExceptionInfo(&exception);
  26.     result = QueryColorDatabase(cstr, &iPixelPacket, &exception);
  27.     (*env)->ReleaseStringUTFChars(env, target, cstr);
  28.     if (!result) {
  29. throwMagickApiException(env, "Unable to locate color", &exception);
  30.         DestroyExceptionInfo(&exception);
  31. return NULL;
  32.     }
  33.     consMethodID = (*env)->GetMethodID(env, class, "<init>", "(IIII)V");
  34.     if (consMethodID == 0) {
  35. throwMagickException(env, "Unable to construct magick.PixelPacket");
  36. return NULL;
  37.     }
  38. #ifdef DIAGNOSTIC
  39.     fprintf(stderr, "Query colour %d, %d, %d, %dn",
  40.             iPixelPacket.red,
  41.             iPixelPacket.green,
  42.             iPixelPacket.blue,
  43.             iPixelPacket.opacity);
  44. #endif
  45.     jPixelPacket = (*env)->NewObject(env, class, consMethodID,
  46.      (jint) iPixelPacket.red,
  47.      (jint) iPixelPacket.green,
  48.      (jint) iPixelPacket.blue,
  49.      (jint) iPixelPacket.opacity);
  50.     if (jPixelPacket == NULL) {
  51. throwMagickException(env, "Unable to construct magick.PixelPacket");
  52. return NULL;
  53.     }
  54.     return jPixelPacket;
  55. }