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

Side by Side Diff: printing/pdf_metafile_skia.cc

Issue 7235024: roll skia (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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 | « DEPS ('k') | skia/skia.gyp » ('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 #include "printing/pdf_metafile_skia.h" 5 #include "printing/pdf_metafile_skia.h"
6 6
7 #include "base/eintr_wrapper.h" 7 #include "base/eintr_wrapper.h"
8 #include "base/file_descriptor_posix.h" 8 #include "base/file_descriptor_posix.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/hash_tables.h" 10 #include "base/hash_tables.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "skia/ext/vector_platform_device_skia.h" 12 #include "skia/ext/vector_platform_device_skia.h"
13 #include "third_party/skia/include/core/SkData.h"
13 #include "third_party/skia/include/core/SkRefCnt.h" 14 #include "third_party/skia/include/core/SkRefCnt.h"
14 #include "third_party/skia/include/core/SkScalar.h" 15 #include "third_party/skia/include/core/SkScalar.h"
15 #include "third_party/skia/include/core/SkStream.h" 16 #include "third_party/skia/include/core/SkStream.h"
16 #include "third_party/skia/include/core/SkTypeface.h" 17 #include "third_party/skia/include/core/SkTypeface.h"
17 #include "third_party/skia/include/pdf/SkPDFDevice.h" 18 #include "third_party/skia/include/pdf/SkPDFDevice.h"
18 #include "third_party/skia/include/pdf/SkPDFDocument.h" 19 #include "third_party/skia/include/pdf/SkPDFDocument.h"
19 #include "third_party/skia/include/pdf/SkPDFFont.h" 20 #include "third_party/skia/include/pdf/SkPDFFont.h"
20 #include "third_party/skia/include/pdf/SkPDFPage.h" 21 #include "third_party/skia/include/pdf/SkPDFPage.h"
21 #include "ui/gfx/point.h" 22 #include "ui/gfx/point.h"
22 #include "ui/gfx/rect.h" 23 #include "ui/gfx/rect.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 119
119 uint32 PdfMetafileSkia::GetDataSize() const { 120 uint32 PdfMetafileSkia::GetDataSize() const {
120 return data_->pdf_stream_.getOffset(); 121 return data_->pdf_stream_.getOffset();
121 } 122 }
122 123
123 bool PdfMetafileSkia::GetData(void* dst_buffer, 124 bool PdfMetafileSkia::GetData(void* dst_buffer,
124 uint32 dst_buffer_size) const { 125 uint32 dst_buffer_size) const {
125 if (dst_buffer_size < GetDataSize()) 126 if (dst_buffer_size < GetDataSize())
126 return false; 127 return false;
127 128
128 memcpy(dst_buffer, data_->pdf_stream_.getStream(), dst_buffer_size); 129 SkAutoDataUnref data(data_->pdf_stream_.copyToData());
130 memcpy(dst_buffer, data.bytes(), dst_buffer_size);
129 return true; 131 return true;
130 } 132 }
131 133
132 bool PdfMetafileSkia::SaveTo(const FilePath& file_path) const { 134 bool PdfMetafileSkia::SaveTo(const FilePath& file_path) const {
133 DCHECK_GT(data_->pdf_stream_.getOffset(), 0U); 135 DCHECK_GT(data_->pdf_stream_.getOffset(), 0U);
134 if (file_util::WriteFile(file_path, data_->pdf_stream_.getStream(), 136 SkAutoDataUnref data(data_->pdf_stream_.copyToData());
137 if (file_util::WriteFile(file_path,
138 reinterpret_cast<const char*>(data.data()),
135 GetDataSize()) != static_cast<int>(GetDataSize())) { 139 GetDataSize()) != static_cast<int>(GetDataSize())) {
136 DLOG(ERROR) << "Failed to save file " << file_path.value().c_str(); 140 DLOG(ERROR) << "Failed to save file " << file_path.value().c_str();
137 return false; 141 return false;
138 } 142 }
139 return true; 143 return true;
140 } 144 }
141 145
142 gfx::Rect PdfMetafileSkia::GetPageBounds(unsigned int page_number) const { 146 gfx::Rect PdfMetafileSkia::GetPageBounds(unsigned int page_number) const {
143 // TODO(vandebo) add a method to get the page size for a given page to 147 // TODO(vandebo) add a method to get the page size for a given page to
144 // SkPDFDocument. 148 // SkPDFDocument.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 http://codereview.chromium.org/7200040/diff/1/webkit/plugins/ppapi/ppapi_plugin_ instance.cc 186 http://codereview.chromium.org/7200040/diff/1/webkit/plugins/ppapi/ppapi_plugin_ instance.cc
183 */ 187 */
184 bool PdfMetafileSkia::RenderPage(unsigned int page_number, 188 bool PdfMetafileSkia::RenderPage(unsigned int page_number,
185 CGContextRef context, 189 CGContextRef context,
186 const CGRect rect, 190 const CGRect rect,
187 bool shrink_to_fit, 191 bool shrink_to_fit,
188 bool stretch_to_fit, 192 bool stretch_to_fit,
189 bool center_horizontally, 193 bool center_horizontally,
190 bool center_vertically) const { 194 bool center_vertically) const {
191 DCHECK_GT(data_->pdf_stream_.getOffset(), 0U); 195 DCHECK_GT(data_->pdf_stream_.getOffset(), 0U);
192 if (data_->pdf_cg_.GetDataSize() == 0) 196 if (data_->pdf_cg_.GetDataSize() == 0) {
193 data_->pdf_cg_.InitFromData(data_->pdf_stream_.getStream(), 197 SkAutoDataUnref data(data_->pdf_stream_.copyToData());
194 data_->pdf_stream_.getOffset()); 198 data_->pdf_cg_.InitFromData(data.bytes(), data.size());
199 }
195 return data_->pdf_cg_.RenderPage(page_number, context, rect, shrink_to_fit, 200 return data_->pdf_cg_.RenderPage(page_number, context, rect, shrink_to_fit,
196 stretch_to_fit, center_horizontally, 201 stretch_to_fit, center_horizontally,
197 center_vertically); 202 center_vertically);
198 } 203 }
199 #endif 204 #endif
200 205
201 #if defined(OS_CHROMEOS) 206 #if defined(OS_CHROMEOS)
202 bool PdfMetafileSkia::SaveToFD(const base::FileDescriptor& fd) const { 207 bool PdfMetafileSkia::SaveToFD(const base::FileDescriptor& fd) const {
203 DCHECK_GT(data_->pdf_stream_.getOffset(), 0U); 208 DCHECK_GT(data_->pdf_stream_.getOffset(), 0U);
204 209
205 if (fd.fd < 0) { 210 if (fd.fd < 0) {
206 DLOG(ERROR) << "Invalid file descriptor!"; 211 DLOG(ERROR) << "Invalid file descriptor!";
207 return false; 212 return false;
208 } 213 }
209 214
210 bool result = true; 215 bool result = true;
211 if (file_util::WriteFileDescriptor(fd.fd, data_->pdf_stream_.getStream(), 216 SkAutoDataUnref data(data_->pdf_stream_.copyToData());
217 if (file_util::WriteFileDescriptor(fd.fd,
218 reinterpret_cast<const char*>(data.data()),
212 GetDataSize()) != 219 GetDataSize()) !=
213 static_cast<int>(GetDataSize())) { 220 static_cast<int>(GetDataSize())) {
214 DLOG(ERROR) << "Failed to save file with fd " << fd.fd; 221 DLOG(ERROR) << "Failed to save file with fd " << fd.fd;
215 result = false; 222 result = false;
216 } 223 }
217 224
218 if (fd.auto_close) { 225 if (fd.auto_close) {
219 if (HANDLE_EINTR(close(fd.fd)) < 0) { 226 if (HANDLE_EINTR(close(fd.fd)) < 0) {
220 DPLOG(WARNING) << "close"; 227 DPLOG(WARNING) << "close";
221 result = false; 228 result = false;
222 } 229 }
223 } 230 }
224 return result; 231 return result;
225 } 232 }
226 #endif 233 #endif
227 234
228 PdfMetafileSkia::PdfMetafileSkia() 235 PdfMetafileSkia::PdfMetafileSkia()
229 : data_(new PdfMetafileSkiaData), 236 : data_(new PdfMetafileSkiaData),
230 draft_(false) {} 237 draft_(false) {}
231 238
232 void PdfMetafileSkia::set_draft(bool draft) const { 239 void PdfMetafileSkia::set_draft(bool draft) const {
233 draft_ = draft; 240 draft_ = draft;
234 } 241 }
235 } // namespace printing 242 } // namespace printing
OLDNEW
« no previous file with comments | « DEPS ('k') | skia/skia.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698