| /* |
| * Copyright 2020 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "src/core/SkGlyph.h" |
| #include "tests/Test.h" |
| |
| DEF_TEST(SkGlyphRectBasic, reporter) { |
| using namespace skglyph; |
| SkGlyphRect r{1, 1, 10, 10}; |
| REPORTER_ASSERT(reporter, !r.empty()); |
| SkGlyphRect a = rect_union(r, empty_rect()); |
| REPORTER_ASSERT(reporter, a.iRect() == SkIRect::MakeLTRB(1, 1, 10, 10)); |
| auto widthHeight = a.widthHeight(); |
| REPORTER_ASSERT(reporter, widthHeight[0] == 9 && widthHeight[1] == 9); |
| |
| a = rect_intersection(r, full_rect()); |
| REPORTER_ASSERT(reporter, a.iRect() == SkIRect::MakeLTRB(1, 1, 10, 10)); |
| |
| SkGlyphRect acc = full_rect(); |
| for (int x = -10; x < 10; x++) { |
| for(int y = -10; y < 10; y++) { |
| acc = rect_intersection(acc, SkGlyphRect(x, y, x + 20, y + 20)); |
| } |
| } |
| REPORTER_ASSERT(reporter, acc.iRect() == SkIRect::MakeLTRB(9, 9, 10, 10)); |
| |
| acc = empty_rect(); |
| for (int x = -10; x < 10; x++) { |
| for(int y = -10; y < 10; y++) { |
| acc = rect_union(acc, SkGlyphRect(x, y, x + 20, y + 20)); |
| } |
| } |
| REPORTER_ASSERT(reporter, acc.iRect() == SkIRect::MakeLTRB(-10, -10, 29, 29)); |
| } |