| /* |
| * Copyright 2013 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "SkBitmapFilter.h" |
| #include "SkRTConf.h" |
| #include "SkTypes.h" |
| |
| #include <string.h> |
| |
| // These are the per-scanline callbacks that are used when we must resort to |
| // resampling an image as it is blitted. Typically these are used only when |
| // the image is rotated or has some other complex transformation applied. |
| // Scaled images will usually be rescaled directly before rasterization. |
| |
| SK_CONF_DECLARE(const char *, c_bitmapFilter, "bitmap.filter", "mitchell", "Which scanline bitmap filter to use [mitchell, lanczos, hamming, gaussian, triangle, box]"); |
| |
| SkBitmapFilter *SkBitmapFilter::Allocate() { |
| if (!strcmp(c_bitmapFilter, "mitchell")) { |
| return new SkMitchellFilter(1.f / 3.f, 1.f / 3.f); |
| } else if (!strcmp(c_bitmapFilter, "lanczos")) { |
| return new SkLanczosFilter; |
| } else if (!strcmp(c_bitmapFilter, "hamming")) { |
| return new SkHammingFilter; |
| } else if (!strcmp(c_bitmapFilter, "gaussian")) { |
| return new SkGaussianFilter(2); |
| } else if (!strcmp(c_bitmapFilter, "triangle")) { |
| return new SkTriangleFilter; |
| } else if (!strcmp(c_bitmapFilter, "box")) { |
| return new SkBoxFilter; |
| } else { |
| SkDEBUGFAIL("Unknown filter type"); |
| } |
| |
| return NULL; |
| } |
| |