diff --git a/.gradle/2.8/taskArtifacts/cache.properties.lock b/.gradle/2.8/taskArtifacts/cache.properties.lock index 2d994b2..2992c36 100644 Binary files a/.gradle/2.8/taskArtifacts/cache.properties.lock and b/.gradle/2.8/taskArtifacts/cache.properties.lock differ diff --git a/.gradle/2.8/taskArtifacts/fileHashes.bin b/.gradle/2.8/taskArtifacts/fileHashes.bin index 6e7fec9..341ed11 100644 Binary files a/.gradle/2.8/taskArtifacts/fileHashes.bin and b/.gradle/2.8/taskArtifacts/fileHashes.bin differ diff --git a/.gradle/2.8/taskArtifacts/fileSnapshots.bin b/.gradle/2.8/taskArtifacts/fileSnapshots.bin index c53f92b..06f3248 100644 Binary files a/.gradle/2.8/taskArtifacts/fileSnapshots.bin and b/.gradle/2.8/taskArtifacts/fileSnapshots.bin differ diff --git a/.gradle/2.8/taskArtifacts/taskArtifacts.bin b/.gradle/2.8/taskArtifacts/taskArtifacts.bin index 0f1f24a..1793ece 100644 Binary files a/.gradle/2.8/taskArtifacts/taskArtifacts.bin and b/.gradle/2.8/taskArtifacts/taskArtifacts.bin differ diff --git a/.idea/workspace.xml b/.idea/workspace.xml index bd61ed1..c0fe31a 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -33,98 +33,42 @@ - + - - - - - - - - - - - - + + - + - - + + - - - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + @@ -2263,6 +2207,8 @@ @@ -2299,38 +2245,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -2353,6 +2267,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2647,72 +2843,81 @@ + + + + + + + + + - - + + - - + + - + - - - - - - - - - - - + + + + + + + + + + - - - + + + - + + - - + + - - + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -2727,10 +2932,48 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2751,7 +2994,6 @@ - @@ -2759,7 +3001,6 @@ - @@ -2767,7 +3008,6 @@ - @@ -2775,7 +3015,131 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2783,7 +3147,6 @@ - @@ -2791,7 +3154,6 @@ - @@ -2799,7 +3161,6 @@ - @@ -2807,7 +3168,6 @@ - @@ -2836,7 +3196,6 @@ - @@ -2879,7 +3238,6 @@ - @@ -2890,13 +3248,6 @@ - - - - - - - @@ -2904,26 +3255,10 @@ - - - - - - - - - - - - - - - - @@ -2931,7 +3266,6 @@ - @@ -2939,7 +3273,6 @@ - @@ -2947,7 +3280,131 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2955,7 +3412,6 @@ - @@ -2963,7 +3419,6 @@ - @@ -2971,7 +3426,6 @@ - @@ -2979,17 +3433,70 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PdfView/build/intermediates/bundles/release/classes.jar b/PdfView/build/intermediates/bundles/release/classes.jar index e65b939..77a465b 100644 Binary files a/PdfView/build/intermediates/bundles/release/classes.jar and b/PdfView/build/intermediates/bundles/release/classes.jar differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$1.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$1.class index 94d9262..3fda628 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$1.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$1.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$2.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$2.class index d71bfc4..8beb7c9 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$2.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$2.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$3.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$3.class index f6b1ebd..9b7098e 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$3.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$3.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$4.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$4.class index 68bfbfb..464b10e 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$4.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$4.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$5.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$5.class index 87185d2..7b982d8 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$5.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$5.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$6.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$6.class index d63d769..cf6a6cb 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$6.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$6.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$7.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$7.class index f833c31..e2687dc 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$7.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$7.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$1.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$1.class index a8b565d..1ab391e 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$1.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$1.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$2.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$2.class index 5cf4474..2d1ebb4 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$2.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$2.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$3.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$3.class index 023d610..651b499 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$3.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$3.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$4.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$4.class index 8dea2e4..9da7003 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$4.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$4.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$5.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$5.class index de20e71..b9d71cc 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$5.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$5.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$6.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$6.class index fbb2a75..2a12633 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$6.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$6.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$7.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$7.class index cae1b43..ecd2876 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$7.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView$7.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView.class index f6ef115..0db6e24 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity$GraphView.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity.class index ee0d1e7..9276321 100644 Binary files a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity.class and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/PdfViewerActivity.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$1.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$1.class new file mode 100644 index 0000000..ce3adbe Binary files /dev/null and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$1.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$2.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$2.class new file mode 100644 index 0000000..0f50aa0 Binary files /dev/null and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$2.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$3.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$3.class new file mode 100644 index 0000000..6e2be93 Binary files /dev/null and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView$3.class differ diff --git a/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView.class b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView.class new file mode 100644 index 0000000..11a334a Binary files /dev/null and b/PdfView/build/intermediates/classes/release/net/sf/andpdf/pdfviewer/gui/PdfView.class differ diff --git a/PdfView/build/outputs/aar/PdfView-release.aar b/PdfView/build/outputs/aar/PdfView-release.aar index 700b2bf..de87413 100644 Binary files a/PdfView/build/outputs/aar/PdfView-release.aar and b/PdfView/build/outputs/aar/PdfView-release.aar differ diff --git a/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java b/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java index 1f75148..56d3c18 100644 --- a/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java +++ b/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java @@ -48,6 +48,7 @@ import java.nio.channels.FileChannel; import net.sf.andpdf.nio.ByteBuffer; import net.sf.andpdf.pdfviewer.gui.FullScrollView; +import net.sf.andpdf.pdfviewer.gui.PdfView; import net.sf.andpdf.refs.HardReference; /** @@ -195,6 +196,7 @@ public abstract class PdfViewerActivity extends Activity { private void setContent(String password) { try { parsePDF(pdffilename, password); + pdfView.setmPdfFile(mPdfFile); setContentView(mGraphView); startRenderThread(mPage, mZoom); } catch (PDFAuthenticationFailureException e) { @@ -430,6 +432,9 @@ public abstract class PdfViewerActivity extends Activity { return null; } + //TODO + PdfView pdfView; + private class GraphView extends FullScrollView { //private String mText; //private long fileMillis; @@ -455,9 +460,10 @@ public abstract class PdfViewerActivity extends Activity { //setContentView(R.layout.graphics_view); // layout params LinearLayout.LayoutParams lpWrap1 = - new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1); + new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams lpWrap10 = - new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 10); + new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + // vertical layout LinearLayout vl = new LinearLayout(context); @@ -467,6 +473,8 @@ public abstract class PdfViewerActivity extends Activity { if (mOldGraphView == null) { progress = ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page", true, true); } + //TODO + pdfView = new PdfView(PdfViewerActivity.this); addNavButtons(vl); // remember page button for updates @@ -476,17 +484,21 @@ public abstract class PdfViewerActivity extends Activity { setPageBitmap(null); updateImage(); mImageView.setLayoutParams(lpWrap1); - mImageView.setPadding(5, 5, 5, 5); +// mImageView.setPadding(5, 5, 5, 5); vl.addView(mImageView); + //TODO + vl.addView(pdfView); + pdfView.setLayoutParams(lpWrap1); + /*mImageView = (ImageView) findViewById(R.id.pdf_image); if (mImageView == null) { Log.i(TAG, "mImageView is null!!!!!!"); } setPageBitmap(null); updateImage();*/ - + /* - navigationPanel = new ViewStub(PdfViewerActivity.this, R.layout.navigation_overlay); + navigationPanel = new ViewStub(PdfViewerActivity.this, R.layout.navigation_overlay); final ImageButton previous = (ImageButton)navigationPanel.findViewById(R.id.navigation_previous); previous.setBackgroundDrawable(null); previous.setOnClickListener(new OnClickListener() { @@ -527,7 +539,7 @@ public abstract class PdfViewerActivity extends Activity { //addNavButtons(vl); - setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 100)); + setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); setBackgroundColor(Color.LTGRAY); setHorizontalScrollBarEnabled(true); setHorizontalFadingEdgeEnabled(true); @@ -538,12 +550,12 @@ public abstract class PdfViewerActivity extends Activity { private void addNavButtons(ViewGroup vg) { - addSpace(vg, 6, 6); +// addSpace(vg, 6, 6); LinearLayout.LayoutParams lpChild1 = - new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1); + new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams lpWrap10 = - new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 10); + new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); Context context = vg.getContext(); LinearLayout hl = new LinearLayout(context); @@ -578,7 +590,7 @@ public abstract class PdfViewerActivity extends Activity { }); hl.addView(bZoomIn); - addSpace(hl, 6, 6); +// addSpace(hl, 6, 6); // prev button ImageButton bPrev = new ImageButton(context); @@ -620,11 +632,11 @@ public abstract class PdfViewerActivity extends Activity { }); hl.addView(bNext); - addSpace(hl, 20, 20); +// addSpace(hl, 20, 20); // exit button - /* - Button bExit=new Button(context); + /* + Button bExit=new Button(context); bExit.setLayoutParams(lpChild1); bExit.setText("Back"); bExit.setWidth(60); @@ -668,9 +680,9 @@ public abstract class PdfViewerActivity extends Activity { uiHandler.post(new Runnable() { public void run() { mImageView.setImageBitmap(mBi); - + /*if (progress != null) - progress.dismiss();*/ + progress.dismiss();*/ } }); } @@ -679,8 +691,8 @@ public abstract class PdfViewerActivity extends Activity { if (bi != null) { mBi = bi; } else { - /* - mBi = Bitmap.createBitmap(100, 100, Config.RGB_565); + /* + mBi = Bitmap.createBitmap(100, 100, Config.RGB_565); Canvas can = new Canvas(mBi); can.drawColor(Color.RED); @@ -707,6 +719,7 @@ public abstract class PdfViewerActivity extends Activity { } private void showPage(int page, float zoom) throws Exception { + pdfView.showPage(page, zoom); //long startTime = System.currentTimeMillis(); //long middleTime = startTime; try { @@ -787,13 +800,12 @@ public abstract class PdfViewerActivity extends Activity { } else { mPdfFile = new PDFFile(bb, new PDFPassword(password)); } - mGraphView.showText("Anzahl Seiten:" + mPdfFile.getNumPages()); } /*private byte[] readBytes(File srcFile) throws IOException { - long fileLength = srcFile.length(); + long fileLength = srcFile.length(); int len = (int)fileLength; byte[] result = new byte[len]; FileInputStream fis = new FileInputStream(srcFile); @@ -846,7 +858,7 @@ public abstract class PdfViewerActivity extends Activity { } /*private void postHideNavigation() { - // Start a time to hide the panel after 3 seconds + // Start a time to hide the panel after 3 seconds closeNavigationHandler.removeCallbacks(closeNavigationThread); closeNavigationHandler.postDelayed(closeNavigationThread, 3000); }*/ diff --git a/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/PdfView.java b/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/PdfView.java new file mode 100644 index 0000000..146b93d --- /dev/null +++ b/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/PdfView.java @@ -0,0 +1,239 @@ +package net.sf.andpdf.pdfviewer.gui; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.RectF; +import android.os.Handler; +import android.util.Log; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.Toast; + +import com.sun.pdfview.PDFFile; +import com.sun.pdfview.PDFPage; +import com.sun.pdfview.decrypt.PDFAuthenticationFailureException; +import com.sun.pdfview.decrypt.PDFPassword; + +import net.sf.andpdf.nio.ByteBuffer; + +import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; +import java.nio.channels.FileChannel; + +public class PdfView extends FullScrollView { + + private static final int STARTPAGE = 1; + private static final float STARTZOOM = 1.0f; + + private static final float MIN_ZOOM = 0.25f; + private static final float MAX_ZOOM = 3.0f; + private static final float ZOOM_INCREMENT = 1.5f; + + private Bitmap mBi; + private ImageView mImageView; + private Handler uiHandler; + ImageButton bZoomOut; + ImageButton bZoomIn; + private PDFFile mPdfFile; + private PDFPage mPdfPage; + private Thread backgroundThread; + private int mPage; + private float mZoom; + + public PdfView(Context context) { + super(context); + uiHandler = new Handler(); + LayoutParams matchLp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + mImageView = new ImageView(context); + setPageBitmap(null); + updateImage(); + mImageView.setLayoutParams(matchLp); + addView(mImageView); + setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); + setBackgroundColor(Color.LTGRAY); + setHorizontalScrollBarEnabled(true); + setHorizontalFadingEdgeEnabled(true); + setVerticalScrollBarEnabled(true); + setVerticalFadingEdgeEnabled(true); + } + + public PDFFile getmPdfFile() { + return mPdfFile; + } + + public void setmPdfFile(PDFFile mPdfFile) { + this.mPdfFile = mPdfFile; + } + + public void showPage(int page, float zoom) throws Exception { + try { + // free memory from previous page + setPageBitmap(null); + updateImage(); + // Only load the page if it's a different page (i.e. not just changing the zoom level) + if (mPdfPage == null || mPdfPage.getPageNumber() != page) { + mPdfPage = mPdfFile.getPage(page, true); + } + float width = mPdfPage.getWidth(); + float height = mPdfPage.getHeight(); + RectF clip = null; + Bitmap bi = mPdfPage.getImage((int) (width * zoom), (int) (height * zoom), clip, true, true); + setPageBitmap(bi); + updateImage(); + + } catch (Throwable e) { + Log.e(TAG, e.getMessage(), e); + } + } + + + private void updateImage() { + uiHandler.post(new Runnable() { + public void run() { + mImageView.setImageBitmap(mBi); + } + }); + } + + private void setPageBitmap(Bitmap bi) { + if (bi != null) { + mBi = bi; + } + } + + + private void zoomIn() { + if (mPdfFile != null) { + if (mZoom < MAX_ZOOM) { + mZoom *= ZOOM_INCREMENT; + if (mZoom > MAX_ZOOM) mZoom = MAX_ZOOM; + + if (mZoom >= MAX_ZOOM) { + Log.d(TAG, "Disabling zoom in button"); + bZoomIn.setEnabled(false); + } else { + bZoomIn.setEnabled(true); + } + + bZoomOut.setEnabled(true); + startRenderThread(mPage, mZoom); + } + } + } + + private void zoomOut() { + if (mPdfFile != null) { + if (mZoom > MIN_ZOOM) { + mZoom /= ZOOM_INCREMENT; + if (mZoom < MIN_ZOOM) mZoom = MIN_ZOOM; + + if (mZoom <= MIN_ZOOM) { + Log.d(TAG, "Disabling zoom out button"); + bZoomOut.setEnabled(false); + } else { + bZoomOut.setEnabled(true); + } + + bZoomIn.setEnabled(true); + startRenderThread(mPage, mZoom); + } + } + } + + private void nextPage() { + if (mPdfFile != null) { + if (mPage < mPdfFile.getNumPages()) { + mPage += 1; + bZoomOut.setEnabled(true); + bZoomIn.setEnabled(true); + startRenderThread(mPage, mZoom); + } + } + } + + private void prevPage() { + if (mPdfFile != null) { + if (mPage > 1) { + mPage -= 1; + bZoomOut.setEnabled(true); + bZoomIn.setEnabled(true); + startRenderThread(mPage, mZoom); + } + } + } + + private void gotoPage() { + if (mPdfFile != null) { +// showDialog(DIALOG_PAGENUM); + } + } + + private synchronized void startRenderThread(final int page, final float zoom) { + if (backgroundThread != null) return; + backgroundThread = new Thread(new Runnable() { + public void run() { + try { + if (mPdfFile != null) { + showPage(page, zoom); + } + } catch (Exception e) { + Log.e(TAG, e.getMessage(), e); + } + backgroundThread = null; + } + }); + updateImageStatus(); + backgroundThread.start(); + } + + private void updateImageStatus() { + if (backgroundThread == null) { + return; + } + postDelayed(new Runnable() { + public void run() { + updateImageStatus(); + } + }, 1000); + } + + private void parsePDF(String filename, String password) throws PDFAuthenticationFailureException { + try { + File f = new File(filename); + long len = f.length(); + if (len == 0) { + toastMessage("file '" + filename + "' not found"); + } else { + toastMessage("file '" + filename + "' has " + len + " bytes"); + openFile(f, password); + } + } catch (PDFAuthenticationFailureException e) { + throw e; + } catch (Throwable e) { + e.printStackTrace(); + toastMessage("Exception: " + e.getMessage()); + } + } + + public void openFile(File file, String password) throws IOException { + // first open the file for random access + RandomAccessFile raf = new RandomAccessFile(file, "r"); + // extract a file channel + FileChannel channel = raf.getChannel(); + // now memory-map a byte-buffer + ByteBuffer bb = ByteBuffer.NEW(channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size())); + // create a PDFFile from the data + if (password == null) { + mPdfFile = new PDFFile(bb); + } else { + mPdfFile = new PDFFile(bb, new PDFPassword(password)); + } + toastMessage("Anzahl Seiten:" + mPdfFile.getNumPages()); + } + + public void toastMessage(String msg) { + Toast.makeText(getContext(), msg, Toast.LENGTH_LONG).show(); + } +} diff --git a/build/intermediates/dex-cache/cache.xml b/build/intermediates/dex-cache/cache.xml index 6767b78..c5d2dc8 100644 --- a/build/intermediates/dex-cache/cache.xml +++ b/build/intermediates/dex-cache/cache.xml @@ -5,7 +5,7 @@ jar="/Users/winney/git/Android-Pdf-Viewer-Library/pdfviewsample/build/intermediates/exploded-aar/Android-Pdf-Viewer-Library/PdfView/unspecified/jars/classes.jar" jumboMode="false" revision="23.0.2" - sha1="37191b3bdc528f4e4708f4a7e380629a951b272d"> + sha1="8cad678d9043f1f93f2c277b3890e0b109ac9b24">