diff options
Diffstat (limited to 'printing')
-rw-r--r-- | printing/page_size_margins.cc | 29 | ||||
-rw-r--r-- | printing/page_size_margins.h | 8 | ||||
-rw-r--r-- | printing/printing.gyp | 1 | ||||
-rw-r--r-- | printing/printing_context.cc | 27 |
4 files changed, 45 insertions, 20 deletions
diff --git a/printing/page_size_margins.cc b/printing/page_size_margins.cc new file mode 100644 index 0000000..05193909 --- /dev/null +++ b/printing/page_size_margins.cc @@ -0,0 +1,29 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "printing/page_size_margins.h" + +#include "base/logging.h" +#include "base/values.h" +#include "printing/print_job_constants.h" + +namespace printing { + +void getCustomMarginsFromJobSettings(const base::DictionaryValue& settings, + PageSizeMargins* page_size_margins) { + DictionaryValue* custom_margins; + if (!settings.GetDictionary(kSettingMarginsCustom, &custom_margins) || + !custom_margins->GetDouble(kSettingMarginTop, + &page_size_margins->margin_top) || + !custom_margins->GetDouble(kSettingMarginBottom, + &page_size_margins->margin_bottom) || + !custom_margins->GetDouble(kSettingMarginLeft, + &page_size_margins->margin_left) || + !custom_margins->GetDouble(kSettingMarginRight, + &page_size_margins->margin_right)) { + NOTREACHED(); + } +} + +} // namespace printing diff --git a/printing/page_size_margins.h b/printing/page_size_margins.h index 4f74c297..c1109ab 100644 --- a/printing/page_size_margins.h +++ b/printing/page_size_margins.h @@ -5,6 +5,10 @@ #ifndef PRINTING_PAGE_SIZE_MARGINS_H_ #define PRINTING_PAGE_SIZE_MARGINS_H_ +namespace base { +class DictionaryValue; +} + namespace printing { // Struct that holds margin and content area sizes of a page. Units are @@ -18,7 +22,9 @@ struct PageSizeMargins { double margin_left; }; +void getCustomMarginsFromJobSettings(const base::DictionaryValue& settings, + PageSizeMargins* page_size_margins); + } // namespace printing #endif // PRINTING_PAGE_SIZE_MARGINS_H_ - diff --git a/printing/printing.gyp b/printing/printing.gyp index 0cb2c06..34e3b4e 100644 --- a/printing/printing.gyp +++ b/printing/printing.gyp @@ -50,6 +50,7 @@ 'page_range.h', 'page_setup.cc', 'page_setup.h', + 'page_size_margins.cc', 'page_size_margins.h', 'pdf_metafile_cg_mac.cc', 'pdf_metafile_cg_mac.h', diff --git a/printing/printing_context.cc b/printing/printing_context.cc index cc39e6c..b94e7a8 100644 --- a/printing/printing_context.cc +++ b/printing/printing_context.cc @@ -7,6 +7,7 @@ #include "base/logging.h" #include "base/values.h" #include "printing/page_setup.h" +#include "printing/page_size_margins.h" #include "printing/print_settings_initializer.h" namespace printing { @@ -62,27 +63,15 @@ PrintingContext::Result PrintingContext::UpdatePrintSettings( settings_.margin_type = static_cast<MarginType>(margin_type); if (margin_type == CUSTOM_MARGINS) { - double top_margin_in_points = 0; - double bottom_margin_in_points = 0; - double left_margin_in_points = 0; - double right_margin_in_points = 0; - DictionaryValue* custom_margins; - if (!job_settings.GetDictionary(kSettingMarginsCustom, &custom_margins) || - !custom_margins->GetDouble(kSettingMarginTop, &top_margin_in_points) || - !custom_margins->GetDouble(kSettingMarginBottom, - &bottom_margin_in_points) || - !custom_margins->GetDouble(kSettingMarginLeft, - &left_margin_in_points) || - !custom_margins->GetDouble(kSettingMarginRight, - &right_margin_in_points)) { - NOTREACHED(); - } + printing::PageSizeMargins page_size_margins; + getCustomMarginsFromJobSettings(job_settings, &page_size_margins); + PageMargins margins_in_points; margins_in_points.Clear(); - margins_in_points.top = top_margin_in_points; - margins_in_points.bottom = bottom_margin_in_points; - margins_in_points.left = left_margin_in_points; - margins_in_points.right = right_margin_in_points; + margins_in_points.top = page_size_margins.margin_top; + margins_in_points.bottom = page_size_margins.margin_bottom; + margins_in_points.left = page_size_margins.margin_left; + margins_in_points.right = page_size_margins.margin_right; settings_.SetCustomMargins(margins_in_points); } |