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

Unified Diff: printing/pdf_metafile_skia.cc

Issue 7274026: PrintPreview: Implement GetMetafileForCurrentPage() function in PdfMetafileSkia. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 6 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 side-by-side diff with in-line comments
Download patch
« printing/pdf_metafile_skia.h ('K') | « printing/pdf_metafile_skia.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: printing/pdf_metafile_skia.cc
diff --git a/printing/pdf_metafile_skia.cc b/printing/pdf_metafile_skia.cc
index 0ef33f27955ff36ded7ee81cf9774ffd44187c57..2b4aa3d973da65dd5e3a55bd7d79e6653a270995 100644
--- a/printing/pdf_metafile_skia.cc
+++ b/printing/pdf_metafile_skia.cc
@@ -51,7 +51,9 @@ bool PdfMetafileSkia::InitFromData(const void* src_buffer,
SkDevice* PdfMetafileSkia::StartPageForVectorCanvas(
const gfx::Size& page_size, const gfx::Rect& content_area,
const float& scale_factor) {
- DCHECK(data_->current_page_.get() == NULL);
+ if (did_finish_page_)
vandebo (ex-Chrome) 2011/06/29 20:23:45 I think this should just be DCHECK(did_finish_page
kmadhusu 2011/06/30 06:10:55 Renamed the variable to outstanding_finish_page_.
+ data_->current_page_ = NULL;
+ did_finish_page_ = false;
// Adjust for the margins and apply the scale factor.
SkMatrix transform;
@@ -84,7 +86,7 @@ bool PdfMetafileSkia::FinishPage() {
DCHECK(data_->current_page_.get());
data_->pdf_doc_.appendPage(data_->current_page_);
- data_->current_page_ = NULL;
+ did_finish_page_ = true;
return true;
}
@@ -93,9 +95,10 @@ bool PdfMetafileSkia::FinishDocument() {
if (data_->pdf_stream_.getOffset())
return true;
- if (data_->current_page_.get())
+ if (!did_finish_page_ && data_->current_page_.get())
vandebo (ex-Chrome) 2011/06/29 20:23:45 Don't (shouldn't) need to current_page_.get() chec
kmadhusu 2011/06/30 06:10:55 Done.
FinishPage();
+ data_->current_page_ = NULL;
base::hash_set<SkFontID> font_set;
const SkTDArray<SkPDFPage*>& pages = data_->pdf_doc_.getPages();
@@ -234,9 +237,29 @@ bool PdfMetafileSkia::SaveToFD(const base::FileDescriptor& fd) const {
PdfMetafileSkia::PdfMetafileSkia()
: data_(new PdfMetafileSkiaData),
- draft_(false) {}
+ draft_(false),
+ did_finish_page_(false) {}
void PdfMetafileSkia::set_draft(bool draft) const {
draft_ = draft;
}
+
+PdfMetafileSkia* PdfMetafileSkia::GetMetafileForCurrentPage() {
+ SkPDFDocument pdf_doc;
+ SkDynamicMemoryWStream pdf_stream;
+ if (!pdf_doc.appendPage(data_->current_page_))
+ return NULL;
+
+ if (!pdf_doc.emitPDF(&pdf_stream))
+ return NULL;
+
+ SkAutoDataUnref data(pdf_stream.copyToData());
+ if (data.size() == 0)
+ return NULL;
+
+ PdfMetafileSkia* metafile = new printing::PdfMetafileSkia;
+ metafile->InitFromData(data.bytes(),data.size());
+ return metafile;
+}
+
} // namespace printing
« printing/pdf_metafile_skia.h ('K') | « printing/pdf_metafile_skia.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698