What steps will reproduce the problem?
Case 1: General code sketch to make top half of box disappear:
SkRect r = (0,0,100,100)
EndCenter = (50,50)
EndRadius = 100.0 / 3.0;
StartCenter = (EndCenter.x, EndCenter.y + EndRadius + 0.001);
StartRadius = 0.0;
Shader = CreateTwoPointConical(startCenter, StartRadius, EndCenter, EndRadius, ...) //can simply use two color gradients at 0 and 1 here
Case2: To add mysterious lines below where circles touch, change the one line:
StartCenter = (EndCenter.x, EndCenter.y + EndRadius - 0.0001);
What is the expected output? What do you see instead?
For the first case, the expected result is to cut off the bottom part of the square where the start radius pops out of the large one and the top part of the square is completely drawn. In reality the bottom is getting chopped correctly but part of the top of the rect is also being chopped.
For case 2, depending on numerical issues, either the entire rect should be drawn with gradient inside large circle (if numeric comps put the small circle inside the large one), or to simply chop off bottom right at edge of circle. In reality we add a few extra rows of pixels below circle (compare this to case when the circle sits right on top of edge).
Please use labels and text to provide additional information.