@@ -419,7 +419,7 @@ RenderLayer _createMaskLayer(RenderLayer parentLayer, uiRect maskBounds,
419
419
var maskState = maskLayer . states [ maskLayer . states . Count - 1 ] ;
420
420
maskState . matrix = parentState . matrix ;
421
421
422
- drawCallback . Invoke ( uiPaint . shapeOnly ( paint ) , mesh , convex , alpha , tex , texBound , textMesh , notEmoji ) ;
422
+ drawCallback . Invoke ( uiPaint . shapeOnly ( paint ) , mesh , null , convex , alpha , tex , texBound , textMesh , notEmoji ) ;
423
423
424
424
var removed = this . _layers . removeLast ( ) ;
425
425
D . assert ( removed == maskLayer ) ;
@@ -528,40 +528,44 @@ void _drawWithMaskFilter(uiRect meshBounds, uiPaint paint, uiMaskFilter maskFilt
528
528
layer . draws . Add ( CanvasShader . texRT ( layer , paint , blurMesh , blurLayer ) ) ;
529
529
}
530
530
531
- delegate void _drawPathDrawMeshCallbackDelegate ( uiPaint p , uiMeshMesh mesh , bool convex , float alpha ,
531
+ delegate void _drawPathDrawMeshCallbackDelegate ( uiPaint p , uiMeshMesh fillMesh , uiMeshMesh strokeMesh , bool convex , float alpha ,
532
532
Texture tex , uiRect textBlobBounds , TextBlobMesh textMesh , bool notEmoji ) ;
533
533
534
- void _drawPathDrawMeshCallback ( uiPaint p , uiMeshMesh mesh , bool convex , float alpha , Texture tex ,
534
+ void _drawPathDrawMeshCallback ( uiPaint p , uiMeshMesh fillMesh , uiMeshMesh strokeMesh , bool convex , float alpha , Texture tex ,
535
535
uiRect textBlobBounds , TextBlobMesh textMesh , bool notEmoji ) {
536
- if ( ! this . _applyClip ( mesh . bounds ) ) {
537
- ObjectPool < uiMeshMesh > . release ( mesh ) ;
536
+ if ( ! this . _applyClip ( fillMesh . bounds ) ) {
537
+ ObjectPool < uiMeshMesh > . release ( fillMesh ) ;
538
538
return ;
539
539
}
540
540
541
541
var layer = this . _currentLayer ;
542
542
if ( convex ) {
543
- layer . draws . Add ( CanvasShader . convexFill ( layer , p , mesh ) ) ;
543
+ layer . draws . Add ( CanvasShader . convexFill ( layer , p , fillMesh ) ) ;
544
544
}
545
545
else {
546
- layer . draws . Add ( CanvasShader . fill0 ( layer , mesh ) ) ;
547
- layer . draws . Add ( CanvasShader . fill1 ( layer , p , mesh . boundsMesh ) ) ;
546
+ layer . draws . Add ( CanvasShader . fill0 ( layer , fillMesh ) ) ;
547
+ layer . draws . Add ( CanvasShader . fill1 ( layer , p , fillMesh . boundsMesh ) ) ;
548
+ }
549
+
550
+ if ( strokeMesh != null ) {
551
+ layer . draws . Add ( CanvasShader . strokeAlpha ( layer , p , 1.0f , strokeMesh ) ) ;
548
552
}
549
553
}
550
554
551
- void _drawPathDrawMeshCallback2 ( uiPaint p , uiMeshMesh mesh , bool convex , float alpha , Texture tex ,
555
+ void _drawPathDrawMeshCallback2 ( uiPaint p , uiMeshMesh fillMesh , uiMeshMesh strokeMesh , bool convex , float alpha , Texture tex ,
552
556
uiRect textBlobBounds , TextBlobMesh textMesh , bool notEmoji ) {
553
- if ( ! this . _applyClip ( mesh . bounds ) ) {
554
- ObjectPool < uiMeshMesh > . release ( mesh ) ;
557
+ if ( ! this . _applyClip ( strokeMesh . bounds ) ) {
558
+ ObjectPool < uiMeshMesh > . release ( strokeMesh ) ;
555
559
return ;
556
560
}
557
561
558
562
var layer = this . _currentLayer ;
559
563
560
- layer . draws . Add ( CanvasShader . stroke0 ( layer , p , alpha , mesh ) ) ;
561
- layer . draws . Add ( CanvasShader . stroke1 ( layer , mesh . duplicate ( ) ) ) ;
564
+ layer . draws . Add ( CanvasShader . strokeAlpha ( layer , p , alpha , strokeMesh ) ) ;
565
+ layer . draws . Add ( CanvasShader . stroke1 ( layer , strokeMesh . duplicate ( ) ) ) ;
562
566
}
563
567
564
- void _drawTextDrawMeshCallback ( uiPaint p , uiMeshMesh mesh , bool convex , float alpha , Texture tex ,
568
+ void _drawTextDrawMeshCallback ( uiPaint p , uiMeshMesh fillMesh , uiMeshMesh strokeMesh , bool convex , float alpha , Texture tex ,
565
569
uiRect textBlobBounds , TextBlobMesh textMesh , bool notEmoji ) {
566
570
if ( ! this . _applyClip ( textBlobBounds ) ) {
567
571
ObjectPool < TextBlobMesh > . release ( textMesh ) ;
@@ -600,16 +604,19 @@ void _drawPath(uiPath path, uiPaint paint) {
600
604
var cache = path . flatten ( state . scale * this . _devicePixelRatio ) ;
601
605
602
606
bool convex ;
603
- var fillMesh = cache . getFillMesh ( out convex ) ;
604
- var mesh = fillMesh . transform ( state . matrix ) ;
607
+ cache . computeFillMesh ( this . _fringeWidth , out convex ) ;
608
+ var fillMesh = cache . fillMesh ;
609
+ var strokeMesh = cache . strokeMesh ;
610
+ var fmesh = fillMesh . transform ( state . matrix ) ;
611
+ var smesh = strokeMesh ? . transform ( state . matrix ) ;
605
612
606
613
if ( paint . maskFilter != null && paint . maskFilter . Value . sigma != 0 ) {
607
- this . _drawWithMaskFilter ( mesh . bounds , paint , paint . maskFilter . Value , mesh , convex , 0 , null ,
614
+ this . _drawWithMaskFilter ( fmesh . bounds , paint , paint . maskFilter . Value , fmesh , convex , 0 , null ,
608
615
uiRectHelper . zero , null , false , this . ___drawPathDrawMeshCallback ) ;
609
616
return ;
610
617
}
611
618
612
- this . _drawPathDrawMeshCallback ( paint , mesh , convex , 0 , null , uiRectHelper . zero , null , false ) ;
619
+ this . _drawPathDrawMeshCallback ( paint , fmesh , smesh , convex , 0 , null , uiRectHelper . zero , null , false ) ;
613
620
}
614
621
else {
615
622
var state = this . _currentLayer . currentState ;
@@ -629,21 +636,22 @@ void _drawPath(uiPath path, uiPaint paint) {
629
636
630
637
var cache = path . flatten ( state . scale * this . _devicePixelRatio ) ;
631
638
632
- var strokenMesh = cache . getStrokeMesh (
639
+ var strokeMesh = cache . computeStrokeMesh (
633
640
strokeWidth / state . scale * 0.5f ,
641
+ this . _fringeWidth ,
634
642
paint . strokeCap ,
635
643
paint . strokeJoin ,
636
644
paint . strokeMiterLimit ) ;
637
645
638
- var mesh = strokenMesh . transform ( state . matrix ) ;
646
+ var mesh = strokeMesh . transform ( state . matrix ) ;
639
647
640
648
if ( paint . maskFilter != null && paint . maskFilter . Value . sigma != 0 ) {
641
649
this . _drawWithMaskFilter ( mesh . bounds , paint , paint . maskFilter . Value , mesh , false , alpha , null ,
642
650
uiRectHelper . zero , null , false , this . ___drawPathDrawMeshCallback2 ) ;
643
651
return ;
644
652
}
645
653
646
- this . _drawPathDrawMeshCallback2 ( paint , mesh , false , alpha , null , uiRectHelper . zero , null , false ) ;
654
+ this . _drawPathDrawMeshCallback2 ( paint , null , mesh , false , alpha , null , uiRectHelper . zero , null , false ) ;
647
655
}
648
656
}
649
657
@@ -958,7 +966,7 @@ void _drawTextBlob(TextBlob textBlob, uiOffset offset, uiPaint paint) {
958
966
return ;
959
967
}
960
968
961
- this . _drawTextDrawMeshCallback ( paint , null , false , 0 , tex , textBlobBounds , mesh , notEmoji ) ;
969
+ this . _drawTextDrawMeshCallback ( paint , null , null , false , 0 , tex , textBlobBounds , mesh , notEmoji ) ;
962
970
}
963
971
964
972
public void flush ( uiPicture picture ) {
0 commit comments