15bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com
2f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com/*
35bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Copyright 2011 The Android Open Source Project
4f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com *
55bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Use of this source code is governed by a BSD-style license that can be
65bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * found in the LICENSE file.
7f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com */
8f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com
95bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com
10f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#ifndef SkDrawFilter_DEFINED
11f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#define SkDrawFilter_DEFINED
12f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com
13f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkRefCnt.h"
14f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com
15f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comclass SkCanvas;
16f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comclass SkPaint;
17f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com
188196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com/**
198196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com *  Right before something is being draw, filter() is called with the
208196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com *  paint. The filter may modify the paint as it wishes, which will then be
218196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com *  used for the actual drawing. Note: this modification only lasts for the
228196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com *  current draw, as a temporary copy of the paint is used.
238196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com */
24596b4bf3487a924fd07099284a01545774c0936ebungeman@google.comclass SK_API SkDrawFilter : public SkRefCnt {
25f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.compublic:
268f5d7ada669d9abe5628d02d5d1c410f248234e7reed@google.com    SK_DECLARE_INST_COUNT(SkDrawFilter)
271fde19f3b72345b473a1a9bd64729237a388813frmistry@google.com
28f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com    enum Type {
29f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com        kPaint_Type,
30f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com        kPoint_Type,
31f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com        kLine_Type,
32f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com        kBitmap_Type,
33f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com        kRect_Type,
343c2f57af9a1d4e5cfa92d52f0c20a5acbbfc10eacommit-bot@chromium.org        kRRect_Type,
359f4434e38b0718796d97d6746265f076546dd19cjvanverth@google.com        kOval_Type,
36f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com        kPath_Type,
373386e885c278f6de1873ceecdc824d8c48923688caryclark@google.com        kText_Type,
38b485a625f677a773fedba8cb036a8cbc80e6a12dreed@google.com    };
393386e885c278f6de1873ceecdc824d8c48923688caryclark@google.com
40b485a625f677a773fedba8cb036a8cbc80e6a12dreed@google.com    enum {
41b485a625f677a773fedba8cb036a8cbc80e6a12dreed@google.com        kTypeCount = kText_Type + 1
42f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com    };
43f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com
448196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com    /**
458196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com     *  Called with the paint that will be used to draw the specified type.
46b485a625f677a773fedba8cb036a8cbc80e6a12dreed@google.com     *  The implementation may modify the paint as they wish. If filter()
47b485a625f677a773fedba8cb036a8cbc80e6a12dreed@google.com     *  returns false, the draw will be skipped.
488196794a85b76ca1310e2fa0a54c2b6a02091397reed@google.com     */
49b485a625f677a773fedba8cb036a8cbc80e6a12dreed@google.com    virtual bool filter(SkPaint*, Type) = 0;
50f5c20afa64879f855e3a5e1834158fbc26455dffrobertphillips@google.com
51f5c20afa64879f855e3a5e1834158fbc26455dffrobertphillips@google.comprivate:
52f5c20afa64879f855e3a5e1834158fbc26455dffrobertphillips@google.com    typedef SkRefCnt INHERITED;
53f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com};
54f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com
55f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#endif
56