mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 12:38:12 +00:00
LibPDF+PDFViewer: Extract Renderer::apply_page_rotation()
No behavior change.
This commit is contained in:
parent
5e9395b808
commit
03fab7089a
3 changed files with 15 additions and 9 deletions
|
@ -350,15 +350,7 @@ PDF::PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> PDFViewer::render_page(u32 page_inde
|
||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rotation_count = ((page.rotate + m_rotations) / 90) % 4;
|
return TRY(PDF::Renderer::apply_page_rotation(bitmap, page, m_rotations));
|
||||||
if (rotation_count == 1)
|
|
||||||
bitmap = TRY(bitmap->rotated(Gfx::RotationDirection::Clockwise));
|
|
||||||
else if (rotation_count == 2)
|
|
||||||
bitmap = TRY(bitmap->rotated(Gfx::RotationDirection::Flip));
|
|
||||||
else if (rotation_count == 3)
|
|
||||||
bitmap = TRY(bitmap->rotated(Gfx::RotationDirection::CounterClockwise));
|
|
||||||
|
|
||||||
return bitmap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PDF::PDFErrorOr<void> PDFViewer::cache_page_dimensions(bool recalculate_fixed_info)
|
PDF::PDFErrorOr<void> PDFViewer::cache_page_dimensions(bool recalculate_fixed_info)
|
||||||
|
|
|
@ -50,6 +50,18 @@ PDFErrorsOr<void> Renderer::render(Document& document, Page const& page, RefPtr<
|
||||||
return Renderer(document, page, bitmap, background_color, rendering_preferences).render();
|
return Renderer(document, page, bitmap, background_color, rendering_preferences).render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ErrorOr<NonnullRefPtr<Gfx::Bitmap>> Renderer::apply_page_rotation(NonnullRefPtr<Gfx::Bitmap> bitmap, Page const& page, int extra_degrees)
|
||||||
|
{
|
||||||
|
int rotation_count = ((page.rotate + extra_degrees) / 90) % 4;
|
||||||
|
if (rotation_count == 1)
|
||||||
|
bitmap = TRY(bitmap->rotated(Gfx::RotationDirection::Clockwise));
|
||||||
|
else if (rotation_count == 2)
|
||||||
|
bitmap = TRY(bitmap->rotated(Gfx::RotationDirection::Flip));
|
||||||
|
else if (rotation_count == 3)
|
||||||
|
bitmap = TRY(bitmap->rotated(Gfx::RotationDirection::CounterClockwise));
|
||||||
|
return bitmap;
|
||||||
|
}
|
||||||
|
|
||||||
static void rect_path(Gfx::Path& path, float x, float y, float width, float height)
|
static void rect_path(Gfx::Path& path, float x, float y, float width, float height)
|
||||||
{
|
{
|
||||||
path.move_to({ x, y });
|
path.move_to({ x, y });
|
||||||
|
|
|
@ -104,6 +104,8 @@ class Renderer {
|
||||||
public:
|
public:
|
||||||
static PDFErrorsOr<void> render(Document&, Page const&, RefPtr<Gfx::Bitmap>, Color background_color, RenderingPreferences preferences);
|
static PDFErrorsOr<void> render(Document&, Page const&, RefPtr<Gfx::Bitmap>, Color background_color, RenderingPreferences preferences);
|
||||||
|
|
||||||
|
static ErrorOr<NonnullRefPtr<Gfx::Bitmap>> apply_page_rotation(NonnullRefPtr<Gfx::Bitmap>, Page const&, int extra_degrees = 0);
|
||||||
|
|
||||||
struct FontCacheKey {
|
struct FontCacheKey {
|
||||||
NonnullRefPtr<DictObject> font_dictionary;
|
NonnullRefPtr<DictObject> font_dictionary;
|
||||||
float font_size;
|
float font_size;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue