1ee424acbb87bf999be132a437527e656e37541d7Florin Malita/* 2ee424acbb87bf999be132a437527e656e37541d7Florin Malita * Copyright 2016 Google Inc. 3ee424acbb87bf999be132a437527e656e37541d7Florin Malita * 4ee424acbb87bf999be132a437527e656e37541d7Florin Malita * Use of this source code is governed by a BSD-style license that can be 5ee424acbb87bf999be132a437527e656e37541d7Florin Malita * found in the LICENSE file. 6ee424acbb87bf999be132a437527e656e37541d7Florin Malita */ 7ee424acbb87bf999be132a437527e656e37541d7Florin Malita 8ee424acbb87bf999be132a437527e656e37541d7Florin Malita#ifndef SkNoDrawCanvas_DEFINED 9ee424acbb87bf999be132a437527e656e37541d7Florin Malita#define SkNoDrawCanvas_DEFINED 10ee424acbb87bf999be132a437527e656e37541d7Florin Malita 11ee424acbb87bf999be132a437527e656e37541d7Florin Malita#include "SkCanvas.h" 12199fb875c5e63c13233209e89b943c7ac7ab6665Brian Salomon#include "SkVertices.h" 13ee424acbb87bf999be132a437527e656e37541d7Florin Malita 14439ace939b6aaa58408ece0e9e89b633353571aeFlorin Malitastruct SkIRect; 15439ace939b6aaa58408ece0e9e89b633353571aeFlorin Malita 16ee424acbb87bf999be132a437527e656e37541d7Florin Malita// SkNoDrawCanvas is a helper for SkCanvas subclasses which do not need to 17ee424acbb87bf999be132a437527e656e37541d7Florin Malita// actually rasterize (e.g., analysis of the draw calls). 18ee424acbb87bf999be132a437527e656e37541d7Florin Malita// 19ee424acbb87bf999be132a437527e656e37541d7Florin Malita// It provides the following simplifications: 20ee424acbb87bf999be132a437527e656e37541d7Florin Malita// 21ee424acbb87bf999be132a437527e656e37541d7Florin Malita// * not backed by any device/pixels 22ee424acbb87bf999be132a437527e656e37541d7Florin Malita// * conservative clipping (clipping calls only use rectangles) 23ee424acbb87bf999be132a437527e656e37541d7Florin Malita// 24ee424acbb87bf999be132a437527e656e37541d7Florin Malitaclass SK_API SkNoDrawCanvas : public SkCanvas { 25ee424acbb87bf999be132a437527e656e37541d7Florin Malitapublic: 26ee424acbb87bf999be132a437527e656e37541d7Florin Malita SkNoDrawCanvas(int width, int height); 27ee424acbb87bf999be132a437527e656e37541d7Florin Malita 28439ace939b6aaa58408ece0e9e89b633353571aeFlorin Malita // TODO: investigate the users of this ctor. 29439ace939b6aaa58408ece0e9e89b633353571aeFlorin Malita SkNoDrawCanvas(const SkIRect&); 30439ace939b6aaa58408ece0e9e89b633353571aeFlorin Malita 31ee424acbb87bf999be132a437527e656e37541d7Florin Malitaprotected: 32ee424acbb87bf999be132a437527e656e37541d7Florin Malita SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec& rec) override; 33ee424acbb87bf999be132a437527e656e37541d7Florin Malita 34d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita // No-op overrides for aborting rasterization earlier than SkNullBlitter. 35d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override {} 36d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawDrawable(SkDrawable*, const SkMatrix*) override {} 37d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawText(const void*, size_t, SkScalar, SkScalar, const SkPaint&) override {} 38d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawPosText(const void*, size_t, const SkPoint[], const SkPaint&) override {} 39d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawPosTextH(const void*, size_t, const SkScalar[], SkScalar, const SkPaint&) override {} 40d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawTextOnPath(const void*, size_t, const SkPath&, const SkMatrix*, 41d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita const SkPaint&) override {} 42d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawTextRSXform(const void*, size_t, const SkRSXform[], const SkRect*, 43d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita const SkPaint&) override {} 44d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawTextBlob(const SkTextBlob*, SkScalar, SkScalar, const SkPaint&) override {} 45d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4], SkBlendMode, 46d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita const SkPaint&) override {} 47d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita 48d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawPaint(const SkPaint&) override {} 49d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawPoints(PointMode, size_t, const SkPoint[], const SkPaint&) override {} 50d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawRect(const SkRect&, const SkPaint&) override {} 51d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawRegion(const SkRegion&, const SkPaint&) override {} 52d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawOval(const SkRect&, const SkPaint&) override {} 53d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override {} 54d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawRRect(const SkRRect&, const SkPaint&) override {} 55d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawPath(const SkPath&, const SkPaint&) override {} 56d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawBitmap(const SkBitmap&, SkScalar, SkScalar, const SkPaint*) override {} 57d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawBitmapRect(const SkBitmap&, const SkRect*, const SkRect&, const SkPaint*, 58d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita SrcRectConstraint) override {} 59d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawImage(const SkImage*, SkScalar, SkScalar, const SkPaint*) override {} 60d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawImageRect(const SkImage*, const SkRect*, const SkRect&, const SkPaint*, 61d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita SrcRectConstraint) override {} 62d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawImageNine(const SkImage*, const SkIRect&, const SkRect&, const SkPaint*) override {} 63d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawBitmapNine(const SkBitmap&, const SkIRect&, const SkRect&, 64d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita const SkPaint*) override {} 65d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawImageLattice(const SkImage*, const Lattice&, const SkRect&, 66d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita const SkPaint*) override {} 67d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawBitmapLattice(const SkBitmap&, const Lattice&, const SkRect&, 68d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita const SkPaint*) override {} 69e88a1cb20e6b4c9f099070112225a88693a4630bMike Reed void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override {} 70d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita void onDrawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], 71d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita int, SkBlendMode, const SkRect*, const SkPaint*) override {} 72d8c278af51f0e5b3f98f66320acb827310b50e2cFlorin Malita 73ee424acbb87bf999be132a437527e656e37541d7Florin Malitaprivate: 74ee424acbb87bf999be132a437527e656e37541d7Florin Malita typedef SkCanvas INHERITED; 75ee424acbb87bf999be132a437527e656e37541d7Florin Malita}; 76ee424acbb87bf999be132a437527e656e37541d7Florin Malita 774b7b6f0229fa51f5beb71f92cb77ba84d39b41e1Florin Malita#endif // SkNoDrawCanvas_DEFINED 78