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

Side by Side Diff: ppapi/examples/printing/printing.cc

Issue 10096001: Remove support for bitmap printing in pepper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "ppapi/cpp/dev/buffer_dev.h"
5 #include "ppapi/cpp/dev/printing_dev.h" 6 #include "ppapi/cpp/dev/printing_dev.h"
6 #include "ppapi/cpp/image_data.h" 7 #include "ppapi/cpp/image_data.h"
7 #include "ppapi/cpp/instance.h" 8 #include "ppapi/cpp/instance.h"
8 #include "ppapi/cpp/module.h" 9 #include "ppapi/cpp/module.h"
9 #include "ppapi/cpp/rect.h" 10 #include "ppapi/cpp/rect.h"
10 #include "ppapi/utility/completion_callback_factory.h" 11 #include "ppapi/utility/completion_callback_factory.h"
11 12
12 namespace { 13 namespace {
13 14
14 void FillRect(pp::ImageData* image, int left, int top, int width, int height, 15 const char pdf_data[] = "%PDF-1.4\r"
15 uint32_t color) { 16 "% \r"
16 for (int y = std::max(0, top); 17 "1 0 obj<</Type/FontDescriptor/FontBBox[-50 -207 1447 1000]/FontName/Verdana/Fla gs 32/StemV 92/CapHeight 734/XHeight 546/Ascent 1005/Descent -209/ItalicAngle 0/ FontFamily(Verdana)/FontStretch/Normal/FontWeight 400>>\r"
17 y < std::min(image->size().height(), top + height); 18 "2 0 obj<</Type/Font/Subtype/TrueType/Encoding/UniCNS-UTF16-H/BaseFont/Verdana/N ame/Verdana/FontDescriptor 1 0 R/FirstChar 72/LastChar 114/Widths[ 750 420 454 6 92 556 843 748 787 602 787 695 684 616 731 684 989 685 614 685 454 454 454 818 6 35 635 600 623 521 623 595 351 623 633 274 343 591 274 972 633 607 623 623 426]> >\r"
18 y++) { 19 "4 0 obj<</Type/Page/Parent 3 0 R/MediaBox[0 0 612 792]/Contents 5 0 R/Resources <</ProcSet[/PDF/Text/ColorC]/Font<</N2 2 0 R>> >> >>endobj\r"
19 for (int x = std::max(0, left); 20 "5 0 obj<</Length 70>>stream\r"
20 x < std::min(image->size().width(), left + width); 21 "BT/N2 24 Tf 100 692 Td(Hello)Tj ET\r"
21 x++) 22 "BT/N2 24 Tf 200 692 Td(World)Tj ET\r"
22 *image->GetAddr32(pp::Point(x, y)) = color; 23 "\r"
23 } 24 "endstream\r"
24 } 25 "endobj\r"
26 "3 0 obj<</Type/Pages/Kids[ 4 0 R]/Count 1>>endobj\r"
27 "6 0 obj<</Type/Catalog/Pages 3 0 R>>endobj\r"
28 "xref\r"
29 "0 7\r"
30 "0000000000 65535 f \r"
31 "0000000015 00000 n \r"
32 "0000000230 00000 n \r"
33 "0000000805 00000 n \r"
34 "0000000551 00000 n \r"
35 "0000000689 00000 n \r"
36 "0000000855 00000 n \r"
37 "trailer<</Size 7/Root 6 0 R>>\r"
38 "startxref\r"
39 "898\r"
40 "%%EOF";
25 41
26 } // namespace 42 } // namespace
27 43
28 class MyInstance : public pp::Instance, public pp::Printing_Dev { 44 class MyInstance : public pp::Instance, public pp::Printing_Dev {
29 public: 45 public:
30 explicit MyInstance(PP_Instance instance) 46 explicit MyInstance(PP_Instance instance)
31 : pp::Instance(instance), 47 : pp::Instance(instance),
32 pp::Printing_Dev(this) { 48 pp::Printing_Dev(this) {
33 } 49 }
34 virtual ~MyInstance() {} 50 virtual ~MyInstance() {}
35 51
36 virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]) { 52 virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]) {
37 return true; 53 return true;
38 } 54 }
39 55
40 virtual uint32_t QuerySupportedPrintOutputFormats() { 56 virtual uint32_t QuerySupportedPrintOutputFormats() {
41 return PP_PRINTOUTPUTFORMAT_RASTER; 57 return PP_PRINTOUTPUTFORMAT_PDF;
42 } 58 }
43 59
44 virtual int32_t PrintBegin(const PP_PrintSettings_Dev& print_settings) { 60 virtual int32_t PrintBegin(const PP_PrintSettings_Dev& print_settings) {
45 return 1; 61 return 1;
46 } 62 }
47 63
48 virtual pp::Resource PrintPages( 64 virtual pp::Resource PrintPages(
49 const PP_PrintPageNumberRange_Dev* page_ranges, 65 const PP_PrintPageNumberRange_Dev* page_ranges,
50 uint32_t page_range_count) { 66 uint32_t page_range_count) {
51 pp::Size size(100, 100); 67 int pdf_len = strlen(pdf_data);
viettrungluu 2012/04/16 04:53:53 nit: size_t
52 pp::ImageData image(this, PP_IMAGEDATAFORMAT_BGRA_PREMUL, size, true); 68 pp::Buffer_Dev buffer(this, pdf_len);
53 FillRect(&image, 0, 0, size.width(), size.height(), 0xFFFFFFFF);
54 69
55 FillRect(&image, 0, 0, 10, 10, 0xFF000000); 70 memcpy(buffer.data(), pdf_data, pdf_len);
56 FillRect(&image, size.width() - 11, size.height() - 11, 10, 10, 0xFF000000); 71 return buffer;
57 return image;
58 } 72 }
59 73
60 virtual void PrintEnd() { 74 virtual void PrintEnd() {
61 } 75 }
62 76
63 virtual bool IsPrintScalingDisabled() { 77 virtual bool IsPrintScalingDisabled() {
64 return true; 78 return true;
65 } 79 }
66 }; 80 };
67 81
(...skipping 10 matching lines...) Expand all
78 92
79 namespace pp { 93 namespace pp {
80 94
81 // Factory function for your specialization of the Module object. 95 // Factory function for your specialization of the Module object.
82 Module* CreateModule() { 96 Module* CreateModule() {
83 return new MyModule(); 97 return new MyModule();
84 } 98 }
85 99
86 } // namespace pp 100 } // namespace pp
87 101
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698