diff options
author | Svetoslav <svetoslavganov@google.com> | 2013-11-07 16:28:39 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-11-07 16:28:39 -0800 |
commit | 765c9dfd54a57a062ce9702eb843b3d2dea716e7 (patch) | |
tree | 6f223d7833a317fe8a4e9a6a91c58a22bd1bc7f9 /graphics/java | |
parent | e7dda40c919e9e97246740dd8daa2594fdd3030a (diff) | |
parent | ebd616e88dab185bbf5b309d29c92a9eea9817e0 (diff) | |
download | frameworks_base-765c9dfd54a57a062ce9702eb843b3d2dea716e7.zip frameworks_base-765c9dfd54a57a062ce9702eb843b3d2dea716e7.tar.gz frameworks_base-765c9dfd54a57a062ce9702eb843b3d2dea716e7.tar.bz2 |
am ebd616e8: am 134631b9: am 90242fe5: Merge "Switch to the new Skia PDF generation APIs." into klp-dev
* commit 'ebd616e88dab185bbf5b309d29c92a9eea9817e0':
Switch to the new Skia PDF generation APIs.
Diffstat (limited to 'graphics/java')
-rw-r--r-- | graphics/java/android/graphics/pdf/PdfDocument.java | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/graphics/java/android/graphics/pdf/PdfDocument.java b/graphics/java/android/graphics/pdf/PdfDocument.java index 81e523d..29d14a2 100644 --- a/graphics/java/android/graphics/pdf/PdfDocument.java +++ b/graphics/java/android/graphics/pdf/PdfDocument.java @@ -18,6 +18,7 @@ package android.graphics.pdf; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Paint; import android.graphics.Rect; import dalvik.system.CloseGuard; @@ -69,6 +70,12 @@ import java.util.List; */ public class PdfDocument { + // TODO: We need a constructor that will take an OutputStream to + // support online data serialization as opposed to the current + // on demand one. The current approach is fine until Skia starts + // to support online PDF generation at which point we need to + // handle this. + private final byte[] mChunk = new byte[4096]; private final CloseGuard mCloseGuard = CloseGuard.get(); @@ -111,7 +118,7 @@ public class PdfDocument { if (pageInfo == null) { throw new IllegalArgumentException("page cannot be null"); } - Canvas canvas = new PdfCanvas(nativeCreatePage(pageInfo.mPageWidth, + Canvas canvas = new PdfCanvas(nativeStartPage(mNativeDocument, pageInfo.mPageWidth, pageInfo.mPageHeight, pageInfo.mContentRect.left, pageInfo.mContentRect.top, pageInfo.mContentRect.right, pageInfo.mContentRect.bottom)); mCurrentPage = new Page(canvas, pageInfo); @@ -142,7 +149,7 @@ public class PdfDocument { } mPages.add(page.getInfo()); mCurrentPage = null; - nativeAppendPage(mNativeDocument, page.mCanvas.mNativeCanvas); + nativeFinishPage(mNativeDocument); page.finish(); } @@ -204,7 +211,7 @@ public class PdfDocument { private void dispose() { if (mNativeDocument != 0) { - nativeFinalize(mNativeDocument); + nativeClose(mNativeDocument); mCloseGuard.close(); mNativeDocument = 0; } @@ -230,14 +237,14 @@ public class PdfDocument { private native int nativeCreateDocument(); - private native void nativeFinalize(int document); + private native void nativeClose(int document); - private native void nativeAppendPage(int document, int page); + private native void nativeFinishPage(int document); private native void nativeWriteTo(int document, OutputStream out, byte[] chunk); - private static native int nativeCreatePage(int pageWidth, int pageHeight, int contentLeft, - int contentTop, int contentRight, int contentBottom); + private static native int nativeStartPage(int documentPtr, int pageWidth, int pageHeight, + int contentLeft, int contentTop, int contentRight, int contentBottom); private final class PdfCanvas extends Canvas { @@ -392,28 +399,28 @@ public class PdfDocument { * Gets the {@link Canvas} of the page. * * <p> - * <strong>Note: </strong> There are some draw operations that are - * not yet supported by the canvas returned by this method. More - * specifically: + * <strong>Note: </strong> There are some draw operations that are not yet + * supported by the canvas returned by this method. More specifically: * <ul> - * <li>{@link Canvas#clipPath(android.graphics.Path) - * Canvas.clipPath(android.graphics.Path)}</li> - * <li>All flavors of {@link Canvas#drawText(String, float, float, - * android.graphics.Paint) Canvas.drawText(String, float, float, - * android.graphics.Paint)}</li> - * <li>All flavors of {@link Canvas#drawPosText(String, float[], - * android.graphics.Paint) Canvas.drawPosText(String, float[], - * android.graphics.Paint)}</li> + * <li>Inverse path clipping performed via {@link Canvas#clipPath(android.graphics.Path, + * android.graphics.Region.Op) Canvas.clipPath(android.graphics.Path, + * android.graphics.Region.Op)} for {@link + * android.graphics.Region.Op#REVERSE_DIFFERENCE + * Region.Op#REVERSE_DIFFERENCE} operations.</li> * <li>{@link Canvas#drawVertices(android.graphics.Canvas.VertexMode, int, * float[], int, float[], int, int[], int, short[], int, int, * android.graphics.Paint) Canvas.drawVertices( * android.graphics.Canvas.VertexMode, int, float[], int, float[], * int, int[], int, short[], int, int, android.graphics.Paint)}</li> - * <li>{@link android.graphics.PorterDuff.Mode#SRC_ATOP PorterDuff.Mode SRC}, + * <li>Color filters set via {@link Paint#setColorFilter( + * android.graphics.ColorFilter)}</li> + * <li>Mask filters set via {@link Paint#setMaskFilter( + * android.graphics.MaskFilter)}</li> + * <li>Some XFER modes such as + * {@link android.graphics.PorterDuff.Mode#SRC_ATOP PorterDuff.Mode SRC}, * {@link android.graphics.PorterDuff.Mode#DST_ATOP PorterDuff.DST_ATOP}, * {@link android.graphics.PorterDuff.Mode#XOR PorterDuff.XOR}, * {@link android.graphics.PorterDuff.Mode#ADD PorterDuff.ADD}</li> - * <li>Perspective transforms</li> * </ul> * * @return The canvas if the page is not finished, null otherwise. |