1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 00:27:45 +00:00

LibWeb: Follow image-rendering when painting image style values

This commit is contained in:
MacDue 2022-08-10 16:16:46 +01:00 committed by Andreas Kling
parent 22f7e800d2
commit 1473842b56
7 changed files with 13 additions and 13 deletions

View file

@ -1457,10 +1457,10 @@ Optional<int> ImageStyleValue::natural_height() const
return {};
}
void ImageStyleValue::paint(PaintContext& context, Gfx::IntRect const& dest_rect) const
void ImageStyleValue::paint(PaintContext& context, Gfx::IntRect const& dest_rect, CSS::ImageRendering image_rendering) const
{
if (m_bitmap)
context.painter().draw_scaled_bitmap(dest_rect, *m_bitmap, m_bitmap->rect(), 1.0f, Gfx::Painter::ScalingMode::BilinearBlend);
context.painter().draw_scaled_bitmap(dest_rect, *m_bitmap, m_bitmap->rect(), 1.0f, to_gfx_scaling_mode(image_rendering));
}
String LinearGradientStyleValue::to_string() const
@ -1608,7 +1608,7 @@ void LinearGradientStyleValue::resolve_for_size(Layout::Node const& node, Gfx::F
m_resolved_data = Painting::resolve_linear_gradient_data(node, size, *this);
}
void LinearGradientStyleValue::paint(PaintContext& context, Gfx::IntRect const& dest_rect) const
void LinearGradientStyleValue::paint(PaintContext& context, Gfx::IntRect const& dest_rect, CSS::ImageRendering) const
{
VERIFY(m_resolved_data.has_value());
Painting::paint_linear_gradient(context, dest_rect, *m_resolved_data);

View file

@ -935,7 +935,7 @@ public:
virtual void resolve_for_size(Layout::Node const&, Gfx::FloatSize const&) const {};
virtual bool is_paintable() const = 0;
virtual void paint(PaintContext& context, Gfx::IntRect const& dest_rect) const = 0;
virtual void paint(PaintContext& context, Gfx::IntRect const& dest_rect, CSS::ImageRendering image_rendering) const = 0;
};
class ImageStyleValue final
@ -956,7 +956,7 @@ public:
Optional<int> natural_height() const override;
bool is_paintable() const override { return !m_bitmap.is_null(); }
void paint(PaintContext& context, Gfx::IntRect const& dest_rect) const override;
void paint(PaintContext& context, Gfx::IntRect const& dest_rect, CSS::ImageRendering image_rendering) const override;
private:
ImageStyleValue(AK::URL const&);
@ -993,12 +993,12 @@ public:
return m_color_stop_list;
}
float angle_degrees(Gfx::FloatSize const& gradient_rect) const;
float angle_degrees(Gfx::FloatSize const& gradient_size) const;
void resolve_for_size(Layout::Node const&, Gfx::FloatSize const&) const override;
bool is_paintable() const override { return true; }
void paint(PaintContext& context, Gfx::IntRect const& dest_rect) const override;
void paint(PaintContext& context, Gfx::IntRect const& dest_rect, CSS::ImageRendering image_rendering) const override;
private:
LinearGradientStyleValue(GradientDirection direction, Vector<ColorStopListElement> color_stop_list, GradientType type)