11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 The Android Open Source Project 40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */ 80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkDrawFilter_DEFINED 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkDrawFilter_DEFINED 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkRefCnt.h" 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkCanvas; 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkPaint; 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 1887b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger/** 1987b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger * Right before something is being draw, filter() is called with the 2087b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger * paint. The filter may modify the paint as it wishes, which will then be 2187b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger * used for the actual drawing. Note: this modification only lasts for the 2287b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger * current draw, as a temporary copy of the paint is used. 2387b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger */ 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDrawFilter : public SkRefCnt { 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project enum Type { 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kPaint_Type, 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kPoint_Type, 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kLine_Type, 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kBitmap_Type, 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kRect_Type, 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kPath_Type, 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project kText_Type 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project }; 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 3687b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger /** 3787b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger * Called with the paint that will be used to draw the specified type. 3887b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger * The implementation may modify the paint as they wish. 3987b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger */ 4087b8e645865f9633f410c02252a0fd3feb18f09bDerek Sollenberger virtual void filter(SkPaint*, Type) = 0; 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 44