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 3 // found in the LICENSE file. 4 5 #ifndef PDF_PDFIUM_PDFIUM_RANGE_H_ 6 #define PDF_PDFIUM_PDFIUM_RANGE_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/strings/string16.h" 12 #include "pdf/pdfium/pdfium_page.h" 13 #include "ppapi/cpp/rect.h" 14 15 namespace chrome_pdf { 16 17 // Describes location of a string of characters. 18 class PDFiumRange { 19 public: 20 PDFiumRange(PDFiumPage* page, int char_index, int char_count); 21 ~PDFiumRange(); 22 23 // Update how many characters are in the selection. Could be negative if 24 // backwards. 25 void SetCharCount(int char_count); 26 page_index()27 int page_index() const { return page_->index(); } char_index()28 int char_index() const { return char_index_; } char_count()29 int char_count() const { return char_count_; } 30 31 // Gets bounding rectangles of range in screen coordinates. 32 std::vector<pp::Rect> GetScreenRects(const pp::Point& offset, 33 double zoom, 34 int rotation); 35 36 // Gets the string of characters in this range. 37 base::string16 GetText(); 38 39 private: 40 PDFiumPage* page_; 41 // Index of first character. 42 int char_index_; 43 // How many characters are part of this range (negative if backwards). 44 int char_count_; 45 46 // Cache of ScreenRect, and the associated variables used when caching it. 47 std::vector<pp::Rect> cached_screen_rects_; 48 pp::Point cached_screen_rects_offset_; 49 double cached_screen_rects_zoom_; 50 }; 51 52 } // namespace chrome_pdf 53 54 #endif // PDF_PDFIUM_PDFIUM_RANGE_H_ 55