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 14 namespace skia { 15 16 const int kWidth = 400; 17 const int kHeight = 300; 18 19 class 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 29 TEST_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 49 TEST_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