132d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com#ifndef _SkTestImageFilters_h 232d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com#define _SkTestImageFilters_h 332d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com 432d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com#include "SkImageFilter.h" 5c73dd5c6880739f26216f198c757028fd28df1a4djsollen@google.com#include "SkPoint.h" 632d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com 732d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com// Fun mode that scales down (only) and then scales back up to look pixelated 86806fe87e0b39e283291c1a1c7d1d864230aa2aatfarina@chromium.orgclass SK_API SkDownSampleImageFilter : public SkImageFilter { 932d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.compublic: 109ea3d57fde28a5fe4487a111dc3dd49418235e5esenorblanco static SkDownSampleImageFilter* Create(SkScalar scale, SkImageFilter* input = NULL) { 119fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed if (!SkScalarIsFinite(scale)) { 129fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed return NULL; 139fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed } 149fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed // we don't support scale in this range 159fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed if (scale > SK_Scalar1 || scale <= 0) { 169fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed return NULL; 179fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed } 189ea3d57fde28a5fe4487a111dc3dd49418235e5esenorblanco return SkNEW_ARGS(SkDownSampleImageFilter, (scale, input)); 19cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org } 20fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 21ba28d03e94dc221d6a803bf2a84a420b9159255cdjsollen@google.com SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter) 22fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 2332d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.comprotected: 249ea3d57fde28a5fe4487a111dc3dd49418235e5esenorblanco SkDownSampleImageFilter(SkScalar scale, SkImageFilter* input) 259ea3d57fde28a5fe4487a111dc3dd49418235e5esenorblanco : INHERITED(1, &input), fScale(scale) {} 269fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING 278b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org SkDownSampleImageFilter(SkReadBuffer& buffer); 289fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed#endif 298b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; 30fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 314cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 32ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE; 33fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 3432d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.comprivate: 3532d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com SkScalar fScale; 36fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 3732d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com typedef SkImageFilter INHERITED; 3832d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com}; 3932d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com 4032d25b6f5f4355d4c5281694034ba3a5aa2cf571reed@google.com#endif 41