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