Advertisement
Guest User

Untitled

a guest
Jun 13th, 2014
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.01 KB | None | 0 0
  1. JNIEXPORT void JNICALL
  2. JNI_FN(MuPDFCore_saveImageInternal)(JNIEnv * env, jobject thiz, jobject bitmap, jint imgW, jint imgH, jint posX, jint posY)
  3. {
  4.  
  5.     AndroidBitmapInfo info;
  6.     void *pixels;
  7.     int ret;
  8.     fz_irect bbox;
  9.     fz_rect rect;
  10.     fz_pixmap *pix = NULL;
  11.     fz_image *img = NULL;
  12.     fz_point pos;
  13.     fz_matrix mtrx;
  14.  
  15.     image_struct img_s;
  16.  
  17.     globals *glo = get_globals(env, thiz);
  18.     fz_context *ctx = glo->ctx;
  19.     pdf_document *doc = glo->doc;
  20.     pdf_page *page = &glo->pages[glo->current];
  21.  
  22.  
  23.     fz_var(pix);
  24.     fz_var(img);
  25.     fz_var(pos);
  26.  
  27.     LOGI("In native method\n");
  28.     if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
  29.         LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);
  30.         return 0;
  31.     }
  32.  
  33.     LOGI("Checking format\n");
  34.     if (info.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {
  35.         LOGE("Bitmap format is not RGBA_8888 !");
  36.         return 0;
  37.     }
  38.  
  39.     LOGI("locking pixels\n");
  40.     if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
  41.         LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
  42.         return 0;
  43.     }
  44.     LOGI("pixels locked\n");
  45.  
  46.     bbox.x0 = 0;
  47.     bbox.y0 = 0;
  48.     bbox.x1 = imgW;
  49.     bbox.y1 = imgH;
  50.     LOGI("Bbox created\n");
  51.     pix = fz_new_pixmap_with_bbox_and_data(ctx, glo->colorspace, &bbox, pixels);
  52.     LOGI("Pixmap created\n");
  53.     img = fz_new_image_from_pixmap(ctx, pix, NULL);
  54.     LOGI("1 - Image created\n");
  55.  
  56.     LOGI("Creating Pos\n");
  57.     pos.x = (float)posX;
  58.     pos.y = (float)posY;
  59.     LOGI("Pos created\n");
  60.  
  61.     fz_matrix ctm = fz_identity;
  62.     LOGI("Ctm created\n");
  63.     float zoom = glo->resolution / 72;
  64.     zoom = 1.0 / zoom;
  65.     fz_scale(&ctm, zoom, zoom);
  66.     LOGI("Scaled\n");
  67.     fz_transform_point(&pos, &ctm);
  68.     LOGI("Transformed\n");
  69.     img_s.image = img;
  70.     img_s.pos = &pos;
  71.     LOGI("Set matrix\n");
  72.     mtrx.a = (float)imgW;
  73.     mtrx.d = (float)imgH;
  74.     mtrx.e = pos.x;
  75.     mtrx.f = pos.y;
  76.     LOGI("matrix created\n");
  77.     img_s.matrix = &mtrx;
  78.     img_s.doc = doc;
  79.     LOGI("Img_s created\n");
  80.  
  81.     LOGI("2 - Going to clean page\n");
  82.     pdf_clean_page_contents(doc, page, NULL, my_process_fn, &img_s);
  83.     LOGI("6 - Image insert\n");
  84.  
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement