Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(683)

Side by Side Diff: webkit/plugins/ppapi/ppapi_plugin_instance.h

Issue 7065011: Change printing of PDFs for preview on Windows to not rasterize. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « printing/printing.gyp ('k') | webkit/plugins/ppapi/ppapi_plugin_instance.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 5 #ifndef WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/basictypes.h" 13 #include "base/basictypes.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
16 #include "base/string16.h" 16 #include "base/string16.h"
17 #include "googleurl/src/gurl.h" 17 #include "googleurl/src/gurl.h"
18 #include "ppapi/c/dev/pp_cursor_type_dev.h" 18 #include "ppapi/c/dev/pp_cursor_type_dev.h"
19 #include "ppapi/c/dev/ppp_graphics_3d_dev.h" 19 #include "ppapi/c/dev/ppp_graphics_3d_dev.h"
20 // TODO(dmichael): Remove the 0.3 printing interface and remove the following 20 // TODO(dmichael): Remove the 0.3 printing interface and remove the following
21 // #define. 21 // #define.
22 #define PPP_PRINTING_DEV_USE_0_4 1 22 #define PPP_PRINTING_DEV_USE_0_4 1
23 #include "ppapi/c/dev/ppp_printing_dev.h" 23 #include "ppapi/c/dev/ppp_printing_dev.h"
24 #include "ppapi/c/pp_instance.h" 24 #include "ppapi/c/pp_instance.h"
25 #include "ppapi/c/pp_resource.h" 25 #include "ppapi/c/pp_resource.h"
26 #include "third_party/skia/include/core/SkBitmap.h" 26 #include "third_party/skia/include/core/SkBitmap.h"
27 #include "third_party/skia/include/core/SkRefCnt.h"
27 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h" 28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h"
28 #include "ui/gfx/rect.h" 29 #include "ui/gfx/rect.h"
29 #include "webkit/plugins/ppapi/plugin_delegate.h" 30 #include "webkit/plugins/ppapi/plugin_delegate.h"
30 31
31 typedef struct NPObject NPObject; 32 typedef struct NPObject NPObject;
32 struct PP_Var; 33 struct PP_Var;
33 struct PPB_Instance; 34 struct PPB_Instance;
34 struct PPB_Instance_Private; 35 struct PPB_Instance_Private;
35 struct PPB_Find_Dev; 36 struct PPB_Find_Dev;
36 struct PPB_Fullscreen_Dev; 37 struct PPB_Fullscreen_Dev;
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 bool checked_for_plugin_messaging_interface_; 369 bool checked_for_plugin_messaging_interface_;
369 370
370 // This is only valid between a successful PrintBegin call and a PrintEnd 371 // This is only valid between a successful PrintBegin call and a PrintEnd
371 // call. 372 // call.
372 PP_PrintSettings_Dev current_print_settings_; 373 PP_PrintSettings_Dev current_print_settings_;
373 #if defined(OS_MACOSX) 374 #if defined(OS_MACOSX)
374 // On the Mac, when we draw the bitmap to the PDFContext, it seems necessary 375 // On the Mac, when we draw the bitmap to the PDFContext, it seems necessary
375 // to keep the pixels valid until CGContextEndPage is called. We use this 376 // to keep the pixels valid until CGContextEndPage is called. We use this
376 // variable to hold on to the pixels. 377 // variable to hold on to the pixels.
377 scoped_refptr<PPB_ImageData_Impl> last_printed_page_; 378 scoped_refptr<PPB_ImageData_Impl> last_printed_page_;
378 #elif defined(OS_LINUX) 379 #endif // defined(OS_MACOSX)
379 // On Linux, all pages need to be written to a PDF file in one shot. However, 380 #if WEBKIT_USING_SKIA
380 // when users print only a subset of all the pages, it is impossible to know 381 // When printing to PDF (print preview, Linux) the entire document goes into
381 // if a call to PrintPage() is the last call. Thus in PrintPage(), just store 382 // one metafile. However, when users print only a subset of all the pages,
382 // the page number in |ranges_|. 383 // it is impossible to know if a call to PrintPage() is the last call.
384 // Thus in PrintPage(), just store the page number in |ranges_|.
383 // The hack is in PrintEnd(), where a valid |canvas_| is preserved in 385 // The hack is in PrintEnd(), where a valid |canvas_| is preserved in
384 // PrintWebViewHelper::PrintPages. This makes it possible to generate the 386 // PrintWebViewHelper::PrintPages. This makes it possible to generate the
385 // entire PDF given the variables below: 387 // entire PDF given the variables below:
386 // 388 //
387 // The most recently used WebCanvas, guaranteed to be valid. 389 // The most recently used WebCanvas, guaranteed to be valid.
388 WebKit::WebCanvas* canvas_; 390 SkRefPtr<WebKit::WebCanvas> canvas_;
389 // An array of page ranges. 391 // An array of page ranges.
390 std::vector<PP_PrintPageNumberRange_Dev> ranges_; 392 std::vector<PP_PrintPageNumberRange_Dev> ranges_;
391 #endif // defined(OS_LINUX) 393 #endif // WEBKIT_USING_SKIA
392 394
393 // The plugin print interface. This nested struct adds functions needed for 395 // The plugin print interface. This nested struct adds functions needed for
394 // backwards compatibility. 396 // backwards compatibility.
395 struct PPP_Printing_Dev_Combined : public PPP_Printing_Dev { 397 struct PPP_Printing_Dev_Combined : public PPP_Printing_Dev {
396 // Conversion constructor for the most current interface. Sets all old 398 // Conversion constructor for the most current interface. Sets all old
397 // functions to NULL, so we know not to try to use them. 399 // functions to NULL, so we know not to try to use them.
398 PPP_Printing_Dev_Combined(const PPP_Printing_Dev& base_if) 400 PPP_Printing_Dev_Combined(const PPP_Printing_Dev& base_if)
399 : PPP_Printing_Dev(base_if), 401 : PPP_Printing_Dev(base_if),
400 QuerySupportedFormats_0_3(NULL), 402 QuerySupportedFormats_0_3(NULL),
401 Begin_0_3(NULL) {} 403 Begin_0_3(NULL) {}
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 typedef std::map<NPObject*, ObjectVar*> NPObjectToObjectVarMap; 456 typedef std::map<NPObject*, ObjectVar*> NPObjectToObjectVarMap;
455 NPObjectToObjectVarMap np_object_to_object_var_; 457 NPObjectToObjectVarMap np_object_to_object_var_;
456 458
457 DISALLOW_COPY_AND_ASSIGN(PluginInstance); 459 DISALLOW_COPY_AND_ASSIGN(PluginInstance);
458 }; 460 };
459 461
460 } // namespace ppapi 462 } // namespace ppapi
461 } // namespace webkit 463 } // namespace webkit
462 464
463 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 465 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
OLDNEW
« no previous file with comments | « printing/printing.gyp ('k') | webkit/plugins/ppapi/ppapi_plugin_instance.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698