mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-10 13:00:29 +03:00
LibPDF: Bake the flipped y-axis directly into the CTM matrix
This commit is contained in:
parent
449ef14895
commit
0a4d8ef98d
Notes:
sideshowbarker
2024-07-18 12:20:49 +09:00
Author: https://github.com/mattco98 Commit: https://github.com/SerenityOS/serenity/commit/0a4d8ef98d8 Pull-request: https://github.com/SerenityOS/serenity/pull/7675 Reviewed-by: https://github.com/FireFox317 Reviewed-by: https://github.com/alimpfard
@ -42,6 +42,15 @@ Renderer::Renderer(RefPtr<Document> document, const Page& page, RefPtr<Gfx::Bitm
|
||||
float scale_y = static_cast<float>(bitmap->height()) / height;
|
||||
userspace_matrix.scale(scale_x, scale_y);
|
||||
|
||||
// PDF user-space coordinate y axis increases from bottom to top, so we have to
|
||||
// insert a horizontal reflection about the vertical midpoint into our transformation
|
||||
// matrix
|
||||
|
||||
static Gfx::AffineTransform horizontal_reflection_matrix = { 1, 0, 0, -1, 0, 0 };
|
||||
|
||||
userspace_matrix.multiply(horizontal_reflection_matrix);
|
||||
userspace_matrix.translate(0.0f, -height);
|
||||
|
||||
m_graphics_state_stack.append(GraphicsState { userspace_matrix });
|
||||
|
||||
m_bitmap->fill(Gfx::Color::NamedColor::White);
|
||||
@ -530,8 +539,6 @@ void Renderer::show_text(const String& string, float shift)
|
||||
VERIFY(font);
|
||||
|
||||
auto glyph_position = text_rendering_matrix.map(Gfx::FloatPoint { 0.0f, 0.0f });
|
||||
// Reverse the Y axis
|
||||
glyph_position.set_y(static_cast<float>(m_bitmap->height()) - glyph_position.y());
|
||||
// Account for the reversed font baseline
|
||||
glyph_position.set_y(glyph_position.y() - static_cast<float>(font->baseline()));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user