1 /* 2 * Copyright 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.pdf.viewer.loader; 18 19 import android.graphics.Bitmap; 20 import android.graphics.Rect; 21 22 import androidx.annotation.RestrictTo; 23 import androidx.pdf.data.DisplayData; 24 import androidx.pdf.data.PdfStatus; 25 import androidx.pdf.models.Dimensions; 26 import androidx.pdf.models.GotoLink; 27 import androidx.pdf.models.LinkRects; 28 import androidx.pdf.models.MatchRects; 29 import androidx.pdf.models.PageSelection; 30 import androidx.pdf.util.TileBoard.TileInfo; 31 32 import org.jspecify.annotations.NonNull; 33 34 import java.util.List; 35 36 /** 37 * Callback interface - should be implemented by a client of PdfLoader, so that 38 * they can be notified when PdfLoader has loaded the requested data from the 39 * PDF document. 40 */ 41 @RestrictTo(RestrictTo.Scope.LIBRARY) 42 public interface PdfLoaderCallbacks { 43 44 /** 45 * This is called if the PDF is password protected, to request a password. 46 * 47 * @param incorrect True if an incorrect password was just provided. 48 */ requestPassword(boolean incorrect)49 void requestPassword(boolean incorrect); 50 51 /** This when the PDF is first successfully loaded by PdfLoader. */ documentLoaded(int numPages, @NonNull DisplayData data)52 void documentLoaded(int numPages, @NonNull DisplayData data); 53 54 /** Called if the Document can't be loaded. */ documentNotLoaded(@onNull PdfStatus status)55 void documentNotLoaded(@NonNull PdfStatus status); 56 57 /** Called if pdfClient chokes on one page of the document. */ pageBroken(int page)58 void pageBroken(int page); 59 60 /** This is called in response to a call to loadPageDimensions. */ setPageDimensions(int pageNum, @NonNull Dimensions dimensions)61 void setPageDimensions(int pageNum, @NonNull Dimensions dimensions); 62 63 /** This is called in response to a call to loadPageBitmap. */ setPageBitmap(int pageNum, @NonNull Bitmap bitmap)64 void setPageBitmap(int pageNum, @NonNull Bitmap bitmap); 65 66 /** This is called in response to a call to loadTileBitmap. */ setTileBitmap(int pageNum, @NonNull TileInfo tileInfo, @NonNull Bitmap bitmap)67 void setTileBitmap(int pageNum, @NonNull TileInfo tileInfo, @NonNull Bitmap bitmap); 68 69 /** This is called in response to a call to loadPageText. */ setPageText(int pageNum, @NonNull String text)70 void setPageText(int pageNum, @NonNull String text); 71 72 /** This is called in response to a call to searchPageText. */ setSearchResults(@onNull String query, int pageNum, @NonNull MatchRects matches)73 void setSearchResults(@NonNull String query, int pageNum, @NonNull MatchRects matches); 74 75 /** This is called in response to selectPageText. */ setSelection(int pageNum, @NonNull PageSelection selection)76 void setSelection(int pageNum, @NonNull PageSelection selection); 77 78 /** This is called in response to getPageUrlLinks. */ setPageUrlLinks(int pageNum, @NonNull LinkRects result)79 void setPageUrlLinks(int pageNum, @NonNull LinkRects result); 80 81 /** This is called in response to getPageGotoLinks. */ setPageGotoLinks(int pageNum, @NonNull List<GotoLink> links)82 void setPageGotoLinks(int pageNum, @NonNull List<GotoLink> links); 83 84 /** 85 * Called in response to form editing operations in {@link PdfLoader} to inform implementations 86 * that portions of the page bitmap that have been invalidated. 87 */ setInvalidRects(int pageNum, @NonNull List<Rect> invalidRects)88 void setInvalidRects(int pageNum, @NonNull List<Rect> invalidRects); 89 } 90