1// Copyright (c) 2011 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 "skia/ext/bitmap_platform_device_mac.h" 6 7#include "base/memory/scoped_ptr.h" 8#include "skia/ext/skia_utils_mac.h" 9#include "testing/gtest/include/gtest/gtest.h" 10#include "third_party/skia/include/core/SkMatrix.h" 11#include "third_party/skia/include/core/SkRegion.h" 12#include "third_party/skia/include/core/SkClipStack.h" 13 14namespace skia { 15 16const int kWidth = 400; 17const int kHeight = 300; 18 19class BitmapPlatformDeviceMacTest : public testing::Test { 20 public: 21 BitmapPlatformDeviceMacTest() { 22 bitmap_.reset(BitmapPlatformDevice::Create( 23 NULL, kWidth, kHeight, /*is_opaque=*/true)); 24 } 25 26 scoped_ptr<BitmapPlatformDevice> bitmap_; 27}; 28 29TEST_F(BitmapPlatformDeviceMacTest, ClipRectTransformWithTranslate) { 30 SkMatrix transform; 31 transform.setTranslate(50, 140); 32 33 SkClipStack ignore; 34 SkRegion clip_region; 35 SkIRect rect; 36 rect.set(0, 0, kWidth, kHeight); 37 clip_region.setRect(rect); 38 bitmap_->setMatrixClip(transform, clip_region, ignore); 39 40 CGContextRef context = bitmap_->GetBitmapContext(); 41 SkRect clip_rect = gfx::CGRectToSkRect(CGContextGetClipBoundingBox(context)); 42 transform.mapRect(&clip_rect); 43 EXPECT_EQ(0, clip_rect.fLeft); 44 EXPECT_EQ(0, clip_rect.fTop); 45 EXPECT_EQ(kWidth, clip_rect.width()); 46 EXPECT_EQ(kHeight, clip_rect.height()); 47} 48 49TEST_F(BitmapPlatformDeviceMacTest, ClipRectTransformWithScale) { 50 SkMatrix transform; 51 transform.setScale(0.5, 0.5); 52 53 SkClipStack unused; 54 SkRegion clip_region; 55 SkIRect rect; 56 rect.set(0, 0, kWidth, kHeight); 57 clip_region.setRect(rect); 58 bitmap_->setMatrixClip(transform, clip_region, unused); 59 60 CGContextRef context = bitmap_->GetBitmapContext(); 61 SkRect clip_rect = gfx::CGRectToSkRect(CGContextGetClipBoundingBox(context)); 62 transform.mapRect(&clip_rect); 63 EXPECT_EQ(0, clip_rect.fLeft); 64 EXPECT_EQ(0, clip_rect.fTop); 65 EXPECT_EQ(kWidth, clip_rect.width()); 66 EXPECT_EQ(kHeight, clip_rect.height()); 67} 68 69} // namespace skia 70