/* * Copyright 2006 The Android Open Source Project * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkDraw_DEFINED #define SkDraw_DEFINED #include "include/core/SkCanvas.h" #include "include/core/SkColor.h" #include "include/core/SkRefCnt.h" #include "include/core/SkSamplingOptions.h" #include "src/base/SkZip.h" #include "src/core/SkDrawBase.h" #include class SkArenaAlloc; class SkBitmap; class SkBlender; class SkDevice; class SkGlyph; class SkGlyphRunListPainterCPU; class SkMatrix; class SkPaint; class SkVertices; namespace sktext { class GlyphRunList; } struct SkPoint3; struct SkPoint; struct SkRSXform; struct SkRect; // defaults to use SkBlitter::Choose() class SkDraw : public SkDrawBase { public: SkDraw(); /* If dstOrNull is null, computes a dst by mapping the bitmap's bounds through the matrix. */ void drawBitmap(const SkBitmap&, const SkMatrix&, const SkRect* dstOrNull, const SkSamplingOptions&, const SkPaint&) const override; void drawSprite(const SkBitmap&, int x, int y, const SkPaint&) const; void drawGlyphRunList(SkCanvas* canvas, SkGlyphRunListPainterCPU* glyphPainter, const sktext::GlyphRunList& glyphRunList, const SkPaint& paint) const; void paintMasks(SkZip accepted, const SkPaint& paint) const override; void drawPoints(SkCanvas::PointMode, size_t count, const SkPoint[], const SkPaint&, SkDevice*) const; /* If skipColorXform, skips color conversion when assigning per-vertex colors */ void drawVertices(const SkVertices*, sk_sp, const SkPaint&, bool skipColorXform) const; void drawAtlas(const SkRSXform[], const SkRect[], const SkColor[], int count, sk_sp, const SkPaint&); #if defined(SK_SUPPORT_LEGACY_ALPHA_BITMAP_AS_COVERAGE) void drawDevMask(const SkMask& mask, const SkPaint&) const; void drawBitmapAsMask(const SkBitmap&, const SkSamplingOptions&, const SkPaint&) const; #endif private: void drawFixedVertices(const SkVertices* vertices, sk_sp blender, const SkPaint& paint, const SkMatrix& ctmInverse, const SkPoint* dev2, const SkPoint3* dev3, SkArenaAlloc* outerAlloc, bool skipColorXform) const; }; #endif