1 // Copyright 2016 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "public/fpdf_edit.h" 6 7 #include "core/fpdfapi/cpdf_modulemgr.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 10 class PDFEditTest : public testing::Test { 11 void SetUp() override { CPDF_ModuleMgr::Get()->Init(); } 12 13 void TearDown() override { CPDF_ModuleMgr::Destroy(); } 14 }; 15 16 TEST_F(PDFEditTest, InsertObjectWithInvalidPage) { 17 FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); 18 FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); 19 EXPECT_EQ(0, FPDFPage_CountObjects(page)); 20 21 FPDFPage_InsertObject(nullptr, nullptr); 22 EXPECT_EQ(0, FPDFPage_CountObjects(page)); 23 24 FPDFPage_InsertObject(page, nullptr); 25 EXPECT_EQ(0, FPDFPage_CountObjects(page)); 26 27 FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); 28 FPDFPage_InsertObject(nullptr, page_image); 29 EXPECT_EQ(0, FPDFPage_CountObjects(page)); 30 31 FPDF_ClosePage(page); 32 FPDF_CloseDocument(doc); 33 } 34 35 TEST_F(PDFEditTest, NewImageObj) { 36 FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); 37 FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); 38 EXPECT_EQ(0, FPDFPage_CountObjects(page)); 39 40 FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); 41 FPDFPage_InsertObject(page, page_image); 42 EXPECT_EQ(1, FPDFPage_CountObjects(page)); 43 EXPECT_TRUE(FPDFPage_GenerateContent(page)); 44 45 FPDF_ClosePage(page); 46 FPDF_CloseDocument(doc); 47 } 48 49 TEST_F(PDFEditTest, NewImageObjGenerateContent) { 50 FPDF_DOCUMENT doc = FPDF_CreateNewDocument(); 51 FPDF_PAGE page = FPDFPage_New(doc, 0, 100, 100); 52 EXPECT_EQ(0, FPDFPage_CountObjects(page)); 53 54 constexpr int kBitmapSize = 50; 55 FPDF_BITMAP bitmap = FPDFBitmap_Create(kBitmapSize, kBitmapSize, 0); 56 FPDFBitmap_FillRect(bitmap, 0, 0, kBitmapSize, kBitmapSize, 0x00000000); 57 EXPECT_EQ(kBitmapSize, FPDFBitmap_GetWidth(bitmap)); 58 EXPECT_EQ(kBitmapSize, FPDFBitmap_GetHeight(bitmap)); 59 60 FPDF_PAGEOBJECT page_image = FPDFPageObj_NewImageObj(doc); 61 ASSERT_TRUE(FPDFImageObj_SetBitmap(&page, 0, page_image, bitmap)); 62 ASSERT_TRUE( 63 FPDFImageObj_SetMatrix(page_image, kBitmapSize, 0, 0, kBitmapSize, 0, 0)); 64 FPDFPage_InsertObject(page, page_image); 65 EXPECT_EQ(1, FPDFPage_CountObjects(page)); 66 EXPECT_TRUE(FPDFPage_GenerateContent(page)); 67 68 FPDFBitmap_Destroy(bitmap); 69 FPDF_ClosePage(page); 70 FPDF_CloseDocument(doc); 71 } 72