bool SkDilateImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& source, const Context& ctx, SkBitmap* dst, SkIPoint* offset) const { Proc dilateXProc = SkMorphologyGetPlatformProc(kDilateX_SkMorphologyProcType); if (!dilateXProc) { dilateXProc = dilate<kX>; } Proc dilateYProc = SkMorphologyGetPlatformProc(kDilateY_SkMorphologyProcType); if (!dilateYProc) { dilateYProc = dilate<kY>; } return this->filterImageGeneric(dilateXProc, dilateYProc, proxy, source, ctx, dst, offset); }
static void erodeY(const SkBitmap& src, SkBitmap* dst, int radiusY, const SkIRect& bounds) { SkMorphologyProc erodeYProc = SkMorphologyGetPlatformProc(kErodeY_SkMorphologyProcType); if (!erodeYProc) { erodeYProc = erode<kY>; } erodeYProc(src.getAddr32(bounds.left(), bounds.top()), dst->getAddr32(0, 0), radiusY, bounds.height(), bounds.width(), src.rowBytesAsPixels(), dst->rowBytesAsPixels()); }
static void dilateX(const SkBitmap& src, SkBitmap* dst, int radiusX, const SkIRect& bounds) { SkMorphologyProc dilateXProc = SkMorphologyGetPlatformProc(kDilateX_SkMorphologyProcType); if (!dilateXProc) { dilateXProc = dilate<kX>; } dilateXProc(src.getAddr32(bounds.left(), bounds.top()), dst->getAddr32(0, 0), radiusX, bounds.width(), bounds.height(), src.rowBytesAsPixels(), dst->rowBytesAsPixels()); }