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

Unified Diff: chrome/browser/local_discovery/privet_http_impl.cc

Issue 211843004: Tunnel PWGRasterConfig capability to the ticket and to the utility process (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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/browser/local_discovery/privet_http_impl.cc
diff --git a/chrome/browser/local_discovery/privet_http_impl.cc b/chrome/browser/local_discovery/privet_http_impl.cc
index 6ae0e7c81bbfa0408148cd3f17ff4f77589247bc..81feb8b333b524275b7bcb35d0971680e926cbeb 100644
--- a/chrome/browser/local_discovery/privet_http_impl.cc
+++ b/chrome/browser/local_discovery/privet_http_impl.cc
@@ -16,6 +16,7 @@
#include "chrome/browser/local_discovery/privet_constants.h"
#include "components/cloud_devices/printer_description.h"
#include "net/base/url_util.h"
+#include "printing/bitmap_transform_settings.h"
#include "printing/units.h"
#include "ui/gfx/text_elider.h"
#include "url/gurl.h"
@@ -535,6 +536,14 @@ void PrivetLocalPrintOperationImpl::DoCreatejob() {
&PrivetLocalPrintOperationImpl::OnCreatejobResponse,
base::Unretained(this));
+ // Add PWG raster settings to ticket if they are supplied by the printer.
+ cloud_devices::printer::PwgRasterConfigCapability raster_capability;
+ cloud_devices::printer::PwgRasterConfigTicketItem raster_ticket_item;
+ if (raster_capability.LoadFrom(capabilities_)) {
+ raster_ticket_item.set_value(raster_capability.value());
+ raster_ticket_item.SaveTo(&ticket_);
+ }
+
url_fetcher_= privet_client_->CreateURLFetcher(
CreatePrivetURL(kPrivetCreatejobPath), net::URLFetcher::POST, this);
url_fetcher_->SetUploadData(kPrivetContentTypeCJT, ticket_.ToString());
@@ -605,9 +614,61 @@ void PrivetLocalPrintOperationImpl::StartPrinting() {
}
}
+void PrivetLocalPrintOperationImpl::FillBitmapTransformSettings(
+ printing::BitmapTransformSettings* transform_settings) {
+ cloud_devices::printer::PwgRasterConfigCapability raster_capability;
Vitaly Buka (NO REVIEWS) 2014/03/26 00:31:12 using namespace cloud_devices::printer;
Noam Samuel 2014/03/26 18:54:29 Done.
+ // If the raster capability fails to load, raster_capability will contain
+ // the default value.
+ raster_capability.LoadFrom(capabilities_);
+
+ cloud_devices::printer::DuplexTicketItem duplex_item;
+ cloud_devices::printer::DuplexType duplex_value =
+ cloud_devices::printer::NO_DUPLEX;
+
+ cloud_devices::printer::DocumentSheetBack document_sheet_back =
+ raster_capability.value().document_sheet_back;
+
+ if (duplex_item.LoadFrom(ticket_)) {
+ duplex_value = duplex_item.value();
+ }
+
+ transform_settings->odd_page_transform = printing::TRANSFORM_NORMAL;
+ switch (duplex_value) {
+ case cloud_devices::printer::NO_DUPLEX:
+ transform_settings->odd_page_transform = printing::TRANSFORM_NORMAL;
+ break;
+ case cloud_devices::printer::LONG_EDGE:
+ if (document_sheet_back == cloud_devices::printer::ROTATED) {
+ transform_settings->odd_page_transform = printing::TRANSFORM_ROTATE_180;
+ } else if (document_sheet_back == cloud_devices::printer::FLIPPED) {
+ transform_settings->odd_page_transform =
+ printing::TRANSFORM_FLIP_VERTICAL;
+ }
+ break;
+ case cloud_devices::printer::SHORT_EDGE:
+ if (document_sheet_back == cloud_devices::printer::MANUAL_TUMBLE) {
+ transform_settings->odd_page_transform = printing::TRANSFORM_ROTATE_180;
+ } else if (document_sheet_back == cloud_devices::printer::FLIPPED) {
+ transform_settings->odd_page_transform =
+ printing::TRANSFORM_FLIP_HORIZONTAL;
+ }
+ }
+
+ transform_settings->rotate_all_pages =
+ raster_capability.value().rotate_all_pages;
+
+ transform_settings->reverse_page_order =
+ raster_capability.value().reverse_order_streaming;
+}
+
void PrivetLocalPrintOperationImpl::StartConvertToPWG() {
+ printing::BitmapTransformSettings transform_settings;
+
+ FillBitmapTransformSettings(&transform_settings);
+
if (!pwg_raster_converter_)
pwg_raster_converter_ = PWGRasterConverter::CreateDefault();
+
double scale = dpi_;
scale /= printing::kPointsPerInch;
// Make vertical rectangle to optimize streaming to printer. Fix orientation
@@ -615,7 +676,9 @@ void PrivetLocalPrintOperationImpl::StartConvertToPWG() {
gfx::Rect area(std::min(page_size_.width(), page_size_.height()) * scale,
std::max(page_size_.width(), page_size_.height()) * scale);
pwg_raster_converter_->Start(
- data_, printing::PdfRenderSettings(area, dpi_, true),
+ data_,
+ printing::PdfRenderSettings(area, dpi_, true),
+ transform_settings,
base::Bind(&PrivetLocalPrintOperationImpl::OnPWGRasterConverted,
base::Unretained(this)));
}

Powered by Google App Engine
This is Rietveld 408576698