blob: 55a7092ba7840b303375bc0dc86ea8f07fdb74d2 [file] [log] [blame]
/*
* 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 nullptr;
}