1 // Copyright 2017 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 "core/fxcrt/fx_system.h" 6 #include "public/fpdf_edit.h" 7 #include "testing/embedder_test.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/test_support.h" 10 11 class FPDFEditPathEmbedderTest : public EmbedderTest {}; 12 13 TEST_F(FPDFEditPathEmbedderTest, VerifyCorrectColoursReturned) { 14 CreateEmptyDocument(); 15 FPDF_PAGE page = FPDFPage_New(document(), 0, 612, 792); 16 17 for (size_t i = 0; i < 256; ++i) { 18 FPDF_PAGEOBJECT path = FPDFPageObj_CreateNewPath(400, 100); 19 EXPECT_TRUE(FPDFPath_SetFillColor(path, i, i, i, i)); 20 EXPECT_TRUE(FPDFPath_SetStrokeColor(path, i, i, i, i)); 21 EXPECT_TRUE(FPDFPath_SetDrawMode(path, FPDF_FILLMODE_ALTERNATE, 0)); 22 EXPECT_TRUE(FPDFPath_LineTo(path, 400, 200)); 23 EXPECT_TRUE(FPDFPath_LineTo(path, 300, 100)); 24 EXPECT_TRUE(FPDFPath_Close(path)); 25 26 FPDFPage_InsertObject(page, path); 27 } 28 29 EXPECT_TRUE(FPDFPage_GenerateContent(page)); 30 EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0)); 31 FPDF_ClosePage(page); 32 page = nullptr; 33 34 OpenSavedDocument(); 35 page = LoadSavedPage(0); 36 ASSERT(page); 37 38 for (size_t i = 0; i < 256; ++i) { 39 FPDF_PAGEOBJECT path = FPDFPage_GetObject(page, i); 40 ASSERT(path); 41 42 EXPECT_EQ(FPDF_PAGEOBJ_PATH, FPDFPageObj_GetType(path)); 43 44 unsigned int r; 45 unsigned int g; 46 unsigned int b; 47 unsigned int a; 48 FPDFPath_GetFillColor(path, &r, &g, &b, &a); 49 EXPECT_EQ(i, r); 50 EXPECT_EQ(i, g); 51 EXPECT_EQ(i, b); 52 EXPECT_EQ(i, a); 53 54 FPDFPath_GetStrokeColor(path, &r, &g, &b, &a); 55 EXPECT_EQ(i, r); 56 EXPECT_EQ(i, g); 57 EXPECT_EQ(i, b); 58 EXPECT_EQ(i, a); 59 } 60 61 CloseSavedPage(page); 62 CloseSavedDocument(); 63 } 64