Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: pdf/pdfium/pdfium_engine.cc

Issue 553453002: PDF Viewer - Show context menu for links on right click (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "pdf/pdfium/pdfium_engine.h" 5 #include "pdf/pdfium/pdfium_engine.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 1224 matching lines...) Expand 10 before | Expand all | Expand 10 after
1235 1235
1236 void PDFiumEngine::PrintEnd() { 1236 void PDFiumEngine::PrintEnd() {
1237 FORM_DoDocumentAAction(form_, FPDFDOC_AACTION_DP); 1237 FORM_DoDocumentAAction(form_, FPDFDOC_AACTION_DP);
1238 } 1238 }
1239 1239
1240 PDFiumPage::Area PDFiumEngine::GetCharIndex( 1240 PDFiumPage::Area PDFiumEngine::GetCharIndex(
1241 const pp::MouseInputEvent& event, int* page_index, 1241 const pp::MouseInputEvent& event, int* page_index,
1242 int* char_index, PDFiumPage::LinkTarget* target) { 1242 int* char_index, PDFiumPage::LinkTarget* target) {
1243 // First figure out which page this is in. 1243 // First figure out which page this is in.
1244 pp::Point mouse_point = event.GetPosition(); 1244 pp::Point mouse_point = event.GetPosition();
1245 pp::Point point( 1245 return GetCharIndex(mouse_point, page_index, char_index, target);
1246 static_cast<int>((mouse_point.x() + position_.x()) / current_zoom_),
1247 static_cast<int>((mouse_point.y() + position_.y()) / current_zoom_));
1248 return GetCharIndex(point, page_index, char_index, target);
1249 } 1246 }
1250 1247
1251 PDFiumPage::Area PDFiumEngine::GetCharIndex( 1248 PDFiumPage::Area PDFiumEngine::GetCharIndex(
raymes 2014/09/08 01:25:38 It looks like this function expects |point| to be
Nikhil 2014/09/08 05:59:12 Done.
1252 const pp::Point& point, 1249 const pp::Point& point,
1253 int* page_index, 1250 int* page_index,
1254 int* char_index, 1251 int* char_index,
1255 PDFiumPage::LinkTarget* target) { 1252 PDFiumPage::LinkTarget* target) {
1253 pp::Point test_point(
1254 static_cast<int>((point.x() + position_.x()) / current_zoom_),
1255 static_cast<int>((point.y() + position_.y()) / current_zoom_));
1256
1256 int page = -1; 1257 int page = -1;
1257 for (size_t i = 0; i < visible_pages_.size(); ++i) { 1258 for (size_t i = 0; i < visible_pages_.size(); ++i) {
1258 if (pages_[visible_pages_[i]]->rect().Contains(point)) { 1259 if (pages_[visible_pages_[i]]->rect().Contains(test_point)) {
1259 page = visible_pages_[i]; 1260 page = visible_pages_[i];
1260 break; 1261 break;
1261 } 1262 }
1262 } 1263 }
1263 if (page == -1) 1264 if (page == -1)
1264 return PDFiumPage::NONSELECTABLE_AREA; 1265 return PDFiumPage::NONSELECTABLE_AREA;
1265 1266
1266 // If the page hasn't finished rendering, calling into the page sometimes 1267 // If the page hasn't finished rendering, calling into the page sometimes
1267 // leads to hangs. 1268 // leads to hangs.
1268 for (size_t i = 0; i < progressive_paints_.size(); ++i) { 1269 for (size_t i = 0; i < progressive_paints_.size(); ++i) {
1269 if (progressive_paints_[i].page_index == page) 1270 if (progressive_paints_[i].page_index == page)
1270 return PDFiumPage::NONSELECTABLE_AREA; 1271 return PDFiumPage::NONSELECTABLE_AREA;
1271 } 1272 }
1272 1273
1273 *page_index = page; 1274 *page_index = page;
1274 return pages_[page]->GetCharIndex(point, current_rotation_, char_index, 1275 return pages_[page]->GetCharIndex(
1275 target); 1276 test_point, current_rotation_, char_index, target);
1276 } 1277 }
1277 1278
1278 bool PDFiumEngine::OnMouseDown(const pp::MouseInputEvent& event) { 1279 bool PDFiumEngine::OnMouseDown(const pp::MouseInputEvent& event) {
1279 if (event.GetButton() != PP_INPUTEVENT_MOUSEBUTTON_LEFT) 1280 if (event.GetButton() != PP_INPUTEVENT_MOUSEBUTTON_LEFT)
1280 return false; 1281 return false;
1281 1282
1282 SelectionChangeInvalidator selection_invalidator(this); 1283 SelectionChangeInvalidator selection_invalidator(this);
1283 selection_.clear(); 1284 selection_.clear();
1284 1285
1285 int page_index = -1; 1286 int page_index = -1;
(...skipping 2136 matching lines...) Expand 10 before | Expand all | Expand 10 after
3422 double* height) { 3423 double* height) {
3423 FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, NULL); 3424 FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, NULL);
3424 if (!doc) 3425 if (!doc)
3425 return false; 3426 return false;
3426 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0; 3427 bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0;
3427 FPDF_CloseDocument(doc); 3428 FPDF_CloseDocument(doc);
3428 return success; 3429 return success;
3429 } 3430 }
3430 3431
3431 } // namespace chrome_pdf 3432 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698