[Impeller] Remove Rect field accesses from aiks subdirectory (#47628) These changes move any code in `impeller/aiks` that accessed the internal fields of `Rect` to using either the appropriate convenience methods for the operation or the getters for those properties. This is a simple code refactoring and should be covered by existing tests.
diff --git a/impeller/aiks/canvas.cc b/impeller/aiks/canvas.cc index 0cac288..04852db 100644 --- a/impeller/aiks/canvas.cc +++ b/impeller/aiks/canvas.cc
@@ -326,8 +326,11 @@ .SetBounds(rect) .TakePath(); - std::optional<Rect> inner_rect = (corner_radius * 2 < rect.size.width && - corner_radius * 2 < rect.size.height) + auto size = rect.GetSize(); + // Does the rounded rect have a flat part on the top/bottom or left/right? + bool flat_on_TB = corner_radius * 2 < size.width; + bool flat_on_LR = corner_radius * 2 < size.height; + std::optional<Rect> inner_rect = (flat_on_LR && flat_on_TB) ? rect.Expand(-corner_radius) : std::make_optional<Rect>(); auto geometry = Geometry::MakeFillPath(path, inner_rect); @@ -353,12 +356,12 @@ // without involving the curved corners // Since this is a subtract operation, we can subtract each // rectangle piece individually without fear of interference. - if (corner_radius * 2 < rect.size.width) { + if (flat_on_TB) { SubtractCulling(Rect::MakeLTRB( rect.GetLeft() + corner_radius, rect.GetTop(), rect.GetRight() - corner_radius, rect.GetBottom())); } - if (corner_radius * 2 < rect.size.height) { + if (flat_on_LR) { SubtractCulling(Rect::MakeLTRB( rect.GetLeft(), rect.GetTop() + corner_radius, // rect.GetRight(), rect.GetBottom() - corner_radius)); @@ -479,8 +482,7 @@ } const auto source = Rect::MakeSize(image->GetSize()); - const auto dest = - Rect::MakeXYWH(offset.x, offset.y, source.size.width, source.size.height); + const auto dest = source.Shift(offset); DrawImageRect(image, source, dest, paint, std::move(sampler)); } @@ -490,7 +492,7 @@ Rect dest, const Paint& paint, SamplerDescriptor sampler) { - if (!image || source.size.IsEmpty() || dest.size.IsEmpty()) { + if (!image || source.IsEmpty() || dest.IsEmpty()) { return; }
diff --git a/impeller/aiks/color_source.cc b/impeller/aiks/color_source.cc index f88dcc5..b07ac1e 100644 --- a/impeller/aiks/color_source.cc +++ b/impeller/aiks/color_source.cc
@@ -64,7 +64,7 @@ std::vector<Point> bounds{start_point, end_point}; auto intrinsic_size = Rect::MakePointBounds(bounds.begin(), bounds.end()); if (intrinsic_size.has_value()) { - contents->SetColorSourceSize(intrinsic_size->size); + contents->SetColorSourceSize(intrinsic_size->GetSize()); } return contents; }; @@ -98,7 +98,7 @@ std::vector<Point> bounds{center + radius_pt, center - radius_pt}; auto intrinsic_size = Rect::MakePointBounds(bounds.begin(), bounds.end()); if (intrinsic_size.has_value()) { - contents->SetColorSourceSize(intrinsic_size->size); + contents->SetColorSourceSize(intrinsic_size->GetSize()); } return contents; }; @@ -128,7 +128,7 @@ std::vector<Point> bounds{center + radius_pt, center - radius_pt}; auto intrinsic_size = Rect::MakePointBounds(bounds.begin(), bounds.end()); if (intrinsic_size.has_value()) { - contents->SetColorSourceSize(intrinsic_size->size); + contents->SetColorSourceSize(intrinsic_size->GetSize()); } return contents; };
diff --git a/impeller/aiks/picture.cc b/impeller/aiks/picture.cc index faa5c34..d924caa 100644 --- a/impeller/aiks/picture.cc +++ b/impeller/aiks/picture.cc
@@ -20,12 +20,12 @@ return std::nullopt; } - const auto translate = Matrix::MakeTranslation(-coverage.value().origin); + const auto translate = Matrix::MakeTranslation(-coverage->GetOrigin()); auto texture = - RenderToTexture(context, ISize(coverage.value().size), translate); + RenderToTexture(context, ISize(coverage->GetSize()), translate); return impeller::Snapshot{ .texture = std::move(texture), - .transform = Matrix::MakeTranslation(coverage.value().origin)}; + .transform = Matrix::MakeTranslation(coverage->GetOrigin())}; } std::shared_ptr<Image> Picture::ToImage(AiksContext& context,