| // Copyright 2018 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "core/fxcrt/fx_system.h" |
| #include "public/fpdf_edit.h" |
| #include "testing/embedder_test.h" |
| |
| class FPDFEditPageEmbedderTest : public EmbedderTest {}; |
| |
| TEST_F(FPDFEditPageEmbedderTest, Rotation) { |
| const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe"; |
| const char kRotatedMD5[] = "d599429574ff0dcad3bc898ea8b874ca"; |
| |
| { |
| ASSERT_TRUE(OpenDocument("rectangles.pdf")); |
| FPDF_PAGE page = LoadPage(0); |
| ASSERT_TRUE(page); |
| |
| { |
| // Render the page as is. |
| EXPECT_EQ(0, FPDFPage_GetRotation(page)); |
| const int page_width = static_cast<int>(FPDF_GetPageWidth(page)); |
| const int page_height = static_cast<int>(FPDF_GetPageHeight(page)); |
| EXPECT_EQ(200, page_width); |
| EXPECT_EQ(300, page_height); |
| ScopedFPDFBitmap bitmap = RenderLoadedPage(page); |
| CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5); |
| } |
| |
| FPDFPage_SetRotation(page, 1); |
| |
| { |
| // Render the page after rotation. |
| // Note that the change affects the rendering, as expected. |
| // It behaves just like the case below, rather than the case above. |
| EXPECT_EQ(1, FPDFPage_GetRotation(page)); |
| const int page_width = static_cast<int>(FPDF_GetPageWidth(page)); |
| const int page_height = static_cast<int>(FPDF_GetPageHeight(page)); |
| EXPECT_EQ(300, page_width); |
| EXPECT_EQ(200, page_height); |
| ScopedFPDFBitmap bitmap = RenderLoadedPage(page); |
| CompareBitmap(bitmap.get(), page_width, page_height, kRotatedMD5); |
| } |
| |
| UnloadPage(page); |
| } |
| |
| { |
| // Save a copy, open the copy, and render it. |
| // Note that it renders the rotation. |
| EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0)); |
| ASSERT_TRUE(OpenSavedDocument()); |
| FPDF_PAGE saved_page = LoadSavedPage(0); |
| ASSERT_TRUE(saved_page); |
| |
| EXPECT_EQ(1, FPDFPage_GetRotation(saved_page)); |
| const int page_width = static_cast<int>(FPDF_GetPageWidth(saved_page)); |
| const int page_height = static_cast<int>(FPDF_GetPageHeight(saved_page)); |
| EXPECT_EQ(300, page_width); |
| EXPECT_EQ(200, page_height); |
| ScopedFPDFBitmap bitmap = RenderSavedPage(saved_page); |
| CompareBitmap(bitmap.get(), page_width, page_height, kRotatedMD5); |
| |
| CloseSavedPage(saved_page); |
| CloseSavedDocument(); |
| } |
| } |