Home | History | Annotate | Download | only in printing
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "printing/printed_document.h"
      6 
      7 #import <ApplicationServices/ApplicationServices.h>
      8 #import <CoreFoundation/CoreFoundation.h>
      9 
     10 #include "base/logging.h"
     11 #include "printing/page_number.h"
     12 #include "printing/printed_page.h"
     13 
     14 namespace printing {
     15 
     16 void PrintedDocument::RenderPrintedPage(
     17     const PrintedPage& page, gfx::NativeDrawingContext context) const {
     18 #ifndef NDEBUG
     19   {
     20     // Make sure the page is from our list.
     21     base::AutoLock lock(lock_);
     22     DCHECK(&page == mutable_.pages_.find(page.page_number() - 1)->second.get());
     23   }
     24 #endif
     25 
     26   DCHECK(context);
     27 
     28   const PageSetup& page_setup(immutable_.settings_.page_setup_device_units());
     29   gfx::Rect content_area;
     30   page.GetCenteredPageContentRect(page_setup.physical_size(), &content_area);
     31 
     32   const Metafile* metafile = page.metafile();
     33   // Each Metafile is a one-page PDF, and pages use 1-based indexing.
     34   const int page_number = 1;
     35   struct Metafile::MacRenderPageParams params;
     36   params.autorotate = true;
     37   metafile->RenderPage(page_number, context, content_area.ToCGRect(), params);
     38 }
     39 
     40 }  // namespace printing
     41