diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-21 02:38:11 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-21 02:38:11 +0000 |
commit | 48091b01b6007f5bec158bff3f9a9d127ab70f4f (patch) | |
tree | f34ac4bc6f0dc653ae75f20ecf1ed8fc76697a09 /printing/image_mac.cc | |
parent | 0ad90b81a091c4d903ec07cc95781f44a1e14fa5 (diff) | |
download | chromium_src-48091b01b6007f5bec158bff3f9a9d127ab70f4f.zip chromium_src-48091b01b6007f5bec158bff3f9a9d127ab70f4f.tar.gz chromium_src-48091b01b6007f5bec158bff3f9a9d127ab70f4f.tar.bz2 |
Printing: Split off Win/Mac implementations of the Image class into their own
files.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/3966002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63316 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing/image_mac.cc')
-rw-r--r-- | printing/image_mac.cc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/printing/image_mac.cc b/printing/image_mac.cc new file mode 100644 index 0000000..8b3d638 --- /dev/null +++ b/printing/image_mac.cc @@ -0,0 +1,42 @@ +// Copyright (c) 2010 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/image.h" + +#include <ApplicationServices/ApplicationServices.h> + +#include "base/mac/scoped_cftyperef.h" +#include "gfx/rect.h" + +namespace printing { + +bool Image::LoadMetafile(const NativeMetafile& metafile) { + // The printing system uses single-page metafiles (page indexes are 1-based). + const unsigned int page_number = 1; + gfx::Rect rect(metafile.GetPageBounds(page_number)); + if (rect.width() < 1 || rect.height() < 1) + return false; + + size_ = rect.size(); + row_length_ = size_.width() * sizeof(uint32); + size_t bytes = row_length_ * size_.height(); + DCHECK(bytes); + + data_.resize(bytes); + base::mac::ScopedCFTypeRef<CGColorSpaceRef> color_space( + CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB)); + base::mac::ScopedCFTypeRef<CGContextRef> bitmap_context( + CGBitmapContextCreate(&*data_.begin(), size_.width(), size_.height(), + 8, row_length_, color_space, + kCGImageAlphaPremultipliedLast)); + DCHECK(bitmap_context.get()); + + metafile.RenderPage(page_number, bitmap_context, + CGRectMake(0, 0, size_.width(), size_.height()), + true, false, false, false); + + return true; +} + +} // namespace printing |