#include "src/core/SkBlurMaskFilterImpl.h"
#include "include/core/SkBlendMode.h"
#include "include/core/SkBlurTypes.h"
#include "include/core/SkFlattenable.h"
#include "include/core/SkImageFilter.h"
#include "include/core/SkImageInfo.h"
#include "include/core/SkMaskFilter.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPaint.h"
#include "include/core/SkPath.h"
#include "include/core/SkPathBuilder.h"
#include "include/core/SkPathTypes.h"
#include "include/core/SkPixmap.h"
#include "include/core/SkPoint.h"
#include "include/core/SkRRect.h"
#include "include/core/SkRect.h"
#include "include/core/SkRefCnt.h"
#include "include/core/SkScalar.h"
#include "include/effects/SkImageFilters.h"
#include "include/private/base/SkAlign.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkFloatingPoint.h"
#include "include/private/base/SkTemplates.h"
#include "src/base/SkTLazy.h"
#include "src/core/SkBlitter_A8.h"
#include "src/core/SkBlurMask.h"
#include "src/core/SkCachedData.h"
#include "src/core/SkDrawBase.h"
#include "src/core/SkMask.h"
#include "src/core/SkMaskCache.h"
#include "src/core/SkMaskFilterBase.h"
#include "src/core/SkRasterClip.h"
#include "src/core/SkReadBuffer.h"
#include "src/core/SkResourceCache.h"
#include "src/core/SkWriteBuffer.h"
#include <algorithm>
#include <cstdint>
#include <cstring>
#include <utility>
SkBlurMaskFilterImpl::SkBlurMaskFilterImpl(SkScalar sigma, SkBlurStyle style, bool respectCTM)
: … { … }
SkMask::Format SkBlurMaskFilterImpl::getFormat() const { … }
bool SkBlurMaskFilterImpl::asABlur(BlurRec* rec) const { … }
sk_sp<SkImageFilter> SkBlurMaskFilterImpl::asImageFilter(const SkMatrix& ctm) const { … }
SkScalar SkBlurMaskFilterImpl::computeXformedSigma(const SkMatrix& ctm) const { … }
bool SkBlurMaskFilterImpl::filterMask(SkMaskBuilder* dst, const SkMask& src,
const SkMatrix& matrix,
SkIPoint* margin) const { … }
bool SkBlurMaskFilterImpl::filterRectMask(SkMaskBuilder* dst, const SkRect& r,
const SkMatrix& matrix,
SkIPoint* margin,
SkMaskBuilder::CreateMode createMode) const { … }
bool SkBlurMaskFilterImpl::filterRRectMask(SkMaskBuilder* dst, const SkRRect& r,
const SkMatrix& matrix,
SkIPoint* margin,
SkMaskBuilder::CreateMode createMode) const { … }
static bool prepare_to_draw_into_mask(const SkRect& bounds, SkMaskBuilder* mask) { … }
template <typename Proc> bool draw_into_mask(SkMaskBuilder* mask, const SkRect& bounds, Proc proc) { … }
static bool draw_rects_into_mask(const SkRect rects[], int count, SkMaskBuilder* mask) { … }
static bool draw_rrect_into_mask(const SkRRect rrect, SkMaskBuilder* mask) { … }
static bool rect_exceeds(const SkRect& r, SkScalar v) { … }
static SkCachedData* copy_mask_to_cacheddata(SkMaskBuilder* mask) { … }
static SkCachedData* find_cached_rrect(SkTLazy<SkMask>* mask, SkScalar sigma, SkBlurStyle style,
const SkRRect& rrect) { … }
static SkCachedData* add_cached_rrect(SkMaskBuilder* mask, SkScalar sigma, SkBlurStyle style,
const SkRRect& rrect) { … }
static SkCachedData* find_cached_rects(SkTLazy<SkMask>* mask, SkScalar sigma, SkBlurStyle style,
const SkRect rects[], int count) { … }
static SkCachedData* add_cached_rects(SkMaskBuilder* mask, SkScalar sigma, SkBlurStyle style,
const SkRect rects[], int count) { … }
static const bool c_analyticBlurRRect{ … };
SkMaskFilterBase::FilterReturn
SkBlurMaskFilterImpl::filterRRectToNine(const SkRRect& rrect, const SkMatrix& matrix,
const SkIRect& clipBounds,
SkTLazy<NinePatch>* patch) const { … }
static const bool c_analyticBlurNinepatch{ … };
SkMaskFilterBase::FilterReturn
SkBlurMaskFilterImpl::filterRectsToNine(const SkRect rects[], int count,
const SkMatrix& matrix,
const SkIRect& clipBounds,
SkTLazy<NinePatch>* patch) const { … }
void SkBlurMaskFilterImpl::computeFastBounds(const SkRect& src,
SkRect* dst) const { … }
sk_sp<SkFlattenable> SkBlurMaskFilterImpl::CreateProc(SkReadBuffer& buffer) { … }
void SkBlurMaskFilterImpl::flatten(SkWriteBuffer& buffer) const { … }
void sk_register_blur_maskfilter_createproc() { … }
sk_sp<SkMaskFilter> SkMaskFilter::MakeBlur(SkBlurStyle style, SkScalar sigma, bool respectCTM) { … }