blob: 132bc376c899d88889a0201c56af980b8f5181a2 [file] [log] [blame]
mtklein9c5052f2016-08-06 12:51:51 -07001/*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkLiteDL_DEFINED
9#define SkLiteDL_DEFINED
10
11#include "SkCanvas.h"
12#include "SkPaint.h"
13#include "SkPath.h"
14#include "SkDrawable.h"
15#include "SkRect.h"
16#include "SkTDArray.h"
17
mtkleinec559592016-08-06 20:31:30 -070018class GrContext;
19
mtklein9c5052f2016-08-06 12:51:51 -070020class SkLiteDL final : public SkDrawable {
21public:
22 static sk_sp<SkLiteDL> New(SkRect);
23
mtkleinec559592016-08-06 20:31:30 -070024 void optimizeFor(GrContext*);
mtklein03591a72016-08-07 13:35:46 -070025 void makeThreadsafe();
mtkleinec559592016-08-06 20:31:30 -070026
mtklein9c5052f2016-08-06 12:51:51 -070027 void save();
mtklein29de8d92016-08-07 11:35:08 -070028 void saveLayer(const SkRect*, const SkPaint*, const SkImageFilter*, SkCanvas::SaveLayerFlags);
mtklein9c5052f2016-08-06 12:51:51 -070029 void restore();
30
31 void concat (const SkMatrix&);
32 void setMatrix (const SkMatrix&);
mtklein29de8d92016-08-07 11:35:08 -070033 void translateZ(SkScalar);
mtklein9c5052f2016-08-06 12:51:51 -070034
mtklein6f8411d2016-08-06 15:28:11 -070035 void clipPath (const SkPath&, SkRegion::Op, bool aa);
mtklein9c5052f2016-08-06 12:51:51 -070036 void clipRect (const SkRect&, SkRegion::Op, bool aa);
mtklein6f8411d2016-08-06 15:28:11 -070037 void clipRRect (const SkRRect&, SkRegion::Op, bool aa);
38 void clipRegion(const SkRegion&, SkRegion::Op);
mtklein9c5052f2016-08-06 12:51:51 -070039
mtklein6f8411d2016-08-06 15:28:11 -070040 void drawPaint (const SkPaint&);
mtklein9c5052f2016-08-06 12:51:51 -070041 void drawPath (const SkPath&, const SkPaint&);
42 void drawRect (const SkRect&, const SkPaint&);
mtklein6f8411d2016-08-06 15:28:11 -070043 void drawOval (const SkRect&, const SkPaint&);
44 void drawRRect (const SkRRect&, const SkPaint&);
45 void drawDRRect(const SkRRect&, const SkRRect&, const SkPaint&);
mtklein9c5052f2016-08-06 12:51:51 -070046
mtklein29de8d92016-08-07 11:35:08 -070047 void drawAnnotation (const SkRect&, const char*, SkData*);
48 void drawDrawable (SkDrawable*, const SkMatrix*);
49 void drawPicture (const SkPicture*, const SkMatrix*, const SkPaint*);
50 void drawShadowedPicture(const SkPicture*, const SkMatrix*, const SkPaint*);
mtklein9c5052f2016-08-06 12:51:51 -070051
mtkleinec559592016-08-06 20:31:30 -070052 void drawText (const void*, size_t, SkScalar, SkScalar, const SkPaint&);
53 void drawPosText (const void*, size_t, const SkPoint[], const SkPaint&);
54 void drawPosTextH (const void*, size_t, const SkScalar[], SkScalar, const SkPaint&);
mtklein29de8d92016-08-07 11:35:08 -070055 void drawTextOnPath (const void*, size_t, const SkPath&, const SkMatrix*, const SkPaint&);
56 void drawTextRSXform(const void*, size_t, const SkRSXform[], const SkRect*, const SkPaint&);
mtkleinec559592016-08-06 20:31:30 -070057 void drawTextBlob (const SkTextBlob*, SkScalar,SkScalar, const SkPaint&);
mtklein9c5052f2016-08-06 12:51:51 -070058
mtkleinec559592016-08-06 20:31:30 -070059 void drawBitmap (const SkBitmap&, SkScalar, SkScalar, const SkPaint*);
60 void drawBitmapNine(const SkBitmap&, const SkIRect&, const SkRect&, const SkPaint*);
61 void drawBitmapRect(const SkBitmap&, const SkRect*, const SkRect&, const SkPaint*,
62 SkCanvas::SrcRectConstraint);
mtklein9c5052f2016-08-06 12:51:51 -070063
mtkleinec559592016-08-06 20:31:30 -070064 void drawImage (const SkImage*, SkScalar,SkScalar, const SkPaint*);
65 void drawImageNine(const SkImage*, const SkIRect&, const SkRect&, const SkPaint*);
66 void drawImageRect(const SkImage*, const SkRect*, const SkRect&, const SkPaint*,
67 SkCanvas::SrcRectConstraint);
mtklein29de8d92016-08-07 11:35:08 -070068 void drawImageLattice(const SkImage*, const SkCanvas::Lattice&, const SkRect&, const SkPaint*);
mtklein9c5052f2016-08-06 12:51:51 -070069
70 void drawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4],
mtklein03591a72016-08-07 13:35:46 -070071 SkXfermode*, const SkPaint&);
mtklein29de8d92016-08-07 11:35:08 -070072 void drawPoints(SkCanvas::PointMode, size_t, const SkPoint[], const SkPaint&);
mtklein9c5052f2016-08-06 12:51:51 -070073 void drawVertices(SkCanvas::VertexMode, int, const SkPoint[], const SkPoint[], const SkColor[],
mtklein03591a72016-08-07 13:35:46 -070074 SkXfermode*, const uint16_t[], int, const SkPaint&);
mtklein9c5052f2016-08-06 12:51:51 -070075 void drawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int,
mtklein29de8d92016-08-07 11:35:08 -070076 SkXfermode::Mode, const SkRect*, const SkPaint*);
mtklein9c5052f2016-08-06 12:51:51 -070077
78private:
79 SkLiteDL();
80 ~SkLiteDL();
81
82 void internal_dispose() const override;
83
84 SkRect onGetBounds() override;
85 void onDraw(SkCanvas*) override;
86
87 SkLiteDL* fNext;
88 SkRect fBounds;
89 SkTDArray<uint8_t> fBytes;
90};
91
92#endif//SkLiteDL_DEFINED