skia2/tests/SkGlyphTest.cpp
Herb Derby ba429fbc16 make calculating width and height easy for GrGlyphRect
Rearrange SkGlyphRect so that leftTop is negative. This makes
calculating width and height = rightBottom + leftTop. Then we
can use this as the dimensions of the glyph in the digest.

Rename: topLeft to leftTop.

Bug: skia:13192
Change-Id: If06ebf6e595f380f8fbb9a3381e87945e312eceb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/529336
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2022-04-12 17:05:21 +00:00

39 lines
1.2 KiB
C++

/*
* 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));
}