/* * 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 // 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 nullptr; }