/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkLiteDL_DEFINED #define SkLiteDL_DEFINED #include "SkCanvas.h" #include "SkPaint.h" #include "SkPath.h" #include "SkDrawable.h" #include "SkRect.h" #include "SkTDArray.h" #include "SkTemplates.h" class SkLiteDL final { public: ~SkLiteDL(); void draw(SkCanvas* canvas) const; void reset(); bool empty() const { return fUsed == 0; } void flush(); void save(); void saveLayer(const SkRect*, const SkPaint*, const SkImageFilter*, const SkImage*, const SkMatrix*, SkCanvas::SaveLayerFlags); void restore(); void concat (const SkMatrix&); void setMatrix (const SkMatrix&); void translate(SkScalar, SkScalar); void translateZ(SkScalar); void clipPath (const SkPath&, SkClipOp, bool aa); void clipRect (const SkRect&, SkClipOp, bool aa); void clipRRect (const SkRRect&, SkClipOp, bool aa); void clipRegion(const SkRegion&, SkClipOp); void drawPaint (const SkPaint&); void drawPath (const SkPath&, const SkPaint&); void drawRect (const SkRect&, const SkPaint&); void drawRegion(const SkRegion&, const SkPaint&); void drawOval (const SkRect&, const SkPaint&); void drawArc (const SkRect&, SkScalar, SkScalar, bool, const SkPaint&); void drawRRect (const SkRRect&, const SkPaint&); void drawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); void drawAnnotation (const SkRect&, const char*, SkData*); void drawDrawable (SkDrawable*, const SkMatrix*); void drawPicture (const SkPicture*, const SkMatrix*, const SkPaint*); void drawText (const void*, size_t, SkScalar, SkScalar, const SkPaint&); void drawPosText (const void*, size_t, const SkPoint[], const SkPaint&); void drawPosTextH (const void*, size_t, const SkScalar[], SkScalar, const SkPaint&); void drawTextOnPath (const void*, size_t, const SkPath&, const SkMatrix*, const SkPaint&); void drawTextRSXform(const void*, size_t, const SkRSXform[], const SkRect*, const SkPaint&); void drawTextBlob (const SkTextBlob*, SkScalar,SkScalar, const SkPaint&); void drawImage (sk_sp, SkScalar,SkScalar, const SkPaint*); void drawImageNine(sk_sp, const SkIRect&, const SkRect&, const SkPaint*); void drawImageRect(sk_sp, const SkRect*, const SkRect&, const SkPaint*, SkCanvas::SrcRectConstraint); void drawImageLattice(sk_sp, const SkCanvas::Lattice&, const SkRect&, const SkPaint*); void drawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4], SkBlendMode, const SkPaint&); void drawPoints(SkCanvas::PointMode, size_t, const SkPoint[], const SkPaint&); void drawVertices(const SkVertices*, const SkMatrix* bones, int boneCount, SkBlendMode, const SkPaint&); void drawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int, SkBlendMode, const SkRect*, const SkPaint*); void drawShadowRec(const SkPath&, const SkDrawShadowRec&); private: template void* push(size_t, Args&&...); template void map(const Fn[], Args...) const; SkAutoTMalloc fBytes; size_t fUsed = 0; size_t fReserved = 0; }; #endif//SkLiteDL_DEFINED