blob: 7b3eaf6b18a7f6250fa111e97a1ec58aae6b0391 [file] [log] [blame]
Florin Malitaee424ac2016-12-01 12:47:59 -05001/*
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 SkNoDrawCanvas_DEFINED
9#define SkNoDrawCanvas_DEFINED
10
11#include "SkCanvas.h"
Brian Salomon199fb872017-02-06 09:41:10 -050012#include "SkVertices.h"
Florin Malitaee424ac2016-12-01 12:47:59 -050013
Florin Malita439ace92016-12-02 12:05:41 -050014struct SkIRect;
15
Florin Malitaee424ac2016-12-01 12:47:59 -050016// SkNoDrawCanvas is a helper for SkCanvas subclasses which do not need to
17// actually rasterize (e.g., analysis of the draw calls).
18//
19// It provides the following simplifications:
20//
21// * not backed by any device/pixels
22// * conservative clipping (clipping calls only use rectangles)
23//
24class SK_API SkNoDrawCanvas : public SkCanvas {
25public:
26 SkNoDrawCanvas(int width, int height);
27
Florin Malita439ace92016-12-02 12:05:41 -050028 // TODO: investigate the users of this ctor.
29 SkNoDrawCanvas(const SkIRect&);
30
Adrienne Walker6a280a52017-05-01 13:45:01 -070031 // Optimization to reset state to be the same as after construction.
32 void resetCanvas(int width, int height) {
33 resetForNextPicture(SkIRect::MakeWH(width, height));
34 }
35
Florin Malitaee424ac2016-12-01 12:47:59 -050036protected:
37 SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec& rec) override;
38
Florin Malitad8c278a2016-12-04 11:44:52 -050039 // No-op overrides for aborting rasterization earlier than SkNullBlitter.
40 void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override {}
41 void onDrawDrawable(SkDrawable*, const SkMatrix*) override {}
42 void onDrawText(const void*, size_t, SkScalar, SkScalar, const SkPaint&) override {}
43 void onDrawPosText(const void*, size_t, const SkPoint[], const SkPaint&) override {}
44 void onDrawPosTextH(const void*, size_t, const SkScalar[], SkScalar, const SkPaint&) override {}
45 void onDrawTextOnPath(const void*, size_t, const SkPath&, const SkMatrix*,
46 const SkPaint&) override {}
47 void onDrawTextRSXform(const void*, size_t, const SkRSXform[], const SkRect*,
48 const SkPaint&) override {}
49 void onDrawTextBlob(const SkTextBlob*, SkScalar, SkScalar, const SkPaint&) override {}
50 void onDrawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4], SkBlendMode,
51 const SkPaint&) override {}
52
53 void onDrawPaint(const SkPaint&) override {}
54 void onDrawPoints(PointMode, size_t, const SkPoint[], const SkPaint&) override {}
55 void onDrawRect(const SkRect&, const SkPaint&) override {}
56 void onDrawRegion(const SkRegion&, const SkPaint&) override {}
57 void onDrawOval(const SkRect&, const SkPaint&) override {}
58 void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override {}
59 void onDrawRRect(const SkRRect&, const SkPaint&) override {}
60 void onDrawPath(const SkPath&, const SkPaint&) override {}
61 void onDrawBitmap(const SkBitmap&, SkScalar, SkScalar, const SkPaint*) override {}
62 void onDrawBitmapRect(const SkBitmap&, const SkRect*, const SkRect&, const SkPaint*,
63 SrcRectConstraint) override {}
64 void onDrawImage(const SkImage*, SkScalar, SkScalar, const SkPaint*) override {}
65 void onDrawImageRect(const SkImage*, const SkRect*, const SkRect&, const SkPaint*,
66 SrcRectConstraint) override {}
67 void onDrawImageNine(const SkImage*, const SkIRect&, const SkRect&, const SkPaint*) override {}
68 void onDrawBitmapNine(const SkBitmap&, const SkIRect&, const SkRect&,
69 const SkPaint*) override {}
70 void onDrawImageLattice(const SkImage*, const Lattice&, const SkRect&,
71 const SkPaint*) override {}
72 void onDrawBitmapLattice(const SkBitmap&, const Lattice&, const SkRect&,
73 const SkPaint*) override {}
Mike Reede88a1cb2017-03-17 09:50:46 -040074 void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override {}
Florin Malitad8c278a2016-12-04 11:44:52 -050075 void onDrawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[],
76 int, SkBlendMode, const SkRect*, const SkPaint*) override {}
77
Florin Malitaee424ac2016-12-01 12:47:59 -050078private:
79 typedef SkCanvas INHERITED;
80};
81
Florin Malita4b7b6f02016-12-01 15:46:26 -050082#endif // SkNoDrawCanvas_DEFINED