@@ -1054,5 +1054,71 @@ TEST_P(DisplayListTest, MaskBlursApplyCorrectlyToColorSources) {
10541054 ASSERT_TRUE (OpenPlaygroundHere (builder.Build ()));
10551055}
10561056
1057+ TEST_P (DisplayListTest, DrawVerticesSolidColorTrianglesWithoutIndices) {
1058+ std::vector<SkPoint> positions = {SkPoint::Make (100 , 300 ),
1059+ SkPoint::Make (200 , 100 ),
1060+ SkPoint::Make (300 , 300 )};
1061+ std::vector<flutter::DlColor> colors = {flutter::DlColor::kWhite (),
1062+ flutter::DlColor::kGreen (),
1063+ flutter::DlColor::kWhite ()};
1064+
1065+ auto vertices = flutter::DlVertices::Make (
1066+ flutter::DlVertexMode::kTriangles , 3 , positions.data (),
1067+ /* texture_coorindates=*/ nullptr , colors.data ());
1068+
1069+ flutter::DisplayListBuilder builder;
1070+ flutter::DlPaint paint;
1071+
1072+ paint.setColor (flutter::DlColor::kRed ().modulateOpacity (0.5 ));
1073+ builder.drawVertices (vertices, flutter::DlBlendMode::kSrcOver , paint);
1074+
1075+ ASSERT_TRUE (OpenPlaygroundHere (builder.Build ()));
1076+ }
1077+
1078+ TEST_P (DisplayListTest, DrawVerticesLinearGradientWithoutIndices) {
1079+ std::vector<SkPoint> positions = {SkPoint::Make (100 , 300 ),
1080+ SkPoint::Make (200 , 100 ),
1081+ SkPoint::Make (300 , 300 )};
1082+
1083+ auto vertices = flutter::DlVertices::Make (
1084+ flutter::DlVertexMode::kTriangles , 3 , positions.data (),
1085+ /* texture_coorindates=*/ nullptr , /* colors=*/ nullptr );
1086+
1087+ std::vector<flutter::DlColor> colors = {flutter::DlColor::kBlue (),
1088+ flutter::DlColor::kRed ()};
1089+ const float stops[2 ] = {0.0 , 1.0 };
1090+
1091+ auto linear = flutter::DlColorSource::MakeLinear (
1092+ {100.0 , 100.0 }, {300.0 , 300.0 }, 2 , colors.data (), stops,
1093+ flutter::DlTileMode::kRepeat );
1094+
1095+ flutter::DisplayListBuilder builder;
1096+ flutter::DlPaint paint;
1097+
1098+ paint.setColorSource (linear);
1099+ builder.drawVertices (vertices, flutter::DlBlendMode::kSrcOver , paint);
1100+
1101+ ASSERT_TRUE (OpenPlaygroundHere (builder.Build ()));
1102+ }
1103+
1104+ TEST_P (DisplayListTest, DrawVerticesSolidColorTrianglesWithIndices) {
1105+ std::vector<SkPoint> positions = {
1106+ SkPoint::Make (100 , 300 ), SkPoint::Make (200 , 100 ), SkPoint::Make (300 , 300 ),
1107+ SkPoint::Make (200 , 500 )};
1108+ std::vector<uint16_t > indices = {0 , 1 , 2 , 0 , 2 , 3 };
1109+
1110+ auto vertices = flutter::DlVertices::Make (
1111+ flutter::DlVertexMode::kTriangles , 6 , positions.data (),
1112+ /* texture_coorindates=*/ nullptr , /* colors=*/ nullptr , 6 , indices.data ());
1113+
1114+ flutter::DisplayListBuilder builder;
1115+ flutter::DlPaint paint;
1116+
1117+ paint.setColor (flutter::DlColor::kWhite ());
1118+ builder.drawVertices (vertices, flutter::DlBlendMode::kSrcOver , paint);
1119+
1120+ ASSERT_TRUE (OpenPlaygroundHere (builder.Build ()));
1121+ }
1122+
10571123} // namespace testing
10581124} // namespace impeller
0 commit comments