blob: 5530094cc546affff3d5c2492c587b9fe3466f9a [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00002 * Copyright 2008 The Android Open Source Project
reed@android.com8a1c16f2008-12-17 15:59:43 +00003 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00004 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
reed@android.com8a1c16f2008-12-17 15:59:43 +00006 */
7
8#ifndef SkKernel33MaskFilter_DEFINED
9#define SkKernel33MaskFilter_DEFINED
10
11#include "SkMaskFilter.h"
12
tfarina@chromium.org6806fe82012-10-12 14:41:39 +000013class SK_API SkKernel33ProcMaskFilter : public SkMaskFilter {
reed@android.com8a1c16f2008-12-17 15:59:43 +000014public:
reed@google.com30711b72012-12-18 19:18:39 +000015 virtual uint8_t computeValue(uint8_t* const* srcRows) const = 0;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000016
reed@google.com30711b72012-12-18 19:18:39 +000017 virtual SkMask::Format getFormat() const SK_OVERRIDE;
18 virtual bool filterMask(SkMask*, const SkMask&, const SkMatrix&,
19 SkIPoint*) const SK_OVERRIDE;
reed@android.com8a1c16f2008-12-17 15:59:43 +000020
robertphillips@google.com0bd80fa2013-03-18 17:53:38 +000021 SkDEVCODE(virtual void toString(SkString* str) const SK_OVERRIDE;)
22
reed@android.com8a1c16f2008-12-17 15:59:43 +000023protected:
commit-bot@chromium.org7c9d0f32014-02-21 10:13:32 +000024 SkKernel33ProcMaskFilter(unsigned percent256 = 256)
25 : fPercent256(percent256) {}
commit-bot@chromium.org8b0e8ac2014-01-30 18:58:24 +000026 SkKernel33ProcMaskFilter(SkReadBuffer& rb);
27 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
reed@android.com8a1c16f2008-12-17 15:59:43 +000028
29private:
30 int fPercent256;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000031
reed@android.com8a1c16f2008-12-17 15:59:43 +000032 typedef SkMaskFilter INHERITED;
33};
34
35///////////////////////////////////////////////////////////////////////////////
36
tfarina@chromium.org6806fe82012-10-12 14:41:39 +000037class SK_API SkKernel33MaskFilter : public SkKernel33ProcMaskFilter {
reed@android.com8a1c16f2008-12-17 15:59:43 +000038public:
commit-bot@chromium.org7c9d0f32014-02-21 10:13:32 +000039 static SkKernel33MaskFilter* Create(const int coeff[3][3], int shift, int percent256 = 256) {
40 return SkNEW_ARGS(SkKernel33MaskFilter, (coeff, shift, percent256));
reed@android.com8a1c16f2008-12-17 15:59:43 +000041 }
rmistry@google.comfbfcd562012-08-23 18:09:54 +000042
reed@android.com8a1c16f2008-12-17 15:59:43 +000043 // override from SkKernel33ProcMaskFilter
reed@google.com30711b72012-12-18 19:18:39 +000044 virtual uint8_t computeValue(uint8_t* const* srcRows) const SK_OVERRIDE;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000045
robertphillips@google.com0bd80fa2013-03-18 17:53:38 +000046 SkDEVCODE(virtual void toString(SkString* str) const SK_OVERRIDE;)
djsollen@google.comba28d032012-03-26 17:57:35 +000047 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkKernel33MaskFilter)
rmistry@google.comfbfcd562012-08-23 18:09:54 +000048
commit-bot@chromium.org7c9d0f32014-02-21 10:13:32 +000049protected:
50#ifdef SK_SUPPORT_LEGACY_PUBLICEFFECTCONSTRUCTORS
51public:
52#endif
53 SkKernel33MaskFilter(const int coeff[3][3], int shift, int percent256 = 256)
54 : SkKernel33ProcMaskFilter(percent256) {
55 memcpy(fKernel, coeff, 9 * sizeof(int));
56 fShift = shift;
57 }
58
reed@android.com8a1c16f2008-12-17 15:59:43 +000059private:
60 int fKernel[3][3];
61 int fShift;
62
commit-bot@chromium.org8b0e8ac2014-01-30 18:58:24 +000063 SkKernel33MaskFilter(SkReadBuffer& rb);
64 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000065
reed@android.com8a1c16f2008-12-17 15:59:43 +000066 typedef SkKernel33ProcMaskFilter INHERITED;
67};
68
69#endif