1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2017 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker
5*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/fx_system.h"
6*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdf_edit.h"
7*3ac0a46fSAndroid Build Coastguard Worker #include "testing/embedder_test.h"
8*3ac0a46fSAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
9*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/base/check.h"
10*3ac0a46fSAndroid Build Coastguard Worker
11*3ac0a46fSAndroid Build Coastguard Worker class FPDFEditPathEmbedderTest : public EmbedderTest {};
12*3ac0a46fSAndroid Build Coastguard Worker
TEST_F(FPDFEditPathEmbedderTest,VerifyCorrectColoursReturned)13*3ac0a46fSAndroid Build Coastguard Worker TEST_F(FPDFEditPathEmbedderTest, VerifyCorrectColoursReturned) {
14*3ac0a46fSAndroid Build Coastguard Worker constexpr int kObjectCount = 256;
15*3ac0a46fSAndroid Build Coastguard Worker CreateEmptyDocument();
16*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGE page = FPDFPage_New(document(), 0, 612, 792);
17*3ac0a46fSAndroid Build Coastguard Worker
18*3ac0a46fSAndroid Build Coastguard Worker for (size_t i = 0; i < kObjectCount; ++i) {
19*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGEOBJECT path = FPDFPageObj_CreateNewPath(400, 100);
20*3ac0a46fSAndroid Build Coastguard Worker EXPECT_TRUE(FPDFPageObj_SetFillColor(path, i, i, i, i));
21*3ac0a46fSAndroid Build Coastguard Worker EXPECT_TRUE(FPDFPageObj_SetStrokeColor(path, i, i, i, i));
22*3ac0a46fSAndroid Build Coastguard Worker EXPECT_TRUE(FPDFPath_SetDrawMode(path, FPDF_FILLMODE_ALTERNATE, 0));
23*3ac0a46fSAndroid Build Coastguard Worker EXPECT_TRUE(FPDFPath_LineTo(path, 400, 200));
24*3ac0a46fSAndroid Build Coastguard Worker EXPECT_TRUE(FPDFPath_LineTo(path, 300, 100));
25*3ac0a46fSAndroid Build Coastguard Worker EXPECT_TRUE(FPDFPath_Close(path));
26*3ac0a46fSAndroid Build Coastguard Worker
27*3ac0a46fSAndroid Build Coastguard Worker FPDFPage_InsertObject(page, path);
28*3ac0a46fSAndroid Build Coastguard Worker }
29*3ac0a46fSAndroid Build Coastguard Worker
30*3ac0a46fSAndroid Build Coastguard Worker EXPECT_TRUE(FPDFPage_GenerateContent(page));
31*3ac0a46fSAndroid Build Coastguard Worker EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
32*3ac0a46fSAndroid Build Coastguard Worker FPDF_ClosePage(page);
33*3ac0a46fSAndroid Build Coastguard Worker page = nullptr;
34*3ac0a46fSAndroid Build Coastguard Worker
35*3ac0a46fSAndroid Build Coastguard Worker ASSERT_TRUE(OpenSavedDocument());
36*3ac0a46fSAndroid Build Coastguard Worker page = LoadSavedPage(0);
37*3ac0a46fSAndroid Build Coastguard Worker ASSERT_TRUE(page);
38*3ac0a46fSAndroid Build Coastguard Worker
39*3ac0a46fSAndroid Build Coastguard Worker for (size_t i = 0; i < kObjectCount; ++i) {
40*3ac0a46fSAndroid Build Coastguard Worker FPDF_PAGEOBJECT path = FPDFPage_GetObject(page, i);
41*3ac0a46fSAndroid Build Coastguard Worker ASSERT_TRUE(path);
42*3ac0a46fSAndroid Build Coastguard Worker
43*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(FPDF_PAGEOBJ_PATH, FPDFPageObj_GetType(path));
44*3ac0a46fSAndroid Build Coastguard Worker
45*3ac0a46fSAndroid Build Coastguard Worker unsigned int r;
46*3ac0a46fSAndroid Build Coastguard Worker unsigned int g;
47*3ac0a46fSAndroid Build Coastguard Worker unsigned int b;
48*3ac0a46fSAndroid Build Coastguard Worker unsigned int a;
49*3ac0a46fSAndroid Build Coastguard Worker ASSERT_TRUE(FPDFPageObj_GetFillColor(path, &r, &g, &b, &a));
50*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(i, r);
51*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(i, g);
52*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(i, b);
53*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(i, a);
54*3ac0a46fSAndroid Build Coastguard Worker
55*3ac0a46fSAndroid Build Coastguard Worker ASSERT_TRUE(FPDFPageObj_GetStrokeColor(path, &r, &g, &b, &a));
56*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(i, r);
57*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(i, g);
58*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(i, b);
59*3ac0a46fSAndroid Build Coastguard Worker EXPECT_EQ(i, a);
60*3ac0a46fSAndroid Build Coastguard Worker }
61*3ac0a46fSAndroid Build Coastguard Worker
62*3ac0a46fSAndroid Build Coastguard Worker CloseSavedPage(page);
63*3ac0a46fSAndroid Build Coastguard Worker CloseSavedDocument();
64*3ac0a46fSAndroid Build Coastguard Worker }
65