59 paint.setShader(gradient);
91 sdc->fillRectWithEdgeAA(
nullptr, std::move(grPaint),
103 if (!alignGradients) {
120 color = {.2f, .8f, .3f, 1.f};
146 static constexpr SkScalar kLineOutset = 10.f;
148 paint.setAntiAlias(
true);
151 paint.setStrokeWidth(0.f);
154 local.mapPoints(pts, 2);
161 local.mapPoints(pts, 2);
176static const char*
kTileSetNames[] = {
"Local",
"Aligned",
"Green",
"Multicolor" };
197 rowMatrices[3].
setSkew(.5f, .25f);
208 static const char* matrixNames[] = {
"Identity",
"T+S",
"Rotate",
"Skew",
"Perspective" };
209 static_assert(std::size(matrixNames) == std::size(rowMatrices),
"Count mismatch");
222 for (
size_t i = 0; i < std::size(rowMatrices); ++i) {
228 for (
size_t j = 0; j < std::size(
kTileSets); ++j) {
232 canvas->
concat(rowMatrices[i]);
247DEF_GM(
return new DrawQuadSetGM();)
#define SkAssertResult(cond)
@ kSrcOver
r = s + (1-sa)*d
constexpr SkColor SK_ColorBLUE
constexpr SkColor SK_ColorRED
constexpr SkColor SK_ColorWHITE
bool SkPaintToGrPaint(GrRecordingContext *context, const GrColorInfo &dstColorInfo, const SkPaint &skPaint, const SkMatrix &ctm, const SkSurfaceProps &surfaceProps, GrPaint *grPaint)
void translate(SkScalar dx, SkScalar dy)
virtual GrRecordingContext * recordingContext() const
void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const SkPaint &paint)
void experimental_DrawEdgeAAQuad(const SkRect &rect, const SkPoint clip[4], QuadAAFlags aaFlags, const SkColor4f &color, SkBlendMode mode)
SkMatrix getTotalMatrix() const
void concat(const SkMatrix &matrix)
void drawString(const char str[], SkScalar x, SkScalar y, const SkFont &font, const SkPaint &paint)
static sk_sp< SkShader > MakeLinear(const SkPoint pts[2], const SkColor colors[], const SkScalar pos[], int count, SkTileMode mode, uint32_t flags=0, const SkMatrix *localMatrix=nullptr)
SkMatrix & postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py)
SkMatrix & setTranslate(SkScalar dx, SkScalar dy)
SkMatrix & setRotate(SkScalar degrees, SkScalar px, SkScalar py)
SkMatrix & preTranslate(SkScalar dx, SkScalar dy)
SkMatrix & setSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py)
@ kStroke_Style
set to stroke geometry
SkString getName() const override
SkISize getISize() override
void onDraw(SkCanvas *canvas) override
static void draw_text(SkCanvas *canvas, sk_sp< SkTextBlob > blob, const SkPaint &paint, const SkPaint &blurPaint, const SkPaint &clearPaint)
static constexpr SkScalar kTileHeight
static constexpr SkScalar kTileWidth
static constexpr int kRowCount
static constexpr int kColCount
static void draw_tile_boundaries(SkCanvas *canvas, const SkMatrix &local)
void(* TileRenderer)(SkCanvas *)
static void draw_gradient_tiles(SkCanvas *canvas, bool alignGradients)
static void draw_color_tiles(SkCanvas *canvas, bool multicolor)
static const char * kTileSetNames[]
static TileRenderer kTileSets[]
static constexpr SkScalar kTileHeight
static constexpr SkScalar kTileWidth
static constexpr int kRowCount
static constexpr int kColCount
static void draw_text(SkCanvas *canvas, const char *text)
static void draw_tile_boundaries(SkCanvas *canvas, const SkMatrix &local)
SurfaceDrawContext * TopDeviceSurfaceDrawContext(const SkCanvas *canvas)
static constexpr SkISize Make(int32_t w, int32_t h)
bool setLength(float length)
void toQuad(SkPoint quad[4]) const
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
void offset(float dx, float dy)
static constexpr SkRect MakeWH(float w, float h)