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" | |
9 #include "ppapi/cpp/module.h" | 8 #include "ppapi/cpp/module.h" |
10 | 9 |
11 namespace chrome_pdf { | 10 namespace chrome_pdf { |
12 | 11 |
13 class PDFModule : public pp::Module { | 12 class PDFModule : public pp::Module { |
14 public: | 13 public: |
15 PDFModule(); | 14 PDFModule(); |
16 virtual ~PDFModule(); | 15 virtual ~PDFModule(); |
17 | 16 |
18 // pp::Module implementation. | 17 // pp::Module implementation. |
19 virtual bool Init(); | 18 virtual bool Init(); |
20 virtual pp::Instance* CreateInstance(PP_Instance instance); | 19 virtual pp::Instance* CreateInstance(PP_Instance instance); |
21 }; | 20 }; |
22 | 21 |
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 | |
111 } // namespace chrome_pdf | 22 } // namespace chrome_pdf |
112 | 23 |
113 #endif // PDF_PDF_H_ | 24 #endif // PDF_PDF_H_ |
OLD | NEW |