| |
| /* |
| * 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 <cstddef> |
| |
| 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<const SkGlyph*, SkPoint> 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<SkBlender>, |
| const SkPaint&, |
| bool skipColorXform) const; |
| void drawAtlas(const SkRSXform[], const SkRect[], const SkColor[], int count, |
| sk_sp<SkBlender>, 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<SkBlender> blender, |
| const SkPaint& paint, |
| const SkMatrix& ctmInverse, |
| const SkPoint* dev2, |
| const SkPoint3* dev3, |
| SkArenaAlloc* outerAlloc, |
| bool skipColorXform) const; |
| }; |
| |
| #endif |