Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

[Impeller] make strokes slightly lighter. #53067

Merged
merged 4 commits into from
May 28, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions impeller/entity/geometry/stroke_path_geometry.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ using VS = SolidFillVertexShader;

namespace {

/// @brief The minimum stroke size can be less than one physical pixel because
/// of MSAA, but no less that half a physical pixel otherwise we might
/// not hit one of the sample positions.
static constexpr Scalar kMinStrokeSize = 0.5f;

template <typename VertexWriter>
using CapProc = std::function<void(VertexWriter& vtx_builder,
const Point& position,
Expand Down Expand Up @@ -530,7 +535,7 @@ GeometryResult StrokePathGeometry::GetPositionBuffer(
return {};
}

Scalar min_size = 1.0f / sqrt(std::abs(determinant));
Scalar min_size = kMinStrokeSize / sqrt(std::abs(determinant));
Scalar stroke_width = std::max(stroke_width_, min_size);

auto& host_buffer = renderer.GetTransientsBuffer();
Expand Down Expand Up @@ -584,7 +589,7 @@ std::optional<Rect> StrokePathGeometry::GetCoverage(
if (determinant == 0) {
return std::nullopt;
}
Scalar min_size = 1.0f / sqrt(std::abs(determinant));
Scalar min_size = kMinStrokeSize / sqrt(std::abs(determinant));
max_radius *= std::max(stroke_width_, min_size);
return path_bounds->Expand(max_radius).TransformBounds(transform);
}
Expand Down