1/*
2 * Copyright 2018 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkBlurPriv_DEFINED
9#define SkBlurPriv_DEFINED
10
11#include "include/core/SkRRect.h"
12#include "include/core/SkSize.h"
13
14static const int kSkBlurRRectMaxDivisions = 6;
15
16// This method computes all the parameters for drawing a partially occluded nine-patched
17// blurred rrect mask:
18// rrectToDraw - the integerized rrect to draw in the mask
19// widthHeight - how large to make the mask (rrectToDraw will be centered in this coord sys)
20// rectXs, rectYs - the x & y coordinates of the covering geometry lattice
21// texXs, texYs - the texture coordinate at each point in rectXs & rectYs
22// numXs, numYs - number of coordinates in the x & y directions
23// skipMask - bit mask that contains a 1-bit whenever one of the cells is occluded
24// It returns true if 'devRRect' is nine-patchable
25bool SkComputeBlurredRRectParams(const SkRRect& srcRRect, const SkRRect& devRRect,
26 const SkRect& occluder,
27 SkScalar sigma, SkScalar xformedSigma,
28 SkRRect* rrectToDraw,
29 SkISize* widthHeight,
30 SkScalar rectXs[kSkBlurRRectMaxDivisions],
31 SkScalar rectYs[kSkBlurRRectMaxDivisions],
32 SkScalar texXs[kSkBlurRRectMaxDivisions],
33 SkScalar texYs[kSkBlurRRectMaxDivisions],
34 int* numXs, int* numYs, uint32_t* skipMask);
35
36extern void sk_register_blur_maskfilter_createproc();
37
38#endif
39