123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- // Copyright 2020 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 "cc/paint/clear_for_opaque_raster.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "ui/gfx/geometry/rect.h"
- #include "ui/gfx/geometry/size_f.h"
- #include "ui/gfx/geometry/vector2d_f.h"
- namespace cc {
- TEST(ClearForOpaqueRasterTest, NoTransform) {
- const gfx::Vector2dF translation;
- const gfx::Vector2dF scale(1, 1);
- const gfx::Size content_size(100, 100);
- const gfx::Rect bitmap_rect(content_size);
- gfx::Rect inner_rect;
- gfx::Rect outer_rect;
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, bitmap_rect, outer_rect,
- inner_rect));
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(25, 25, 50, 50),
- outer_rect, inner_rect));
- }
- TEST(ClearForOpaqueRasterTest, WithTranslation) {
- const gfx::Vector2dF translation(0.3f, 0.7f);
- const gfx::Vector2dF scale(1, 1);
- const gfx::Size content_size(100, 100);
- const gfx::Rect bitmap_rect(content_size);
- gfx::Rect inner_rect;
- gfx::Rect outer_rect;
- // Full playback (touching all edges).
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, bitmap_rect, outer_rect,
- inner_rect));
- EXPECT_EQ(gfx::Rect(0, 0, 100, 100), outer_rect);
- EXPECT_EQ(gfx::Rect(1, 1, 99, 99), inner_rect);
- // Touches the left edge only.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(0, 25, 50, 50),
- outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(0, 25, 50, 50), outer_rect);
- EXPECT_EQ(gfx::Rect(1, 25, 49, 50), inner_rect);
- // Touches the top edge only.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(25, 0, 50, 50),
- outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(25, 0, 50, 50), outer_rect);
- EXPECT_EQ(gfx::Rect(25, 1, 50, 49), inner_rect);
- // Touches the right edge only.
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(50, 25, 50, 50),
- outer_rect, inner_rect));
- // Touches the bottom edge only.
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(25, 50, 50, 50),
- outer_rect, inner_rect));
- // Touches no edges.
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(1, 1, 98, 98),
- outer_rect, inner_rect));
- }
- TEST(ClearForOpaqueRasterTest, WithScale) {
- const gfx::Vector2dF translation;
- const gfx::Vector2dF scale(1.5f, 1.5f);
- const gfx::Size content_size(100, 100);
- const gfx::Rect bitmap_rect(content_size);
- gfx::Rect inner_rect;
- gfx::Rect outer_rect;
- // Full playback (touching all edges).
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, bitmap_rect, outer_rect,
- inner_rect));
- EXPECT_EQ(gfx::Rect(0, 0, 101, 101), outer_rect);
- EXPECT_EQ(gfx::Rect(0, 0, 99, 99), inner_rect);
- // Touches the left edge only.
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(0, 25, 50, 50),
- outer_rect, inner_rect));
- // Touches the top edge only.
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(25, 0, 50, 50),
- outer_rect, inner_rect));
- // Touches the right edge only.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(50, 25, 50, 50),
- outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(50, 25, 51, 50), outer_rect);
- EXPECT_EQ(gfx::Rect(50, 25, 49, 50), inner_rect);
- // Touches the bottom edge only.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(25, 50, 50, 50),
- outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(25, 50, 50, 51), outer_rect);
- EXPECT_EQ(gfx::Rect(25, 50, 50, 49), inner_rect);
- // Touches no edges.
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(1, 1, 98, 98),
- outer_rect, inner_rect));
- }
- TEST(ClearForOpaqueRasterTest, WithTranslationAndScale) {
- const gfx::Vector2dF translation(0.3f, 0.7f);
- const gfx::Vector2dF scale(1.5f, 1.5f);
- const gfx::Size content_size(100, 100);
- const gfx::Rect bitmap_rect(content_size);
- gfx::Rect inner_rect;
- gfx::Rect outer_rect;
- // Full playback (touching all edges).
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, bitmap_rect, outer_rect,
- inner_rect));
- EXPECT_EQ(gfx::Rect(0, 0, 101, 101), outer_rect);
- EXPECT_EQ(gfx::Rect(1, 1, 98, 98), inner_rect);
- // Touches the left edge only.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(0, 25, 50, 50),
- outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(0, 25, 50, 50), outer_rect);
- EXPECT_EQ(gfx::Rect(1, 25, 49, 50), inner_rect);
- // Touches the top edge only.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(25, 0, 50, 50),
- outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(25, 0, 50, 50), outer_rect);
- EXPECT_EQ(gfx::Rect(25, 1, 50, 49), inner_rect);
- // Touches the right edge only.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(50, 25, 50, 50),
- outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(50, 25, 51, 50), outer_rect);
- EXPECT_EQ(gfx::Rect(50, 25, 49, 50), inner_rect);
- // Touches the bottom edge only.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(25, 50, 50, 50),
- outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(25, 50, 50, 51), outer_rect);
- EXPECT_EQ(gfx::Rect(25, 50, 50, 49), inner_rect);
- // Touches no edges.
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, gfx::Rect(1, 1, 98, 98),
- outer_rect, inner_rect));
- // With bitmap_rect non-zero offset.
- EXPECT_TRUE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, gfx::Rect(25, 25, 75, 75),
- gfx::Rect(50, 50, 50, 50), outer_rect, inner_rect));
- EXPECT_EQ(gfx::Rect(25, 25, 51, 51), outer_rect);
- EXPECT_EQ(gfx::Rect(25, 25, 49, 49), inner_rect);
- }
- TEST(ClearForOpaqueRasterTest, PlaybackRectBelowContentRect) {
- const gfx::Vector2dF translation(0.0f, 0.1f);
- const gfx::Vector2dF scale(1.0f, 1.0f);
- const gfx::Size content_size(100, 100);
- const gfx::Rect bitmap_rect(50, 50, 100, 100);
- const gfx::Rect playback_rect(50, 100, 100, 3);
- gfx::Rect inner_rect;
- gfx::Rect outer_rect;
- EXPECT_FALSE(CalculateClearForOpaqueRasterRects(
- translation, scale, content_size, bitmap_rect, playback_rect, outer_rect,
- inner_rect));
- }
- } // namespace cc
|