diff options
Diffstat (limited to 'gfx/skia/skia/src/core/SkDraw.h')
-rw-r--r-- | gfx/skia/skia/src/core/SkDraw.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/core/SkDraw.h b/gfx/skia/skia/src/core/SkDraw.h new file mode 100644 index 0000000000..bdb3b999de --- /dev/null +++ b/gfx/skia/skia/src/core/SkDraw.h @@ -0,0 +1,79 @@ + +/* + * 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 SkBaseDevice; +class SkBitmap; +class SkBlender; +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&, SkBaseDevice*) 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 |