2828#include " impeller/geometry/path_builder.h"
2929#include " impeller/geometry/scalar.h"
3030#include " impeller/geometry/sigma.h"
31+ #include " impeller/typographer/font_glyph_pair.h"
3132
3233#if IMPELLER_ENABLE_3D
3334#include " impeller/entity/contents/scene_contents.h"
@@ -1266,8 +1267,22 @@ void TextFrameDispatcher::drawTextFrame(
12661267 const std::shared_ptr<impeller::TextFrame>& text_frame,
12671268 SkScalar x,
12681269 SkScalar y) {
1269- renderer_.GetLazyGlyphAtlas ()->AddTextFrame (
1270- *text_frame, matrix_.GetMaxBasisLengthXY (), Point (x, y));
1270+ GlyphProperties properties;
1271+ if (paint_.style == Paint::Style::kStroke ) {
1272+ properties.stroke = true ;
1273+ properties.stroke_cap = paint_.stroke_cap ;
1274+ properties.stroke_join = paint_.stroke_join ;
1275+ properties.stroke_miter = paint_.stroke_miter ;
1276+ properties.stroke_width = paint_.stroke_width ;
1277+ }
1278+ if (text_frame->HasColor ()) {
1279+ properties.color = paint_.color ;
1280+ }
1281+ renderer_.GetLazyGlyphAtlas ()->AddTextFrame (*text_frame, //
1282+ matrix_.GetMaxBasisLengthXY (), //
1283+ Point (x, y), //
1284+ properties //
1285+ );
12711286}
12721287
12731288void TextFrameDispatcher::drawDisplayList (
@@ -1280,4 +1295,59 @@ void TextFrameDispatcher::drawDisplayList(
12801295 FML_DCHECK (stack_depth == stack_.size ());
12811296}
12821297
1298+ // |flutter::DlOpReceiver|
1299+ void TextFrameDispatcher::setDrawStyle (flutter::DlDrawStyle style) {
1300+ paint_.style = ToStyle (style);
1301+ }
1302+
1303+ // |flutter::DlOpReceiver|
1304+ void TextFrameDispatcher::setColor (flutter::DlColor color) {
1305+ paint_.color = {
1306+ color.getRedF (),
1307+ color.getGreenF (),
1308+ color.getBlueF (),
1309+ color.getAlphaF (),
1310+ };
1311+ }
1312+
1313+ // |flutter::DlOpReceiver|
1314+ void TextFrameDispatcher::setStrokeWidth (SkScalar width) {
1315+ paint_.stroke_width = width;
1316+ }
1317+
1318+ // |flutter::DlOpReceiver|
1319+ void TextFrameDispatcher::setStrokeMiter (SkScalar limit) {
1320+ paint_.stroke_miter = limit;
1321+ }
1322+
1323+ // |flutter::DlOpReceiver|
1324+ void TextFrameDispatcher::setStrokeCap (flutter::DlStrokeCap cap) {
1325+ switch (cap) {
1326+ case flutter::DlStrokeCap::kButt :
1327+ paint_.stroke_cap = Cap::kButt ;
1328+ break ;
1329+ case flutter::DlStrokeCap::kRound :
1330+ paint_.stroke_cap = Cap::kRound ;
1331+ break ;
1332+ case flutter::DlStrokeCap::kSquare :
1333+ paint_.stroke_cap = Cap::kSquare ;
1334+ break ;
1335+ }
1336+ }
1337+
1338+ // |flutter::DlOpReceiver|
1339+ void TextFrameDispatcher::setStrokeJoin (flutter::DlStrokeJoin join) {
1340+ switch (join) {
1341+ case flutter::DlStrokeJoin::kMiter :
1342+ paint_.stroke_join = Join::kMiter ;
1343+ break ;
1344+ case flutter::DlStrokeJoin::kRound :
1345+ paint_.stroke_join = Join::kRound ;
1346+ break ;
1347+ case flutter::DlStrokeJoin::kBevel :
1348+ paint_.stroke_join = Join::kBevel ;
1349+ break ;
1350+ }
1351+ }
1352+
12831353} // namespace impeller
0 commit comments