blob: 9c436291798c477599e2ec343e30fae045e22c43 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
reed@android.com8a1c16f2008-12-17 15:59:43 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2008 The Android Open Source Project
reed@android.com8a1c16f2008-12-17 15:59:43 +00004 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00005 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
reed@android.com8a1c16f2008-12-17 15:59:43 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
reed@android.com8a1c16f2008-12-17 15:59:43 +000010#ifndef SkKernel33MaskFilter_DEFINED
11#define SkKernel33MaskFilter_DEFINED
12
13#include "SkMaskFilter.h"
14
15class SkKernel33ProcMaskFilter : public SkMaskFilter {
16public:
17 SkKernel33ProcMaskFilter(unsigned percent256 = 256)
18 : fPercent256(percent256) {}
19
20 virtual uint8_t computeValue(uint8_t* const* srcRows) = 0;
21
22 // overrides from SkMaskFilter
23 virtual SkMask::Format getFormat();
24 virtual bool filterMask(SkMask*, const SkMask&, const SkMatrix&, SkIPoint*);
25
26 // overrides from SkFlattenable
27 virtual void flatten(SkFlattenableWriteBuffer& wb);
28
29protected:
30 SkKernel33ProcMaskFilter(SkFlattenableReadBuffer& rb);
31
32private:
33 int fPercent256;
34
35 typedef SkMaskFilter INHERITED;
36};
37
38///////////////////////////////////////////////////////////////////////////////
39
40class SkKernel33MaskFilter : public SkKernel33ProcMaskFilter {
41public:
42 SkKernel33MaskFilter(const int coeff[3][3], int shift, int percent256 = 256)
mike@reedtribe.org6b919c32011-04-20 11:17:30 +000043 : SkKernel33ProcMaskFilter(percent256) {
reed@android.com8a1c16f2008-12-17 15:59:43 +000044 memcpy(fKernel, coeff, 9 * sizeof(int));
45 fShift = shift;
46 }
47
48 // override from SkKernel33ProcMaskFilter
49 virtual uint8_t computeValue(uint8_t* const* srcRows);
50
51 // overrides from SkFlattenable
52 virtual void flatten(SkFlattenableWriteBuffer& wb);
djsollen@google.comba28d032012-03-26 17:57:35 +000053 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkKernel33MaskFilter)
reed@android.com8a1c16f2008-12-17 15:59:43 +000054
55private:
56 int fKernel[3][3];
57 int fShift;
58
59 SkKernel33MaskFilter(SkFlattenableReadBuffer& rb);
reed@android.com8a1c16f2008-12-17 15:59:43 +000060
61 typedef SkKernel33ProcMaskFilter INHERITED;
62};
63
64#endif