| Index: pdf/pdfium/pdfium_engine.cc
|
| diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
|
| index 3f0b3120edb65b161a2c9aa9c7d0c0151fe831ab..6506d8c96b1038af85ffed479c6b7d05e9dcb8c1 100644
|
| --- a/pdf/pdfium/pdfium_engine.cc
|
| +++ b/pdf/pdfium/pdfium_engine.cc
|
| @@ -527,6 +527,7 @@
|
| fpdf_availability_(NULL),
|
| next_timer_id_(0),
|
| last_page_mouse_down_(-1),
|
| + first_visible_page_(-1),
|
| most_visible_page_(-1),
|
| called_do_document_action_(false),
|
| render_grayscale_(false),
|
| @@ -2276,6 +2277,10 @@
|
| return url;
|
| }
|
|
|
| +bool PDFiumEngine::IsSelecting() {
|
| + return selecting_;
|
| +}
|
| +
|
| bool PDFiumEngine::HasPermission(DocumentPermission permission) const {
|
| // PDF 1.7 spec, section 3.5.2 says: "If the revision number is 2 or greater,
|
| // the operations to which user access can be controlled are as follows: ..."
|
| @@ -2345,6 +2350,11 @@
|
| return dest ? FPDFDest_GetPageIndex(doc_, dest) : -1;
|
| }
|
|
|
| +int PDFiumEngine::GetFirstVisiblePage() {
|
| + CalculateVisiblePages();
|
| + return first_visible_page_;
|
| +}
|
| +
|
| int PDFiumEngine::GetMostVisiblePage() {
|
| CalculateVisiblePages();
|
| return most_visible_page_;
|
| @@ -2359,6 +2369,26 @@
|
|
|
| pp::Rect PDFiumEngine::GetPageContentsRect(int index) {
|
| return GetScreenRect(pages_[index]->rect());
|
| +}
|
| +
|
| +void PDFiumEngine::PaintThumbnail(pp::ImageData* image_data, int index) {
|
| + FPDF_BITMAP bitmap = FPDFBitmap_CreateEx(
|
| + image_data->size().width(), image_data->size().height(),
|
| + FPDFBitmap_BGRx, image_data->data(), image_data->stride());
|
| +
|
| + if (pages_[index]->available()) {
|
| + FPDFBitmap_FillRect(bitmap, 0, 0, image_data->size().width(),
|
| + image_data->size().height(), 0xFFFFFFFF);
|
| +
|
| + FPDF_RenderPageBitmap(
|
| + bitmap, pages_[index]->GetPage(), 0, 0, image_data->size().width(),
|
| + image_data->size().height(), 0, GetRenderingFlags());
|
| + } else {
|
| + FPDFBitmap_FillRect(bitmap, 0, 0, image_data->size().width(),
|
| + image_data->size().height(), kPendingPageColor);
|
| + }
|
| +
|
| + FPDFBitmap_Destroy(bitmap);
|
| }
|
|
|
| void PDFiumEngine::SetGrayscale(bool grayscale) {
|
| @@ -2689,10 +2719,15 @@
|
| // screen coordinates.
|
| form_highlights_.clear();
|
|
|
| - int most_visible_page = visible_pages_.empty() ? 0 : visible_pages_.front();
|
| - DCHECK_GE(most_visible_page, 0);
|
| + if (visible_pages_.size() == 0)
|
| + first_visible_page_ = -1;
|
| + else
|
| + first_visible_page_ = visible_pages_.front();
|
| +
|
| + int most_visible_page = first_visible_page_;
|
| // Check if the next page is more visible than the first one.
|
| - if (!pages_.empty() &&
|
| + if (most_visible_page != -1 &&
|
| + pages_.size() > 0 &&
|
| most_visible_page < static_cast<int>(pages_.size()) - 1) {
|
| pp::Rect rc_first =
|
| visible_rect.Intersect(GetPageScreenRect(most_visible_page));
|
|
|