8
8
9
9
#include " flutter/fml/trace_event.h"
10
10
#include " impeller/entity/contents/linear_gradient_contents.h"
11
+ #include " impeller/entity/contents/solid_stroke_contents.h"
11
12
#include " impeller/entity/entity.h"
12
13
#include " impeller/geometry/path_builder.h"
13
14
#include " impeller/typographer/backends/skia/text_frame_skia.h"
@@ -65,17 +66,37 @@ void DisplayListDispatcher::setStrokeWidth(SkScalar width) {
65
66
66
67
// |flutter::Dispatcher|
67
68
void DisplayListDispatcher::setStrokeMiter (SkScalar limit) {
68
- UNIMPLEMENTED ;
69
+ paint_. stroke_miter = limit ;
69
70
}
70
71
71
72
// |flutter::Dispatcher|
72
73
void 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
+ }
74
85
}
75
86
76
87
// |flutter::Dispatcher|
77
88
void 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
+ }
79
100
}
80
101
81
102
static Point ToPoint (const SkPoint& point) {
@@ -397,11 +418,9 @@ static Path ToPath(const SkPath& path) {
397
418
builder.MoveTo (ToPoint (data.points [0 ]));
398
419
break ;
399
420
case SkPath::kLine_Verb :
400
- builder.LineTo (ToPoint (data.points [0 ]));
401
421
builder.LineTo (ToPoint (data.points [1 ]));
402
422
break ;
403
423
case SkPath::kQuad_Verb :
404
- builder.LineTo (ToPoint (data.points [0 ]));
405
424
builder.QuadraticCurveTo (ToPoint (data.points [1 ]),
406
425
ToPoint (data.points [2 ]));
407
426
break ;
@@ -422,13 +441,11 @@ static Path ToPath(const SkPath& path) {
422
441
curve_index < curve_count; //
423
442
curve_index++, point_index += 2 //
424
443
) {
425
- builder.LineTo (ToPoint (points[point_index + 0 ]));
426
444
builder.QuadraticCurveTo (ToPoint (points[point_index + 1 ]),
427
445
ToPoint (points[point_index + 2 ]));
428
446
}
429
447
} break ;
430
448
case SkPath::kCubic_Verb :
431
- builder.LineTo (ToPoint (data.points [0 ]));
432
449
builder.CubicCurveTo (ToPoint (data.points [1 ]), ToPoint (data.points [2 ]),
433
450
ToPoint (data.points [3 ]));
434
451
break ;
0 commit comments