Merge "Addressing APIs council feedback"

This commit is contained in:
Svetoslav
2014-05-21 20:38:14 +00:00
committed by Android (Google) Code Review
2 changed files with 44 additions and 39 deletions

View File

@@ -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();

View File

@@ -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");
}
}
}