88
99#include " flutter/fml/trace_event.h"
1010#include " impeller/entity/contents/linear_gradient_contents.h"
11+ #include " impeller/entity/contents/solid_stroke_contents.h"
1112#include " impeller/entity/entity.h"
1213#include " impeller/geometry/path_builder.h"
1314#include " impeller/typographer/backends/skia/text_frame_skia.h"
@@ -65,17 +66,37 @@ void DisplayListDispatcher::setStrokeWidth(SkScalar width) {
6566
6667// |flutter::Dispatcher|
6768void DisplayListDispatcher::setStrokeMiter (SkScalar limit) {
68- UNIMPLEMENTED ;
69+ paint_. stroke_miter = limit ;
6970}
7071
7172// |flutter::Dispatcher|
7273void DisplayListDispatcher::setStrokeCap (SkPaint::Cap cap) {
73- UNIMPLEMENTED;
74+ switch (cap) {
75+ case SkPaint::kButt_Cap :
76+ paint_.stroke_cap = SolidStrokeContents::Cap::kButt ;
77+ break ;
78+ case SkPaint::kRound_Cap :
79+ paint_.stroke_cap = SolidStrokeContents::Cap::kRound ;
80+ break ;
81+ case SkPaint::kSquare_Cap :
82+ paint_.stroke_cap = SolidStrokeContents::Cap::kSquare ;
83+ break ;
84+ }
7485}
7586
7687// |flutter::Dispatcher|
7788void DisplayListDispatcher::setStrokeJoin (SkPaint::Join join) {
78- UNIMPLEMENTED;
89+ switch (join) {
90+ case SkPaint::kMiter_Join :
91+ paint_.stroke_join = SolidStrokeContents::Join::kMiter ;
92+ break ;
93+ case SkPaint::kRound_Join :
94+ paint_.stroke_join = SolidStrokeContents::Join::kRound ;
95+ break ;
96+ case SkPaint::kBevel_Join :
97+ paint_.stroke_join = SolidStrokeContents::Join::kBevel ;
98+ break ;
99+ }
79100}
80101
81102static Point ToPoint (const SkPoint& point) {
@@ -397,11 +418,9 @@ static Path ToPath(const SkPath& path) {
397418 builder.MoveTo (ToPoint (data.points [0 ]));
398419 break ;
399420 case SkPath::kLine_Verb :
400- builder.LineTo (ToPoint (data.points [0 ]));
401421 builder.LineTo (ToPoint (data.points [1 ]));
402422 break ;
403423 case SkPath::kQuad_Verb :
404- builder.LineTo (ToPoint (data.points [0 ]));
405424 builder.QuadraticCurveTo (ToPoint (data.points [1 ]),
406425 ToPoint (data.points [2 ]));
407426 break ;
@@ -422,13 +441,11 @@ static Path ToPath(const SkPath& path) {
422441 curve_index < curve_count; //
423442 curve_index++, point_index += 2 //
424443 ) {
425- builder.LineTo (ToPoint (points[point_index + 0 ]));
426444 builder.QuadraticCurveTo (ToPoint (points[point_index + 1 ]),
427445 ToPoint (points[point_index + 2 ]));
428446 }
429447 } break ;
430448 case SkPath::kCubic_Verb :
431- builder.LineTo (ToPoint (data.points [0 ]));
432449 builder.CubicCurveTo (ToPoint (data.points [1 ]), ToPoint (data.points [2 ]),
433450 ToPoint (data.points [3 ]));
434451 break ;
0 commit comments