Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- JNIEXPORT void JNICALL
- JNI_FN(MuPDFCore_saveImageInternal)(JNIEnv * env, jobject thiz, jobject bitmap, jint imgW, jint imgH, jint posX, jint posY)
- {
- AndroidBitmapInfo info;
- void *pixels;
- int ret;
- fz_irect bbox;
- fz_rect rect;
- fz_pixmap *pix = NULL;
- fz_image *img = NULL;
- fz_point *pos = NULL;
- fz_matrix *mtrx;
- image_struct *img_s = NULL;
- globals *glo = get_globals(env, thiz);
- fz_context *ctx = glo->ctx;
- pdf_document *doc = glo->doc;
- pdf_page *page = &glo->pages[glo->current];
- fz_var(pix);
- fz_var(img);
- fz_var(pos);
- LOGI("In native method\n");
- if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
- LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);
- return 0;
- }
- LOGI("Checking format\n");
- if (info.format != ANDROID_BITMAP_FORMAT_RGBA_8888) {
- LOGE("Bitmap format is not RGBA_8888 !");
- return 0;
- }
- LOGI("locking pixels\n");
- if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
- LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
- return 0;
- }
- LOGI("pixels locked\n");
- bbox.x0 = 0;
- bbox.y0 = 0;
- bbox.x1 = imgW;
- bbox.y1 = imgH;
- LOGI("Bbox created\n");
- pix = fz_new_pixmap_with_bbox_and_data(ctx, glo->colorspace, &bbox, pixels);
- LOGI("Pixmap created\n");
- img = fz_new_image_from_pixmap(ctx, pix, NULL);
- LOGI("1 - Image created\n");
- LOGI("Creating Pos\n");
- pos->x = (float)posX;
- pos->y = (float)posY;
- LOGI("Pos created\n");
- fz_matrix ctm = fz_identity;
- LOGI("Ctm created\n");
- float zoom = glo->resolution / 72;
- zoom = 1.0 / zoom;
- fz_scale(&ctm, zoom, zoom);
- LOGI("Scaled\n");
- fz_transform_point(pos, &ctm);
- LOGI("Transformed\n");
- img_s->image = img;
- img_s->pos = pos;
- LOGI("Set matrix\n");
- mtrx->a = (float)imgW;
- mtrx->d = (float)imgH;
- mtrx->e = pos->x;
- mtrx->f = pos->y;
- LOGI("matrix created\n");
- img_s->matrix = mtrx;
- img_s->doc = doc;
- LOGI("Img_s created\n");
- LOGI("2 - Going to clean page a\n");
- pdf_clean_page_contents(doc, page, NULL, my_process_fn, &img_s);
- LOGI("6 - Image insert\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement