15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "printing/print_settings.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/atomic_sequence_num.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "printing/print_job_constants.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "printing/units.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace printing { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_CUPS) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GetColorModelForMode( 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int color_mode, std::string* color_setting_name, std::string* color_value) { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCUPSColorMode[] = "ColorMode"; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCUPSColorModel[] = "ColorModel"; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCUPSPrintoutMode[] = "PrintoutMode"; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCUPSProcessColorModel[] = "ProcessColorModel"; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCUPSColorMode[] = "cups-ColorMode"; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCUPSColorModel[] = "cups-ColorModel"; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCUPSPrintoutMode[] = "cups-PrintoutMode"; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kCUPSProcessColorModel[] = "cups-ProcessColorModel"; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_MACOSX) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kCUPSColorModel); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (color_mode) { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case COLOR: 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kColor); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case CMYK: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kCMYK); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PRINTOUTMODE_NORMAL: 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kNormal); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kCUPSPrintoutMode); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PRINTOUTMODE_NORMAL_GRAY: 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kNormalGray); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kCUPSPrintoutMode); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case RGB16: 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kRGB16); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case RGBA: 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kRGBA); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case RGB: 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kRGB); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case CMY: 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kCMY); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case CMY_K: 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kCMY_K); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case BLACK: 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kBlack); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case GRAY: 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kGray); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case COLORMODE_COLOR: 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kCUPSColorMode); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kColor); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case COLORMODE_MONOCHROME: 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kCUPSColorMode); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kMonochrome); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case HP_COLOR_COLOR: 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kColor); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kColor); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case HP_COLOR_BLACK: 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kColor); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kBlack); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PROCESSCOLORMODEL_CMYK: 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kCUPSProcessColorModel); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kCMYK); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PROCESSCOLORMODEL_GREYSCALE: 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kCUPSProcessColorModel); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kGreyscale); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PROCESSCOLORMODEL_RGB: 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_setting_name->assign(kCUPSProcessColorModel); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kRGB); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) color_value->assign(kGrayscale); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(USE_CUPS) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)bool IsColorModelSelected(int color_mode) { 1024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return (color_mode != GRAY && 1034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) color_mode != BLACK && 1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) color_mode != PRINTOUTMODE_NORMAL_GRAY && 1054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) color_mode != COLORMODE_MONOCHROME && 1064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) color_mode != PROCESSCOLORMODEL_GREYSCALE && 1074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) color_mode != HP_COLOR_BLACK); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Global SequenceNumber used for generating unique cookie values. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static base::StaticAtomicSequenceNumber cookie_seq; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)PrintSettings::PrintSettings() { 1141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) Clear(); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PrintSettings::~PrintSettings() { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintSettings::Clear() { 1211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ranges_.clear(); 1221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) margin_type_ = DEFAULT_MARGINS; 1231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) min_shrink_ = 1.25; 1241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) max_shrink_ = 2.; 1251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) desired_dpi_ = 72; 1261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) selection_only_ = false; 1271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) title_ = base::string16(); 1281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) url_ = base::string16(); 1291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) display_header_footer_ = false; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) device_name_.clear(); 131f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) requested_media_ = RequestedMedia(); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_setup_device_units_.Clear(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dpi_ = 0; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) landscape_ = false; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) supports_alpha_blend_ = true; 1361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) should_print_backgrounds_ = false; 1371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) collate_ = false; 1381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) color_ = UNKNOWN_COLOR_MODEL; 1391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) copies_ = 0; 1401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) duplex_mode_ = UNKNOWN_DUPLEX_MODE; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintSettings::SetPrinterPrintableArea( 1440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const gfx::Size& physical_size_device_units, 1450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const gfx::Rect& printable_area_device_units, 1461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) bool landscape_needs_flip) { 1470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) int units_per_inch = device_units_per_inch(); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int header_footer_text_height = 0; 1491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (display_header_footer_) { 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Hard-code text_height = 0.5cm = ~1/5 of inch. 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) header_footer_text_height = ConvertUnit(kSettingHeaderFooterInterstice, 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kPointsPerInch, units_per_inch); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PageMargins margins; 1561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) switch (margin_type_) { 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case DEFAULT_MARGINS: { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Default margins 1.0cm = ~2/5 of an inch. 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int margin_printer_units = ConvertUnit(1000, kHundrethsMMPerInch, 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) units_per_inch); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.header = header_footer_text_height; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.footer = header_footer_text_height; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.top = margin_printer_units; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.bottom = margin_printer_units; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.left = margin_printer_units; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.right = margin_printer_units; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case NO_MARGINS: 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PRINTABLE_AREA_MARGINS: { 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.header = 0; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.footer = 0; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.top = 0; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.bottom = 0; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.left = 0; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.right = 0; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case CUSTOM_MARGINS: { 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.header = 0; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.footer = 0; 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.top = ConvertUnitDouble( 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) requested_custom_margins_in_points_.top, 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kPointsPerInch, 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) units_per_inch); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.bottom = ConvertUnitDouble( 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) requested_custom_margins_in_points_.bottom, 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kPointsPerInch, 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) units_per_inch); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.left = ConvertUnitDouble( 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) requested_custom_margins_in_points_.left, 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kPointsPerInch, 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) units_per_inch); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) margins.right = ConvertUnitDouble( 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) requested_custom_margins_in_points_.right, 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kPointsPerInch, 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) units_per_inch); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: { 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (margin_type_ == DEFAULT_MARGINS || margin_type_ == PRINTABLE_AREA_MARGINS) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_setup_device_units_.SetRequestedMargins(margins); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_setup_device_units_.ForceRequestedMargins(margins); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_setup_device_units_.Init(physical_size_device_units, 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printable_area_device_units, 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) header_footer_text_height); 2131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (landscape_ && landscape_needs_flip) 2141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) page_setup_device_units_.FlipOrientation(); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintSettings::SetCustomMargins( 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PageMargins& requested_margins_in_points) { 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) requested_custom_margins_in_points_ = requested_margins_in_points; 2201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) margin_type_ = CUSTOM_MARGINS; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int PrintSettings::NewCookie() { 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A cookie of 0 is used to mark a document as unassigned, count from 1. 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return cookie_seq.GetNext() + 1; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintSettings::SetOrientation(bool landscape) { 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (landscape_ != landscape) { 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) landscape_ = landscape; 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_setup_device_units_.FlipOrientation(); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace printing 236