15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 20019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// found in the LICENSE file. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "printing/printed_document.h" 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#import <ApplicationServices/ApplicationServices.h> 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#import <CoreFoundation/CoreFoundation.h> 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "base/logging.h" 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "printing/page_number.h" 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "printing/printed_page.h" 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace printing { 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void PrintedDocument::RenderPrintedPage( 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const PrintedPage& page, gfx::NativeDrawingContext context) const { 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef NDEBUG 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure the page is from our list. 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) base::AutoLock lock(lock_); 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DCHECK(&page == mutable_.pages_.find(page.page_number() - 1)->second.get()); 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DCHECK(context); 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const PageSetup& page_setup(immutable_.settings_.page_setup_device_units()); 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) gfx::Rect content_area; 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) page.GetCenteredPageContentRect(page_setup.physical_size(), &content_area); 317757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 327757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch const MetafilePlayer* metafile = page.metafile(); 337757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch // Each Metafile is a one-page PDF, and pages use 1-based indexing. 3409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) const int page_number = 1; 3509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) struct Metafile::MacRenderPageParams params; 367757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch params.autorotate = true; 377757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch metafile->RenderPage(page_number, context, content_area.ToCGRect(), params); 3809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 3909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 4051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace printing 417757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch