From 07f13c0b3f9545aa86f72e111c1f880bc07b6e58 Mon Sep 17 00:00:00 2001 From: Michal Horn Date: Fri, 13 Feb 2015 17:01:54 +0100 Subject: [PATCH] Fix bug with loading pdf preview The library needs to explicitly call the countPages() function to obtain and remember the number of pages, which is used in subsequently called updatePage() and drawPage() functions. --- .../cvut/fel/dce/qrscanner/PreviewActivity.java | 16 ++++++++++++---- .../cvut/fel/dce/qrscanner/PreviewActivity.java | 15 +++++++++++---- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java index 962a8a0..dfd00c7 100644 --- a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java +++ b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java @@ -3,6 +3,7 @@ package cz.cvut.fel.dce.qrscanner; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; +import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.util.Log; @@ -40,6 +41,10 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob super.onCreate(savedInstanceState); setContentView(R.layout.activity_preview); mPreviewImg = (ImageView) findViewById(R.id.imgComponent); + mPreviewImg.setMaxWidth(640); + mPreviewImg.setMaxHeight(360); + mPreviewImg.setScaleType(ImageView.ScaleType.CENTER_INSIDE); + if (mPreviewImg != null) { mPreviewImgObserver = mPreviewImg.getViewTreeObserver(); Log.i(TAG, "Registering mPreviewImgObserver OnGlobalLayoutListener."); @@ -92,13 +97,16 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob Log.i(TAG, "Path to component files: " + picturePath); MuPDFCore core = new MuPDFCore(getApplicationContext(), picturePath); + Log.d(TAG, "numpages: "+ core.countPages()); MuPDFCore.Cookie cookie = core.new Cookie(); - int previewW = mPreviewImg.getWidth(); - int previewH = mPreviewImg.getHeight(); + int pageW = (int)core.getPageSize(0).x; + int pageH = (int)core.getPageSize(0).y; + Log.d(TAG, "page size: " + pageW + ", " + pageH); Bitmap.Config conf = Bitmap.Config.ARGB_8888; - Bitmap previewBitmap = Bitmap.createBitmap(previewW, previewH, conf); - core.updatePage(previewBitmap, 0, previewW, previewH, 0, 0, previewW, previewH, cookie); + Bitmap previewBitmap = Bitmap.createBitmap(pageW, pageH, conf); + core.drawPage(previewBitmap, 0, pageW, pageH,0 , 0, pageW, pageH, cookie); mPreviewImg.setImageBitmap(previewBitmap); + mPreviewImg.invalidate(); } catch (Exception e) { Toast toast = Toast.makeText(getApplicationContext(), "Component preview could not be loaded.", Toast.LENGTH_LONG); toast.show(); diff --git a/QRScanner/mobile/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java b/QRScanner/mobile/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java index ff5cfe7..2ea62c4 100644 --- a/QRScanner/mobile/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java +++ b/QRScanner/mobile/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java @@ -38,6 +38,8 @@ public class PreviewActivity extends ActionBarActivity implements ViewTreeObserv super.onCreate(savedInstanceState); setContentView(R.layout.activity_preview); mPreviewImg = (ImageView) findViewById(R.id.imgComponent); + mPreviewImg.setScaleType(ImageView.ScaleType.CENTER_INSIDE); + if (mPreviewImg != null) { mPreviewImgObserver = mPreviewImg.getViewTreeObserver(); Log.i(TAG, "Registering mPreviewImgObserver OnGlobalLayoutListener."); @@ -89,13 +91,18 @@ public class PreviewActivity extends ActionBarActivity implements ViewTreeObserv Log.i(TAG, "Path to component files: " + picturePath); MuPDFCore core = new MuPDFCore(getApplicationContext(), picturePath); + Log.d(TAG, "numpages: "+ core.countPages()); MuPDFCore.Cookie cookie = core.new Cookie(); - int previewW = mPreviewImg.getWidth(); - int previewH = mPreviewImg.getHeight(); + int pageW = (int)core.getPageSize(0).x; + int pageH = (int)core.getPageSize(0).y; + Log.d(TAG, "page size: " + pageW + ", " + pageH); Bitmap.Config conf = Bitmap.Config.ARGB_8888; - Bitmap previewBitmap = Bitmap.createBitmap(previewW, previewH, conf); - core.updatePage(previewBitmap, 0, previewW, previewH, 0, 0, previewW, previewH, cookie); + Bitmap previewBitmap = Bitmap.createBitmap(pageW, pageH, conf); + core.drawPage(previewBitmap, 0, pageW, pageH,0 , 0, pageW, pageH, cookie); + mPreviewImg.setMaxWidth(mPreviewImg.getWidth()); + mPreviewImg.setMaxHeight(mPreviewImg.getHeight()); mPreviewImg.setImageBitmap(previewBitmap); + mPreviewImg.invalidate(); } catch (Exception e) { Toast toast = Toast.makeText(getApplicationContext(), "Component preview could not be loaded.", Toast.LENGTH_LONG); toast.show(); -- 2.39.2