| /* | |
| * Copyright 2025 Google LLC | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "gm/gm.h" | |
| #include "include/core/SkCanvas.h" | |
| #include "include/core/SkImageInfo.h" | |
| #include "include/core/SkMaskFilter.h" | |
| #include "include/core/SkPaint.h" | |
| #include "include/core/SkPath.h" | |
| #include "include/core/SkPathBuilder.h" | |
| #include "include/core/SkSurface.h" | |
| #include "include/effects/SkTableMaskFilter.h" | |
| DEF_SIMPLE_GM(tablemaskfilter, canvas, 400, 400) { | |
| SkPaint paint; | |
| paint.setStyle(SkPaint::kFill_Style); | |
| paint.setColor(SK_ColorBLACK); | |
| // Add a table mask filter that defines half coverage for all coverage values | |
| // except pixels with full coverage. | |
| uint8_t table[256]; | |
| for (int i = 0; i < 256; ++i) { | |
| table[i] = 128; | |
| } | |
| table[255] = 255; | |
| paint.setMaskFilter(sk_sp<SkMaskFilter>(SkTableMaskFilter::Create(table))); | |
| SkPath path = SkPathBuilder() | |
| .addRect({38.f, 38.f, 218.f, 218.f}) | |
| .addOval({38.f, 38.f, 218.f, 218.f}, SkPathDirection::kCCW) | |
| .detach(); | |
| canvas->drawPath(path, paint); | |
| } |