Add kSkBlendModeCount
I keep bumping into the need for this
Change-Id: I69384f7d590c163fd6244bdc64cc5e48450fecd4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/540171
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index b9b9029..9dcb68a 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -53,7 +53,7 @@
const int W = 6;
SkScalar x = 0, y = 0;
- for (size_t m = 0; m <= (size_t)SkBlendMode::kLastMode; m++) {
+ for (size_t m = 0; m < kSkBlendModeCount; m++) {
SkBlendMode mode = static_cast<SkBlendMode>(m);
canvas->save();
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index 44dee16..087541d 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -77,7 +77,7 @@
{SkPaint::kStroke_Style, SkIntToScalar(kSize) / 2},
};
for (size_t s = 0; s < SK_ARRAY_COUNT(kStrokes); ++s) {
- for (size_t m = 0; m <= (size_t)SkBlendMode::kLastMode; ++m) {
+ for (size_t m = 0; m < kSkBlendModeCount; ++m) {
SkBlendMode mode = static_cast<SkBlendMode>(m);
canvas->drawString(SkBlendMode_Name(mode),
SkIntToScalar(x),
diff --git a/include/core/SkBlendMode.h b/include/core/SkBlendMode.h
index 07640cf..4abe915 100644
--- a/include/core/SkBlendMode.h
+++ b/include/core/SkBlendMode.h
@@ -73,6 +73,8 @@
kLastMode = kLuminosity, //!< last valid value
};
+static constexpr int kSkBlendModeCount = static_cast<int>(SkBlendMode::kLastMode) + 1;
+
/**
* For Porter-Duff SkBlendModes (those <= kLastCoeffMode), these coefficients describe the blend
* equation used. Coefficient-based blend modes specify an equation:
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index 25c3560..37fe697 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -112,10 +112,8 @@
return nullptr;
}
- const int COUNT_BLENDMODES = (int)SkBlendMode::kLastMode + 1;
-
- static SkOnce once[COUNT_BLENDMODES];
- static SkXfermode* cached[COUNT_BLENDMODES];
+ static SkOnce once[kSkBlendModeCount];
+ static SkXfermode* cached[kSkBlendModeCount];
once[(int)mode]([mode] {
if (auto xfermode = SkOpts::create_xfermode(mode)) {
diff --git a/tests/ColorFilterTest.cpp b/tests/ColorFilterTest.cpp
index e7ed118..02824a7 100644
--- a/tests/ColorFilterTest.cpp
+++ b/tests/ColorFilterTest.cpp
@@ -41,7 +41,7 @@
DEF_TEST(ColorFilter, reporter) {
SkRandom rand;
- for (int mode = 0; mode <= (int)SkBlendMode::kLastMode; mode++) {
+ for (int mode = 0; mode < kSkBlendModeCount; mode++) {
SkColor color = rand.nextU();
// ensure we always get a filter, by avoiding the possibility of a
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
index 41ea843..afd3df4 100644
--- a/tests/ImageFilterTest.cpp
+++ b/tests/ImageFilterTest.cpp
@@ -1829,10 +1829,9 @@
sk_sp<SkImageFilter> background(new FixedBoundsImageFilter(background_rect));
sk_sp<SkImageFilter> foreground(new FixedBoundsImageFilter(foreground_rect));
- const int kModeCount = static_cast<int>(SkBlendMode::kLastMode) + 1;
- SkIRect expectedBounds[kModeCount];
+ SkIRect expectedBounds[kSkBlendModeCount];
// Expect union of input rects by default.
- for (int i = 0; i < kModeCount; ++i) {
+ for (int i = 0; i < kSkBlendModeCount; ++i) {
expectedBounds[i] = background_rect;
expectedBounds[i].join(foreground_rect);
}
@@ -1849,7 +1848,7 @@
// The value of this variable doesn't matter because we use inputs with fixed bounds.
SkIRect src = SkIRect::MakeXYWH(11, 22, 33, 44);
- for (int i = 0; i < kModeCount; ++i) {
+ for (int i = 0; i < kSkBlendModeCount; ++i) {
sk_sp<SkImageFilter> xfermode(SkImageFilters::Blend(static_cast<SkBlendMode>(i),
background, foreground, nullptr));
auto bounds = xfermode->filterBounds(src, SkMatrix::I(),
diff --git a/tests/RecordingXfermodeTest.cpp b/tests/RecordingXfermodeTest.cpp
index ecd59a2..fcdf346 100644
--- a/tests/RecordingXfermodeTest.cpp
+++ b/tests/RecordingXfermodeTest.cpp
@@ -147,7 +147,7 @@
SkString errors;
#endif
- for (int iMode = 0; iMode < int(SkBlendMode::kLastMode); iMode++) {
+ for (int iMode = 0; iMode < kSkBlendModeCount; iMode++) {
const SkRect& clip = SkRect::MakeXYWH(100, 0, 100, 100);
SkBlendMode mode = SkBlendMode(iMode);
diff --git a/tests/RuntimeBlendTest.cpp b/tests/RuntimeBlendTest.cpp
index 12d921d..f53ed02 100644
--- a/tests/RuntimeBlendTest.cpp
+++ b/tests/RuntimeBlendTest.cpp
@@ -31,7 +31,7 @@
SkBitmap bitmap;
REPORTER_ASSERT(r, bitmap.tryAllocPixels(surface->imageInfo()));
- for (int m = 0; m <= (int)SkBlendMode::kLastMode; ++m) {
+ for (int m = 0; m < kSkBlendModeCount; ++m) {
SkBlendMode mode = (SkBlendMode)m;
for (int alpha : {0x80, 0xFF}) {
std::vector<SkColor> colors;