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 #ifndef PDF_PDF_H_ | 5 #ifndef PDF_PDF_H_ |
6 #define PDF_PDF_H_ | 6 #define PDF_PDF_H_ |
7 | 7 |
| 8 #include "ppapi/c/ppb.h" |
8 #include "ppapi/cpp/module.h" | 9 #include "ppapi/cpp/module.h" |
9 | 10 |
10 namespace chrome_pdf { | 11 namespace chrome_pdf { |
11 | 12 |
12 class PDFModule : public pp::Module { | 13 class PDFModule : public pp::Module { |
13 public: | 14 public: |
14 PDFModule(); | 15 PDFModule(); |
15 virtual ~PDFModule(); | 16 virtual ~PDFModule(); |
16 | 17 |
17 // pp::Module implementation. | 18 // pp::Module implementation. |
18 virtual bool Init(); | 19 virtual bool Init(); |
19 virtual pp::Instance* CreateInstance(PP_Instance instance); | 20 virtual pp::Instance* CreateInstance(PP_Instance instance); |
20 }; | 21 }; |
21 | 22 |
| 23 int PPP_InitializeModule(PP_Module module_id, |
| 24 PPB_GetInterface get_browser_interface); |
| 25 void PPP_ShutdownModule(); |
| 26 const void* PPP_GetInterface(const char* interface_name); |
| 27 |
| 28 #if defined(OS_WIN) |
| 29 // |pdf_buffer| is the buffer that contains the entire PDF document to be |
| 30 // rendered. |
| 31 // |buffer_size| is the size of |pdf_buffer| in bytes. |
| 32 // |page_number| is the 0-based index of the page to be rendered. |
| 33 // |dc| is the device context to render into. |
| 34 // |dpi| and |dpi_y| is the resolution. If the value is -1, the dpi from the DC |
| 35 // will be used. |
| 36 // |bounds_origin_x|, |bounds_origin_y|, |bounds_width| and |bounds_height| |
| 37 // specify a bounds rectangle within the DC in which to render the PDF |
| 38 // page. |
| 39 // |fit_to_bounds| specifies whether the output should be shrunk to fit the |
| 40 // supplied bounds if the page size is larger than the bounds in any |
| 41 // dimension. If this is false, parts of the PDF page that lie outside |
| 42 // the bounds will be clipped. |
| 43 // |stretch_to_bounds| specifies whether the output should be stretched to fit |
| 44 // the supplied bounds if the page size is smaller than the bounds in any |
| 45 // dimension. |
| 46 // If both |fit_to_bounds| and |stretch_to_bounds| are true, then |
| 47 // |fit_to_bounds| is honored first. |
| 48 // |keep_aspect_ratio| If any scaling is to be done is true, this flag |
| 49 // specifies whether the original aspect ratio of the page should be |
| 50 // preserved while scaling. |
| 51 // |center_in_bounds| specifies whether the final image (after any scaling is |
| 52 // done) should be centered within the given bounds. |
| 53 // |autorotate| specifies whether the final image should be rotated to match |
| 54 // the output bound. |
| 55 // Returns false if the document or the page number are not valid. |
| 56 bool RenderPDFPageToDC(const void* pdf_buffer, |
| 57 int buffer_size, |
| 58 int page_number, |
| 59 HDC dc, |
| 60 int dpi, |
| 61 int bounds_origin_x, |
| 62 int bounds_origin_y, |
| 63 int bounds_width, |
| 64 int bounds_height, |
| 65 bool fit_to_bounds, |
| 66 bool stretch_to_bounds, |
| 67 bool keep_aspect_ratio, |
| 68 bool center_in_bounds, |
| 69 bool autorotate); |
| 70 #endif |
| 71 // |page_count| and |max_page_width| are optional and can be NULL. |
| 72 // Returns false if the document is not valid. |
| 73 bool GetPDFDocInfo(const void* pdf_buffer, |
| 74 int buffer_size, int* page_count, |
| 75 double* max_page_width); |
| 76 |
| 77 // Gets the dimensions of a specific page in a document. |
| 78 // |pdf_buffer| is the buffer that contains the entire PDF document to be |
| 79 // rendered. |
| 80 // |pdf_buffer_size| is the size of |pdf_buffer| in bytes. |
| 81 // |page_number| is the page number that the function will get the dimensions |
| 82 // of. |
| 83 // |width| is the output for the width of the page in points. |
| 84 // |height| is the output for the height of the page in points. |
| 85 // Returns false if the document or the page number are not valid. |
| 86 bool GetPDFPageSizeByIndex(const void* pdf_buffer, |
| 87 int pdf_buffer_size, int page_number, |
| 88 double* width, double* height); |
| 89 |
| 90 // Renders PDF page into 4-byte per pixel BGRA color bitmap. |
| 91 // |pdf_buffer| is the buffer that contains the entire PDF document to be |
| 92 // rendered. |
| 93 // |pdf_buffer_size| is the size of |pdf_buffer| in bytes. |
| 94 // |page_number| is the 0-based index of the page to be rendered. |
| 95 // |bitmap_buffer| is the output buffer for bitmap. |
| 96 // |bitmap_width| is the width of the output bitmap. |
| 97 // |bitmap_height| is the height of the output bitmap. |
| 98 // |dpi| is the resolutions. |
| 99 // |autorotate| specifies whether the final image should be rotated to match |
| 100 // the output bound. |
| 101 // Returns false if the document or the page number are not valid. |
| 102 bool RenderPDFPageToBitmap(const void* pdf_buffer, |
| 103 int pdf_buffer_size, |
| 104 int page_number, |
| 105 void* bitmap_buffer, |
| 106 int bitmap_width, |
| 107 int bitmap_height, |
| 108 int dpi, |
| 109 bool autorotate); |
| 110 |
22 } // namespace chrome_pdf | 111 } // namespace chrome_pdf |
23 | 112 |
24 #endif // PDF_PDF_H_ | 113 #endif // PDF_PDF_H_ |
OLD | NEW |