using XFESystem.Browser; using XFESystem.Desktop; namespace XFESystem.Browser.Tests; public sealed class RasterCoveragePerformanceTests { [Fact] public void SolidSpansPreserveRoundedFractionalClippedPixelsAtBothScales() { var random=new Random(240617); foreach(int scale in new[]{1,2}) for(int sample=0;sample<120;sample++) { var bounds=new BrowserRect(3+random.NextDouble(),4+random.NextDouble(),2+random.NextDouble()*45,2+random.NextDouble()*40); double maximum=Math.Min(bounds.Width,bounds.Height)/2; var radii=new BrowserEdges(random.NextDouble()*maximum,random.NextDouble()*maximum,random.NextDouble()*maximum,random.NextDouble()*maximum); double alpha=sample%3==0?1:random.NextDouble(),opacity=sample%4==0?1:random.NextDouble(); var decoration=new BrowserBoxDecoration(radii,default,new(0x123456,alpha),default,default,default,default,[],bounds,[]); var command=new BrowserDrawCommand(BrowserDrawKind.Fill,bounds,0,null,0x123456,Opacity:opacity,Decoration:decoration); var clip=sample%2==0?new BrowserRect(0,0,70,70):new BrowserRect(8.25,10.75,26.5,23.25); var canvas=new CoveragePixels(scale); BrowserBoxRasterPainter.Paint(canvas,command,bounds,clip); var area=bounds.Intersect(clip);var native=new BrowserRect(bounds.X*scale,bounds.Y*scale,bounds.Width*scale,bounds.Height*scale); var nativeRadii=new BrowserEdges(radii.Top*scale,radii.Right*scale,radii.Bottom*scale,radii.Left*scale); for(int y=0;y<140;y++)for(int x=0;x<140;x++) { bool touched=x>=Math.Floor(area.X*scale)&&x=Math.Floor(area.Y*scale)&&y70;public int Height=>70;public int ScalePercent=>scale*100; public byte[] Alpha=new byte[140*140]; public void BlendCoverage(uint rgb,int x,int y,int width,int height,ReadOnlySpan source) {for(int row=0;row