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

LibPDF/PDFViewer: Support rotated pages

This commit is contained in:
Matthew Olsson 2021-05-10 11:52:48 -07:00 committed by Andreas Kling
parent fbe712e265
commit d5f94aaa7b
3 changed files with 22 additions and 3 deletions

View file

@ -88,7 +88,13 @@ Page Document::get_page(u32 index)
if (raw_page_object->contains("UserUnit"))
user_unit = raw_page_object->get_value("UserUnit").to_float();
Page page { move(resources), move(contents), media_box, crop_box, user_unit };
int rotate = 0;
if (raw_page_object->contains("Rotate")) {
rotate = raw_page_object->get_value("Rotate").as_int();
VERIFY(rotate % 90 == 0);
}
Page page { move(resources), move(contents), media_box, crop_box, user_unit, rotate };
m_pages.set(index, page);
return page;
}

View file

@ -28,6 +28,7 @@ struct Page {
Rectangle media_box;
Rectangle crop_box;
float user_unit;
int rotate;
};
class Document final : public RefCounted<Document> {
@ -121,13 +122,14 @@ template<>
struct Formatter<PDF::Page> : Formatter<StringView> {
void format(FormatBuilder& builder, const PDF::Page& page)
{
constexpr auto fmt_string = "Page {{\n resources={}\n contents={}\n media_box={}\n crop_box={}\n user_unit={}\n}}";
constexpr auto fmt_string = "Page {{\n resources={}\n contents={}\n media_box={}\n crop_box={}\n user_unit={}\n rotate={}\n}}";
auto str = String::formatted(fmt_string,
page.resources->to_string(1),
page.contents->to_string(1),
page.media_box,
page.crop_box,
page.user_unit);
page.user_unit,
page.rotate);
Formatter<StringView>::format(builder, str);
}
};