| Index: pdf/pdfium/pdfium_page.h
|
| ===================================================================
|
| --- pdf/pdfium/pdfium_page.h (revision 0)
|
| +++ pdf/pdfium/pdfium_page.h (revision 0)
|
| @@ -0,0 +1,136 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef PDF_PDFIUM_PDFIUM_PAGE_H_
|
| +#define PDF_PDFIUM_PDFIUM_PAGE_H_
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/strings/string16.h"
|
| +#include "ppapi/cpp/rect.h"
|
| +#include "third_party/pdfium/fpdfsdk/include/fpdfdoc.h"
|
| +#include "third_party/pdfium/fpdfsdk/include/fpdfformfill.h"
|
| +#include "third_party/pdfium/fpdfsdk/include/fpdftext.h"
|
| +
|
| +namespace base {
|
| +class Value;
|
| +}
|
| +
|
| +namespace chrome_pdf {
|
| +
|
| +class PDFiumEngine;
|
| +
|
| +// Wrapper around a page from the document.
|
| +class PDFiumPage {
|
| + public:
|
| + PDFiumPage(PDFiumEngine* engine,
|
| + int i,
|
| + const pp::Rect& r,
|
| + bool available);
|
| + ~PDFiumPage();
|
| + // Unloads the PDFium data for this page from memory.
|
| + void Unload();
|
| + // Gets the FPDF_PAGE for this page, loading and parsing it if necessary.
|
| + FPDF_PAGE GetPage();
|
| + //Get the FPDF_PAGE for printing.
|
| + FPDF_PAGE GetPrintPage();
|
| + //Close the printing page.
|
| + void ClosePrintPage();
|
| +
|
| + // Returns FPDF_TEXTPAGE for the page, loading and parsing it if necessary.
|
| + FPDF_TEXTPAGE GetTextPage();
|
| +
|
| + // Returns a DictionaryValue version of the page.
|
| + base::Value* GetAccessibleContentAsValue(int rotation);
|
| +
|
| + enum Area {
|
| + NONSELECTABLE_AREA,
|
| + TEXT_AREA,
|
| + WEBLINK_AREA, // Area is a hyperlink.
|
| + DOCLINK_AREA, // Area is a link to a different part of the same document.
|
| + };
|
| +
|
| + struct LinkTarget {
|
| + // We are using std::string here which have a copy contructor.
|
| + // That prevents us from using union here.
|
| + std::string url; // Valid for WEBLINK_AREA only.
|
| + int page; // Valid for DOCLINK_AREA only.
|
| + };
|
| +
|
| + // Given a point in the document that's in this page, returns its character
|
| + // index if it's near a character, and also the type of text.
|
| + // Target is optional. It will be filled in for WEBLINK_AREA or
|
| + // DOCLINK_AREA only.
|
| + Area GetCharIndex(const pp::Point& point, int rotation, int* char_index,
|
| + LinkTarget* target);
|
| +
|
| + // Gets the character at the given index.
|
| + base::char16 GetCharAtIndex(int index);
|
| +
|
| + // Gets the number of characters in the page.
|
| + int GetCharCount();
|
| +
|
| + // Converts from page coordinates to screen coordinates.
|
| + pp::Rect PageToScreen(const pp::Point& offset,
|
| + double zoom,
|
| + double left,
|
| + double top,
|
| + double right,
|
| + double bottom,
|
| + int rotation);
|
| +
|
| + int index() const { return index_; }
|
| + pp::Rect rect() const { return rect_; }
|
| + void set_rect(const pp::Rect& r) { rect_ = r; }
|
| + bool available() const { return available_; }
|
| + void set_available(bool available) { available_ = available; }
|
| + void set_calculated_links(bool calculated_links) {
|
| + calculated_links_ = calculated_links;
|
| + }
|
| +
|
| + private:
|
| + // Returns a link index if the given character index is over a link, or -1
|
| + // otherwise.
|
| + int GetLink(int char_index, LinkTarget* target);
|
| + // Returns the link indices if the given rect intersects a link rect, or an
|
| + // empty vector otherwise.
|
| + std::vector<int> GetLinks(pp::Rect text_area,
|
| + std::vector<LinkTarget>* targets);
|
| + // Calculate the locations of any links on the page.
|
| + void CalculateLinks();
|
| + // Returns link type and target associated with a link. Returns
|
| + // NONSELECTABLE_AREA if link detection failed.
|
| + Area GetLinkTarget(FPDF_LINK link, LinkTarget* target);
|
| + // Returns target associated with a destination.
|
| + Area GetDestinationTarget(FPDF_DEST destination, LinkTarget* target);
|
| + // Returns the text in the supplied box as a Value Node
|
| + base::Value* GetTextBoxAsValue(double page_height, double left, double top,
|
| + double right, double bottom, int rotation);
|
| + // Helper functions for JSON generation
|
| + base::Value* CreateTextNode(std::string text);
|
| + base::Value* CreateURLNode(std::string text, std::string url);
|
| +
|
| + struct Link {
|
| + Link();
|
| + ~Link();
|
| +
|
| + std::string url;
|
| + // Bounding rectangles of characters.
|
| + std::vector<pp::Rect> rects;
|
| + };
|
| +
|
| + PDFiumEngine* engine_;
|
| + FPDF_PAGE page_;
|
| + FPDF_TEXTPAGE text_page_;
|
| + int index_;
|
| + pp::Rect rect_;
|
| + bool calculated_links_;
|
| + std::vector<Link> links_;
|
| + bool available_;
|
| +};
|
| +
|
| +} // namespace chrome_pdf
|
| +
|
| +#endif // PDF_PDFIUM_PDFIUM_PAGE_H_
|
|
|
| Property changes on: pdf\pdfium\pdfium_page.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|