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

Unified Diff: chrome/renderer/mock_printer.cc

Issue 149644: Print only the focused frame. This makes more sense than trying to print all... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/mock_printer.cc
===================================================================
--- chrome/renderer/mock_printer.cc (revision 20864)
+++ chrome/renderer/mock_printer.cc (working copy)
@@ -5,9 +5,7 @@
#include "chrome/renderer/mock_printer.h"
#include "base/file_util.h"
-#include "base/gfx/png_encoder.h"
#include "base/logging.h"
-#include "base/md5.h"
#include "base/shared_memory.h"
#include "chrome/common/ipc_message_utils.h"
#include "chrome/common/render_messages.h"
@@ -116,8 +114,12 @@
base::SharedMemory emf_data(params.metafile_data_handle, true,
GetCurrentProcess());
emf_data.Map(params.data_size);
- MockPrinterPage* page_data = driver_.LoadSource(emf_data.memory(),
- params.data_size);
+ printing::NativeMetafile metafile;
+ metafile.CreateFromData(emf_data.memory(), params.data_size);
+ printing::Image image(metafile);
+ MockPrinterPage* page_data = new MockPrinterPage(emf_data.memory(),
+ params.data_size,
+ image);
if (!page_data) {
printer_status_ = PRINTER_ERROR;
return;
@@ -140,6 +142,13 @@
return page_number_;
}
+const MockPrinterPage* MockPrinter::GetPrintedPage(size_t pageno) const {
+ if (pages_.size() > pageno)
+ return pages_[pageno];
+ else
+ return NULL;
+}
+
int MockPrinter::GetWidth(size_t page) const {
if (printer_status_ != PRINTER_READY || page >= pages_.size())
return -1;
@@ -152,27 +161,10 @@
return pages_[page]->height();
}
-bool MockPrinter::GetSourceChecksum(size_t page, std::string* checksum) const {
- if (printer_status_ != PRINTER_READY || page >= pages_.size())
- return false;
- return GetChecksum(pages_[page]->source_data(), pages_[page]->source_size(),
- checksum);
-}
-
bool MockPrinter::GetBitmapChecksum(size_t page, std::string* checksum) const {
if (printer_status_ != PRINTER_READY || page >= pages_.size())
return false;
- return GetChecksum(pages_[page]->bitmap_data(), pages_[page]->bitmap_size(),
- checksum);
-}
-
-bool MockPrinter::GetBitmap(size_t page,
- const void** data,
- size_t* size) const {
- if (printer_status_ != PRINTER_READY || page >= pages_.size())
- return false;
- *data = pages_[page]->bitmap_data();
- *size = pages_[page]->bitmap_size();
+ *checksum = pages_[page]->image().checksum();
return true;
}
@@ -191,17 +183,8 @@
const std::wstring& filename) const {
if (printer_status_ != PRINTER_READY || page >= pages_.size())
return false;
- int width = pages_[page]->width();
- int height = pages_[page]->height();
- int row_byte_width = width * 4;
- const uint8* bitmap_data = pages_[page]->bitmap_data();
- std::vector<unsigned char> compressed;
- PNGEncoder::Encode(bitmap_data,
- PNGEncoder::FORMAT_BGRA, width, height,
- row_byte_width, true, &compressed);
- file_util::WriteFile(filename,
- reinterpret_cast<char*>(&*compressed.begin()),
- compressed.size());
+
+ pages_[page]->image().SaveToPng(filename);
return true;
}
@@ -209,11 +192,3 @@
return ++current_document_cookie_;
}
-bool MockPrinter::GetChecksum(const void* data,
- size_t size,
- std::string* checksum) const {
- MD5Digest digest;
- MD5Sum(data, size, &digest);
- checksum->assign(HexEncode(&digest, sizeof(digest)));
- return true;
-}

Powered by Google App Engine
This is Rietveld 408576698