| 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 | |
| 14 | static 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 |
| 25 | bool 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 | |
| 36 | extern void sk_register_blur_maskfilter_createproc(); |
| 37 | |
| 38 | #endif |
| 39 | |