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