#include <functional>
#include <numeric>
#include <vector>
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/ranges/algorithm.h"
#include "base/time/time.h"
#include "skia/ext/convolver.h"
#include "skia/ext/recursive_gaussian_convolution.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkPoint.h"
#include "third_party/skia/include/core/SkRect.h"
namespace {
int ComputeRowStride(int width, int channel_count, int stride_slack) { … }
SkIPoint MakeImpulseImage(std::vector<unsigned char>* image,
int width,
int height,
int channel_index,
int channel_count,
int stride_slack) { … }
SkIRect MakeBoxImage(std::vector<unsigned char>* image,
int width,
int height,
int channel_index,
int channel_count,
int stride_slack,
int box_width,
int box_height,
unsigned char value) { … }
int ComputeBoxSum(const std::vector<unsigned char>& image,
const SkIRect& box,
int image_width) { … }
}
namespace skia {
TEST(RecursiveGaussian, SmoothingMethodComparison) { … }
TEST(RecursiveGaussian, SmoothingImpulse) { … }
TEST(RecursiveGaussian, FirstDerivative) { … }
TEST(RecursiveGaussian, SecondDerivative) { … }
}