Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95b6fd8b authored by Svetoslav's avatar Svetoslav
Browse files

Addressing APIs council feedback

bug:15089461

Change-Id: Ifcb003b114e2e50333bb0ef386d99482f7bfaa6e
parent 1c7c2a0d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -11621,13 +11621,13 @@ package android.graphics.pdf {
  public final class PdfRenderer implements java.lang.AutoCloseable {
    ctor public PdfRenderer(android.os.ParcelFileDescriptor) throws java.io.IOException;
    method public void close();
    method public void closePage(android.graphics.pdf.PdfRenderer.Page);
    method public int getPageCount();
    method public android.graphics.pdf.PdfRenderer.Page openPage(int);
    method public boolean shouldScaleForPrinting();
  }
  public final class PdfRenderer.Page {
  public final class PdfRenderer.Page implements java.lang.AutoCloseable {
    method public void close();
    method public int getHeight();
    method public int getIndex();
    method public int getWidth();
+42 −37
Original line number Diff line number Diff line
@@ -56,15 +56,14 @@ import java.lang.annotation.RetentionPolicy;
 * final int pageCount = renderer.getPageCount();
 * for (int i = 0; i < pageCount; i++) {
 *     Page page = renderer.openPage(i);
 *     Bitmap bitmap = getBitmapReuseIfPossible(page);
 *
 *     // say we render for showing on the screen
 *     page.render(bitmap, getContentBoundsInBitmap(),
 *             getDesiredTransformation(), Page.RENDER_MODE_FOR_DISPLAY);
 *     page.render(mBitmap, null, null, Page.RENDER_MODE_FOR_DISPLAY);
 *
 *     // do stuff with the bitmap
 *
 *     renderer.closePage(page);
 *     // close the page
 *     page.close();
 * }
 *
 * // close the renderer
@@ -165,7 +164,7 @@ public final class PdfRenderer implements AutoCloseable {
     * @param index The page index.
     * @return A page that can be rendered.
     *
     * @see #closePage(PdfRenderer.Page)
     * @see android.graphics.pdf.PdfRenderer.Page#close() PdfRenderer.Page.close()
     */
    public Page openPage(int index) {
        throwIfClosed();
@@ -174,21 +173,6 @@ public final class PdfRenderer implements AutoCloseable {
        return mCurrentPage;
    }

    /**
     * Closes a page opened for rendering.
     *
     * @param page The page to close.
     *
     * @see #openPage(int)
     */
    public void closePage(@NonNull Page page) {
        throwIfClosed();
        throwIfNotCurrentPage(page);
        throwIfCurrentPageClosed();
        mCurrentPage.close();
        mCurrentPage = null;
    }

    @Override
    protected void finalize() throws Throwable {
        try {
@@ -228,22 +212,12 @@ public final class PdfRenderer implements AutoCloseable {
        }
    }

    private void throwIfCurrentPageClosed() {
        if (mCurrentPage == null) {
            throw new IllegalStateException("Already closed");
        }
    }

    private void throwIfNotCurrentPage(Page page) {
        if (page != mCurrentPage) {
            throw new IllegalArgumentException("Page not from document");
        }
    }

    /**
     * This class represents a PDF document page for rendering.
     */
    public final class Page {
    public final class Page implements AutoCloseable {

        private final CloseGuard mCloseGuard = CloseGuard.get();

        /**
         * Mode to render the content for display on a screen.
@@ -267,6 +241,7 @@ public final class PdfRenderer implements AutoCloseable {
            mIndex = index;
            mWidth = size.x;
            mHeight = size.y;
            mCloseGuard.open("close");
        }

        /**
@@ -307,7 +282,7 @@ public final class PdfRenderer implements AutoCloseable {
         * You may optionally specify a matrix to transform the content from page coordinates
         * which are in points (1/72") to bitmap coordintates which are in pixels. If this
         * matrix is not provided this method will apply a transformation that will fit the
         * whole page to the destination clip if profided or the destination bitmap if no
         * whole page to the destination clip if provided or the destination bitmap if no
         * clip is provided.
         * </p>
         * <p>
@@ -322,8 +297,8 @@ public final class PdfRenderer implements AutoCloseable {
         * </p>
         * <p>
         * <strong>Note: </strong> The optional transformation matrix must be affine as per
         * {@link android.graphics.Matrix#isAffine()}. Hence, you can specify rotation, scaling,
         * translation but not a perspective transformation.
         * {@link android.graphics.Matrix#isAffine() Matrix.isAffine()}. Hence, you can specify
         * rotation, scaling, translation but not a perspective transformation.
         * </p>
         *
         * @param destination Destination bitmap to which to render.
@@ -373,9 +348,39 @@ public final class PdfRenderer implements AutoCloseable {
                    contentTop, contentRight, contentBottom, transformPtr, renderMode);
        }

        void close() {
        /**
         * Closes this page.
         *
         * @see android.graphics.pdf.PdfRenderer#openPage(int)
         */
        @Override
        public void close() {
            throwIfClosed();
            doClose();
        }

        @Override
        protected void finalize() throws Throwable {
            try {
                mCloseGuard.warnIfOpen();
                if (mNativePage != 0) {
                    doClose();
                }
            } finally {
                super.finalize();
            }
        }

        private void doClose() {
            nativeClosePage(mNativePage);
            mNativePage = 0;
            mCloseGuard.close();
        }

        private void throwIfClosed() {
            if (mNativePage == 0) {
                throw new IllegalStateException("Already closed");
            }
        }
    }