OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_page.h" | 5 #include "pdf/pdfium/pdfium_page.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
251 base::DictionaryValue* node = new base::DictionaryValue(); | 251 base::DictionaryValue* node = new base::DictionaryValue(); |
252 node->SetString(kTextNodeType, kTextNodeTypeURL); | 252 node->SetString(kTextNodeType, kTextNodeTypeURL); |
253 node->SetString(kTextNodeText, text); | 253 node->SetString(kTextNodeText, text); |
254 node->SetString(kTextNodeURL, url); | 254 node->SetString(kTextNodeURL, url); |
255 return node; | 255 return node; |
256 } | 256 } |
257 | 257 |
258 PDFiumPage::Area PDFiumPage::GetCharIndex(const pp::Point& point, | 258 PDFiumPage::Area PDFiumPage::GetCharIndex(const pp::Point& point, |
259 int rotation, | 259 int rotation, |
260 int* char_index, | 260 int* char_index, |
261 int* form_type, | |
261 LinkTarget* target) { | 262 LinkTarget* target) { |
262 if (!available_) | 263 if (!available_) |
263 return NONSELECTABLE_AREA; | 264 return NONSELECTABLE_AREA; |
264 pp::Point point2 = point - rect_.point(); | 265 pp::Point point2 = point - rect_.point(); |
265 double new_x, new_y; | 266 double new_x, new_y; |
266 FPDF_DeviceToPage(GetPage(), 0, 0, rect_.width(), rect_.height(), | 267 FPDF_DeviceToPage(GetPage(), 0, 0, rect_.width(), rect_.height(), |
267 rotation, point2.x(), point2.y(), &new_x, &new_y); | 268 rotation, point2.x(), point2.y(), &new_x, &new_y); |
268 | 269 |
269 int rv = FPDFText_GetCharIndexAtPos( | 270 int rv = FPDFText_GetCharIndexAtPos( |
270 GetTextPage(), new_x, new_y, kTolerance, kTolerance); | 271 GetTextPage(), new_x, new_y, kTolerance, kTolerance); |
271 *char_index = rv; | 272 *char_index = rv; |
272 | 273 |
274 int control = | |
275 FPDPage_HasFormFieldAtPoint(engine_->form(), GetPage(), new_x, new_y); | |
Lei Zhang
2015/02/28 01:16:14
FPDPage_HasFormFieldAtPoint() and FPDFLink_GetLink
| |
276 if (control > FPDF_FORMFIELD_UNKNOWN) { | |
277 *form_type = control; | |
278 return PDFiumPage::NONSELECTABLE_AREA; | |
279 } | |
280 | |
273 FPDF_LINK link = FPDFLink_GetLinkAtPoint(GetPage(), new_x, new_y); | 281 FPDF_LINK link = FPDFLink_GetLinkAtPoint(GetPage(), new_x, new_y); |
274 if (link) { | 282 if (link) { |
275 // We don't handle all possible link types of the PDF. For example, | 283 // We don't handle all possible link types of the PDF. For example, |
276 // launch actions, cross-document links, etc. | 284 // launch actions, cross-document links, etc. |
277 // In that case, GetLinkTarget() will return NONSELECTABLE_AREA | 285 // In that case, GetLinkTarget() will return NONSELECTABLE_AREA |
278 // and we should proceed with area detection. | 286 // and we should proceed with area detection. |
279 PDFiumPage::Area area = GetLinkTarget(link, target); | 287 PDFiumPage::Area area = GetLinkTarget(link, target); |
280 if (area != PDFiumPage::NONSELECTABLE_AREA) | 288 if (area != PDFiumPage::NONSELECTABLE_AREA) |
281 return area; | 289 return area; |
282 } | 290 } |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
500 page_->loading_count_--; | 508 page_->loading_count_--; |
501 } | 509 } |
502 | 510 |
503 PDFiumPage::Link::Link() { | 511 PDFiumPage::Link::Link() { |
504 } | 512 } |
505 | 513 |
506 PDFiumPage::Link::~Link() { | 514 PDFiumPage::Link::~Link() { |
507 } | 515 } |
508 | 516 |
509 } // namespace chrome_pdf | 517 } // namespace chrome_pdf |
OLD | NEW |