@@ -455,6 +455,50 @@ MergeResult<SolidColorFill> MergeSolidColorFills(SolidColorFill a, TimeRange aRa
455455 return new MergeResult < SolidColorFill > ( new SolidColorFill ( args , a . FillType , opacity . Value ! , color . Value ! ) ) ;
456456 }
457457
458+ MergeResult < SolidColorStroke > MergeSolidColorStrokes ( SolidColorStroke a , TimeRange aRange , SolidColorStroke b , TimeRange bRange )
459+ {
460+ if ( a . BlendMode != b . BlendMode ||
461+ a . CapType != b . CapType ||
462+ a . JoinType != b . JoinType ||
463+ ! a . DashPattern . SequenceEqual ( b . DashPattern ) ||
464+ a . MiterLimit != b . MiterLimit )
465+ {
466+ return MergeResult < SolidColorStroke > . Failed ;
467+ }
468+
469+ var name = $ "{ a . Name } { b . Name } ";
470+
471+ var matchName = $ "{ a . MatchName } { b . MatchName } ";
472+
473+ var args = new ShapeLayerContentArgs
474+ {
475+ Name = name ,
476+ MatchName = matchName ,
477+ BlendMode = a . BlendMode ,
478+ } ;
479+
480+ var opacity = MergeAnimatable ( a . Opacity , aRange , b . Opacity , bRange ) ;
481+ var color = MergeAnimatable ( a . Color , aRange , b . Color , bRange ) ;
482+ var strokeWidth = MergeAnimatable ( a . StrokeWidth , aRange , b . StrokeWidth , bRange ) ;
483+ var dashOffset = MergeAnimatable ( a . DashOffset , aRange , b . DashOffset , bRange ) ;
484+
485+ if ( ! opacity . Success || ! color . Success || ! strokeWidth . Success || ! dashOffset . Success )
486+ {
487+ return MergeResult < SolidColorStroke > . Failed ;
488+ }
489+
490+ return new MergeResult < SolidColorStroke > ( new SolidColorStroke (
491+ args ,
492+ dashOffset . Value ! ,
493+ a . DashPattern ,
494+ color . Value ! ,
495+ opacity . Value ! ,
496+ strokeWidth . Value ! ,
497+ a . CapType ,
498+ a . JoinType ,
499+ a . MiterLimit ) ) ;
500+ }
501+
458502 MergeResult < ShapeLayerContent > MergeShapeLayerContents ( ShapeLayerContent a , TimeRange aRange , ShapeLayerContent b , TimeRange bRange )
459503 {
460504 if ( a . ContentType != b . ContentType )
@@ -476,6 +520,8 @@ MergeResult<ShapeLayerContent> MergeShapeLayerContents(ShapeLayerContent a, Time
476520 return MergeResult < ShapeLayerContent > . From ( MergeTransform ( ( Transform ) a , aRange , ( Transform ) b , bRange ) ) ;
477521 case ShapeContentType . SolidColorFill :
478522 return MergeResult < ShapeLayerContent > . From ( MergeSolidColorFills ( ( SolidColorFill ) a , aRange , ( SolidColorFill ) b , bRange ) ) ;
523+ case ShapeContentType . SolidColorStroke :
524+ return MergeResult < ShapeLayerContent > . From ( MergeSolidColorStrokes ( ( SolidColorStroke ) a , aRange , ( SolidColorStroke ) b , bRange ) ) ;
479525 }
480526
481527 return MergeResult < ShapeLayerContent > . Failed ;
0 commit comments