Skip to content

Commit cb9997a

Browse files
bderodnfield
authored andcommitted
Respect TextureContents/Canvas::DrawImageRect source rect (flutter#22)
1 parent 26090e4 commit cb9997a

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

impeller/aiks/aiks_unittests.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ TEST_F(AiksTest, CanRenderImage) {
5959
ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture()));
6060
}
6161

62-
TEST_F(AiksTest, DISABLED_CanRenderImageRect) {
62+
TEST_F(AiksTest, CanRenderImageRect) {
6363
Canvas canvas;
6464
Paint paint;
6565
auto image = std::make_shared<Image>(CreateTextureForFixture("kalimba.jpg"));

impeller/entity/contents.cc

+6-2
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,15 @@ bool TextureContents::Render(const ContentContext& renderer,
229229
const auto tess_result =
230230
Tessellator{entity.GetPath().GetFillType()}.Tessellate(
231231
entity.GetPath().CreatePolyline(),
232-
[&vertex_builder, &coverage_rect](Point vtx) {
232+
[this, &vertex_builder, &coverage_rect, &texture_size](Point vtx) {
233233
VS::PerVertexData data;
234234
data.vertices = vtx;
235+
auto coverage_coords =
236+
(vtx - coverage_rect->origin) / coverage_rect->size;
235237
data.texture_coords =
236-
((vtx - coverage_rect->origin) / coverage_rect->size);
238+
(source_rect_.origin +
239+
source_rect_.size * coverage_coords) /
240+
texture_size;
237241
vertex_builder.AppendVertex(data);
238242
});
239243
if (!tess_result) {

0 commit comments

Comments
 (0)