blob: 2509d499b1c2e60040768953e811e51eb2f7f3e0 [file] [log] [blame]
* Copyright 2018 Google Inc.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
#ifndef SkBlurPriv_DEFINED
#define SkBlurPriv_DEFINED
#include "include/core/SkRRect.h"
#include "include/core/SkSize.h"
static const int kSkBlurRRectMaxDivisions = 6;
// This method computes all the parameters for drawing a partially occluded nine-patched
// blurred rrect mask:
// rrectToDraw - the integerized rrect to draw in the mask
// widthHeight - how large to make the mask (rrectToDraw will be centered in this coord sys)
// rectXs, rectYs - the x & y coordinates of the covering geometry lattice
// texXs, texYs - the texture coordinate at each point in rectXs & rectYs
// numXs, numYs - number of coordinates in the x & y directions
// skipMask - bit mask that contains a 1-bit whenever one of the cells is occluded
// It returns true if 'devRRect' is nine-patchable
bool SkComputeBlurredRRectParams(const SkRRect& srcRRect, const SkRRect& devRRect,
const SkRect& occluder,
SkScalar sigma, SkScalar xformedSigma,
SkRRect* rrectToDraw,
SkISize* widthHeight,
SkScalar rectXs[kSkBlurRRectMaxDivisions],
SkScalar rectYs[kSkBlurRRectMaxDivisions],
SkScalar texXs[kSkBlurRRectMaxDivisions],
SkScalar texYs[kSkBlurRRectMaxDivisions],
int* numXs, int* numYs, uint32_t* skipMask);
extern void sk_register_blur_maskfilter_createproc();