| Index: pdf/pdf_engine.h
|
| ===================================================================
|
| --- pdf/pdf_engine.h (revision 0)
|
| +++ pdf/pdf_engine.h (revision 0)
|
| @@ -0,0 +1,319 @@
|
| +// Copyright (c) 2012 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_PDF_ENGINE_H_
|
| +#define PDF_PDF_ENGINE_H_
|
| +
|
| +#include "build/build_config.h"
|
| +
|
| +#if defined(OS_WIN)
|
| +#include <windows.h>
|
| +#endif
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/strings/string16.h"
|
| +
|
| +#include "ppapi/c/dev/pp_cursor_type_dev.h"
|
| +#include "ppapi/c/dev/ppp_printing_dev.h"
|
| +#include "ppapi/c/ppb_input_event.h"
|
| +#include "ppapi/cpp/completion_callback.h"
|
| +#include "ppapi/cpp/image_data.h"
|
| +#include "ppapi/cpp/rect.h"
|
| +#include "ppapi/cpp/size.h"
|
| +#include "ppapi/cpp/url_loader.h"
|
| +
|
| +namespace pp {
|
| +class InputEvent;
|
| +}
|
| +
|
| +#define kBackgroundColorR 204
|
| +#define kBackgroundColorG 204
|
| +#define kBackgroundColorB 204
|
| +#define kBackgroundColorA 255
|
| +
|
| +namespace chrome_pdf {
|
| +
|
| +class Stream;
|
| +
|
| +#if defined(OS_MACOSX)
|
| +const uint32 kDefaultKeyModifier = PP_INPUTEVENT_MODIFIER_METAKEY;
|
| +#else // !OS_MACOSX
|
| +const uint32 kDefaultKeyModifier = PP_INPUTEVENT_MODIFIER_CONTROLKEY;
|
| +#endif // OS_MACOSX
|
| +
|
| +// Do one time initialization of the SDK. data is platform specific, on Windows
|
| +// it's the instance of the DLL and it's unused on other platforms.
|
| +bool InitializeSDK(void* data);
|
| +// Tells the SDK that we're shutting down.
|
| +void ShutdownSDK();
|
| +
|
| +// This class encapsulates a PDF rendering engine.
|
| +class PDFEngine {
|
| + public:
|
| +
|
| + enum DocumentPermission {
|
| + PERMISSION_COPY,
|
| + PERMISSION_COPY_ACCESSIBLE,
|
| + PERMISSION_PRINT_LOW_QUALITY,
|
| + PERMISSION_PRINT_HIGH_QUALITY,
|
| + };
|
| +
|
| + // The interface that's provided to the rendering engine.
|
| + class Client {
|
| + public:
|
| + // Informs the client about the document's size in pixels.
|
| + virtual void DocumentSizeUpdated(const pp::Size& size) = 0;
|
| +
|
| + // Informs the client that the given rect needs to be repainted.
|
| + virtual void Invalidate(const pp::Rect& rect) = 0;
|
| +
|
| + // Informs the client to scroll the plugin area by the given offset.
|
| + virtual void Scroll(const pp::Point& point) = 0;
|
| +
|
| + // Scroll the horizontal/vertical scrollbars to a given position.
|
| + virtual void ScrollToX(int position) = 0;
|
| + virtual void ScrollToY(int position) = 0;
|
| +
|
| + // Scroll to the specified page.
|
| + virtual void ScrollToPage(int page) = 0;
|
| +
|
| + // Navigate to the given url.
|
| + virtual void NavigateTo(const std::string& url, bool open_in_new_tab) = 0;
|
| +
|
| + // Updates the cursor.
|
| + virtual void UpdateCursor(PP_CursorType_Dev cursor) = 0;
|
| +
|
| + // Updates the tick marks in the vertical scrollbar.
|
| + virtual void UpdateTickMarks(const std::vector<pp::Rect>& tickmarks) = 0;
|
| +
|
| + // Updates the number of find results for the current search term. If
|
| + // there are no matches 0 should be passed in. Only when the plugin has
|
| + // finished searching should it pass in the final count with final_result
|
| + // set to true.
|
| + virtual void NotifyNumberOfFindResultsChanged(int total,
|
| + bool final_result) = 0;
|
| +
|
| + // Updates the index of the currently selected search item.
|
| + virtual void NotifySelectedFindResultChanged(int current_find_index) = 0;
|
| +
|
| + // Prompts the user for a password to open this document. The callback is
|
| + // called when the password is retrieved.
|
| + virtual void GetDocumentPassword(
|
| + pp::CompletionCallbackWithOutput<pp::Var> callback) = 0;
|
| +
|
| + // Puts up an alert with the given message.
|
| + virtual void Alert(const std::string& message) = 0;
|
| +
|
| + // Puts up a confirm with the given message, and returns true if the user
|
| + // presses OK, or false if they press cancel.
|
| + virtual bool Confirm(const std::string& message) = 0;
|
| +
|
| + // Puts up a prompt with the given message and default answer and returns
|
| + // the answer.
|
| + virtual std::string Prompt(const std::string& question,
|
| + const std::string& default_answer) = 0;
|
| +
|
| + // Returns the url of the pdf.
|
| + virtual std::string GetURL() = 0;
|
| +
|
| + // Send an email.
|
| + virtual void Email(const std::string& to,
|
| + const std::string& cc,
|
| + const std::string& bcc,
|
| + const std::string& subject,
|
| + const std::string& body) = 0;
|
| +
|
| + // Put up the print dialog.
|
| + virtual void Print() = 0;
|
| +
|
| + // Submit the data using HTTP POST.
|
| + virtual void SubmitForm(const std::string& url,
|
| + const void* data,
|
| + int length) = 0;
|
| +
|
| + // Pops up a file selection dialog and returns the result.
|
| + virtual std::string ShowFileSelectionDialog() = 0;
|
| +
|
| + // Creates and returns new URL loader for partial document requests.
|
| + virtual pp::URLLoader CreateURLLoader() = 0;
|
| +
|
| + // Calls the client's OnCallback() function in delay_in_ms with the given
|
| + // id.
|
| + virtual void ScheduleCallback(int id, int delay_in_ms) = 0;
|
| +
|
| + // Searches the given string for "term" and returns the results. Unicode-
|
| + // aware.
|
| + struct SearchStringResult {
|
| + int start_index;
|
| + int length;
|
| + };
|
| + virtual void SearchString(const base::char16* string,
|
| + const base::char16* term,
|
| + bool case_sensitive,
|
| + std::vector<SearchStringResult>* results) = 0;
|
| +
|
| + // Notifies the client that the engine has painted a page from the document.
|
| + virtual void DocumentPaintOccurred() = 0;
|
| +
|
| + // Notifies the client that the document has finished loading.
|
| + virtual void DocumentLoadComplete(int page_count) = 0;
|
| +
|
| + // Notifies the client that the document has failed to load.
|
| + virtual void DocumentLoadFailed() = 0;
|
| +
|
| + virtual pp::Instance* GetPluginInstance() = 0;
|
| +
|
| + // Notifies that an unsupported feature in the PDF was encountered.
|
| + virtual void DocumentHasUnsupportedFeature(const std::string& feature) = 0;
|
| +
|
| + // Notifies the client about document load progress.
|
| + virtual void DocumentLoadProgress(uint32 available, uint32 doc_size) = 0;
|
| +
|
| + // Notifies the client about focus changes for form text fields.
|
| + virtual void FormTextFieldFocusChange(bool in_focus) = 0;
|
| +
|
| + // Returns true if the plugin has been opened within print preview.
|
| + virtual bool IsPrintPreview() = 0;
|
| + };
|
| +
|
| + // Factory method to create an instance of the PDF Engine.
|
| + static PDFEngine* Create(Client* client);
|
| +
|
| + virtual ~PDFEngine() {}
|
| + // Most of these functions are similar to the Pepper functions of the same
|
| + // name, so not repeating the description here unless it's different.
|
| + virtual bool New(const char* url) = 0;
|
| + virtual bool New(const char* url,
|
| + const char* headers) = 0;
|
| + virtual void PageOffsetUpdated(const pp::Point& page_offset) = 0;
|
| + virtual void PluginSizeUpdated(const pp::Size& size) = 0;
|
| + virtual void ScrolledToXPosition(int position) = 0;
|
| + virtual void ScrolledToYPosition(int position) = 0;
|
| + // Paint is called a series of times. Before these n calls are made, PrePaint
|
| + // is called once. After Paint is called n times, PostPaint is called once.
|
| + virtual void PrePaint() = 0;
|
| + virtual void Paint(const pp::Rect& rect,
|
| + pp::ImageData* image_data,
|
| + std::vector<pp::Rect>* ready,
|
| + std::vector<pp::Rect>* pending) = 0;
|
| + virtual void PostPaint() = 0;
|
| + virtual bool HandleDocumentLoad(const pp::URLLoader& loader) = 0;
|
| + virtual bool HandleEvent(const pp::InputEvent& event) = 0;
|
| + virtual uint32_t QuerySupportedPrintOutputFormats() = 0;
|
| + virtual void PrintBegin() = 0;
|
| + virtual pp::Resource PrintPages(
|
| + const PP_PrintPageNumberRange_Dev* page_ranges,
|
| + uint32_t page_range_count,
|
| + const PP_PrintSettings_Dev& print_settings) = 0;
|
| + virtual void PrintEnd() = 0;
|
| + virtual void StartFind(const char* text, bool case_sensitive) = 0;
|
| + virtual bool SelectFindResult(bool forward) = 0;
|
| + virtual void StopFind() = 0;
|
| + virtual void ZoomUpdated(double new_zoom_level) = 0;
|
| + virtual void RotateClockwise() = 0;
|
| + virtual void RotateCounterclockwise() = 0;
|
| + virtual std::string GetSelectedText() = 0;
|
| + virtual std::string GetLinkAtPosition(const pp::Point& point) = 0;
|
| + virtual bool IsSelecting() = 0;
|
| + // Checks the permissions associated with this document.
|
| + virtual bool HasPermission(DocumentPermission permission) const = 0;
|
| + virtual void SelectAll() = 0;
|
| + // Gets the number of pages in the document.
|
| + virtual int GetNumberOfPages() = 0;
|
| + // Gets the 0-based page number of |destination|, or -1 if it does not exist.
|
| + virtual int GetNamedDestinationPage(const std::string& destination) = 0;
|
| + // Gets the index of the first visible page, or -1 if none are visible.
|
| + virtual int GetFirstVisiblePage() = 0;
|
| + // Gets the index of the most visible page, or -1 if none are visible.
|
| + virtual int GetMostVisiblePage() = 0;
|
| + // Gets the rectangle of the page including shadow.
|
| + virtual pp::Rect GetPageRect(int index) = 0;
|
| + // Gets the rectangle of the page excluding any additional areas.
|
| + virtual pp::Rect GetPageContentsRect(int index) = 0;
|
| + // Gets the offset of the vertical scrollbar from the top in document
|
| + // coordinates.
|
| + virtual int GetVerticalScrollbarYPosition() = 0;
|
| + // Paints page thumbnail to the ImageData.
|
| + virtual void PaintThumbnail(pp::ImageData* image_data, int index) = 0;
|
| + // Set color / grayscale rendering modes.
|
| + virtual void SetGrayscale(bool grayscale) = 0;
|
| + // Callback for timer that's set with ScheduleCallback().
|
| + virtual void OnCallback(int id) = 0;
|
| + // Gets the JSON representation of the PDF file
|
| + virtual std::string GetPageAsJSON(int index) = 0;
|
| + // Gets the PDF document's print scaling preference. True if the document can
|
| + // be scaled to fit.
|
| + virtual bool GetPrintScaling() = 0;
|
| +
|
| + // Append blank pages to make a 1-page document to a |num_pages| document.
|
| + // Always retain the first page data.
|
| + virtual void AppendBlankPages(int num_pages) = 0;
|
| + // Append the first page of the document loaded with the |engine| to this
|
| + // document at page |index|.
|
| + virtual void AppendPage(PDFEngine* engine, int index) = 0;
|
| +
|
| + // Allow client to query and reset scroll positions in document coordinates.
|
| + // Note that this is meant for cases where the device scale factor changes,
|
| + // and not for general scrolling - the engine will not repaint due to this.
|
| + virtual pp::Point GetScrollPosition() = 0;
|
| + virtual void SetScrollPosition(const pp::Point& position) = 0;
|
| +
|
| + virtual bool IsProgressiveLoad() = 0;
|
| +};
|
| +
|
| +// Interface for exports that wrap the PDF engine.
|
| +class PDFEngineExports {
|
| + public:
|
| + struct RenderingSettings {
|
| + RenderingSettings(int dpi_x,
|
| + int dpi_y,
|
| + const pp::Rect& bounds,
|
| + bool fit_to_bounds,
|
| + bool stretch_to_bounds,
|
| + bool keep_aspect_ratio,
|
| + bool center_in_bounds,
|
| + bool autorotate)
|
| + : dpi_x(dpi_x), dpi_y(dpi_y), bounds(bounds),
|
| + fit_to_bounds(fit_to_bounds), stretch_to_bounds(stretch_to_bounds),
|
| + keep_aspect_ratio(keep_aspect_ratio),
|
| + center_in_bounds(center_in_bounds), autorotate(autorotate) {
|
| + }
|
| + int dpi_x;
|
| + int dpi_y;
|
| + pp::Rect bounds;
|
| + bool fit_to_bounds;
|
| + bool stretch_to_bounds;
|
| + bool keep_aspect_ratio;
|
| + bool center_in_bounds;
|
| + bool autorotate;
|
| + };
|
| +
|
| + PDFEngineExports() {}
|
| + virtual ~PDFEngineExports() {}
|
| + static PDFEngineExports* Create();
|
| +#if defined(OS_WIN)
|
| + // See the definition of RenderPDFPageToDC in pdf.cc for details.
|
| + virtual bool RenderPDFPageToDC(const void* pdf_buffer,
|
| + int buffer_size,
|
| + int page_number,
|
| + const RenderingSettings& settings,
|
| + HDC dc) = 0;
|
| +#endif // OS_WIN
|
| + // See the definition of RenderPDFPageToBitmap in pdf.cc for details.
|
| + virtual bool RenderPDFPageToBitmap(const void* pdf_buffer,
|
| + int pdf_buffer_size,
|
| + int page_number,
|
| + const RenderingSettings& settings,
|
| + void* bitmap_buffer) = 0;
|
| + virtual bool GetPDFDocInfo(const void* pdf_buffer,
|
| + int buffer_size,
|
| + int* page_count,
|
| + double* max_page_width) = 0;
|
| +};
|
| +
|
| +} // namespace chrome_pdf
|
| +
|
| +#endif // PDF_PDF_ENGINE_H_
|
|
|
| Property changes on: pdf\pdf_engine.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|