Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cpdfsdk_annotiterator_embeddertest.cpp
Go to the documentation of this file.
1// Copyright 2016 The PDFium Authors
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 "fpdfsdk/cpdfsdk_annot.h"
6#include "fpdfsdk/cpdfsdk_annotiterator.h"
7#include "fpdfsdk/cpdfsdk_formfillenvironment.h"
8#include "fpdfsdk/cpdfsdk_helpers.h"
9#include "testing/embedder_test.h"
10#include "testing/embedder_test_mock_delegate.h"
11#include "testing/embedder_test_timer_handling_delegate.h"
12#include "testing/gmock/include/gmock/gmock.h"
13#include "testing/gtest/include/gtest/gtest.h"
14
15namespace {
16
17void CheckRect(const CFX_FloatRect& actual, const CFX_FloatRect& expected) {
18 EXPECT_EQ(expected.left, actual.left);
19 EXPECT_EQ(expected.bottom, actual.bottom);
20 EXPECT_EQ(expected.right, actual.right);
21 EXPECT_EQ(expected.top, actual.top);
22}
23
24} // namespace
25
27
29 ASSERT_TRUE(OpenDocument("annotiter.pdf"));
30 FPDF_PAGE page0 = LoadPage(0);
31 FPDF_PAGE page1 = LoadPage(1);
32 FPDF_PAGE page2 = LoadPage(2);
33 ASSERT_TRUE(page0);
34 ASSERT_TRUE(page1);
35 ASSERT_TRUE(page2);
36
37 CFX_FloatRect LeftBottom(200, 200, 220, 220);
38 CFX_FloatRect RightBottom(400, 201, 420, 221);
39 CFX_FloatRect LeftTop(201, 400, 221, 420);
40 CFX_FloatRect RightTop(401, 401, 421, 421);
41
42 CPDFSDK_FormFillEnvironment* pFormFillEnv =
43 CPDFSDKFormFillEnvironmentFromFPDFFormHandle(form_handle());
44
45 {
46 // Page 0 specifies "row order".
49 CPDFSDK_Annot* pAnnot = iter.GetFirstAnnot();
50 CheckRect(pAnnot->GetRect(), RightTop);
51 pAnnot = iter.GetNextAnnot(pAnnot);
52 CheckRect(pAnnot->GetRect(), LeftTop);
53 pAnnot = iter.GetNextAnnot(pAnnot);
54 CheckRect(pAnnot->GetRect(), RightBottom);
55 pAnnot = iter.GetNextAnnot(pAnnot);
56 CheckRect(pAnnot->GetRect(), LeftBottom);
57 pAnnot = iter.GetNextAnnot(pAnnot);
58 EXPECT_FALSE(pAnnot);
59
60 pAnnot = iter.GetLastAnnot();
61 CheckRect(pAnnot->GetRect(), LeftBottom);
62 pAnnot = iter.GetPrevAnnot(pAnnot);
63 CheckRect(pAnnot->GetRect(), RightBottom);
64 pAnnot = iter.GetPrevAnnot(pAnnot);
65 CheckRect(pAnnot->GetRect(), LeftTop);
66 pAnnot = iter.GetPrevAnnot(pAnnot);
67 CheckRect(pAnnot->GetRect(), RightTop);
68 pAnnot = iter.GetPrevAnnot(pAnnot);
69 EXPECT_FALSE(pAnnot);
70 }
71 {
72 // Page 1 specifies "column order"
75 CPDFSDK_Annot* pAnnot = iter.GetFirstAnnot();
76 CheckRect(pAnnot->GetRect(), RightTop);
77 pAnnot = iter.GetNextAnnot(pAnnot);
78 CheckRect(pAnnot->GetRect(), RightBottom);
79 pAnnot = iter.GetNextAnnot(pAnnot);
80 CheckRect(pAnnot->GetRect(), LeftTop);
81 pAnnot = iter.GetNextAnnot(pAnnot);
82 CheckRect(pAnnot->GetRect(), LeftBottom);
83 pAnnot = iter.GetNextAnnot(pAnnot);
84 EXPECT_FALSE(pAnnot);
85
86 pAnnot = iter.GetLastAnnot();
87 CheckRect(pAnnot->GetRect(), LeftBottom);
88 pAnnot = iter.GetPrevAnnot(pAnnot);
89 CheckRect(pAnnot->GetRect(), LeftTop);
90 pAnnot = iter.GetPrevAnnot(pAnnot);
91 CheckRect(pAnnot->GetRect(), RightBottom);
92 pAnnot = iter.GetPrevAnnot(pAnnot);
93 CheckRect(pAnnot->GetRect(), RightTop);
94 pAnnot = iter.GetPrevAnnot(pAnnot);
95 EXPECT_FALSE(pAnnot);
96 }
97 {
98 // Page 2 specifies "struct order"
101 CPDFSDK_Annot* pAnnot = iter.GetFirstAnnot();
102 CheckRect(pAnnot->GetRect(), LeftBottom);
103 pAnnot = iter.GetNextAnnot(pAnnot);
104 CheckRect(pAnnot->GetRect(), RightTop);
105 pAnnot = iter.GetNextAnnot(pAnnot);
106 CheckRect(pAnnot->GetRect(), LeftTop);
107 pAnnot = iter.GetNextAnnot(pAnnot);
108 CheckRect(pAnnot->GetRect(), RightBottom);
109 pAnnot = iter.GetNextAnnot(pAnnot);
110 EXPECT_FALSE(pAnnot);
111
112 pAnnot = iter.GetLastAnnot();
113 CheckRect(pAnnot->GetRect(), RightBottom);
114 pAnnot = iter.GetPrevAnnot(pAnnot);
115 CheckRect(pAnnot->GetRect(), LeftTop);
116 pAnnot = iter.GetPrevAnnot(pAnnot);
117 CheckRect(pAnnot->GetRect(), RightTop);
118 pAnnot = iter.GetPrevAnnot(pAnnot);
119 CheckRect(pAnnot->GetRect(), LeftBottom);
120 pAnnot = iter.GetPrevAnnot(pAnnot);
121 EXPECT_FALSE(pAnnot);
122 }
123 UnloadPage(page2);
124 UnloadPage(page1);
125 UnloadPage(page0);
126}
constexpr CFX_FloatRect(float l, float b, float r, float t)
CPDFSDK_Annot * GetNextAnnot(CPDFSDK_Annot *pAnnot)
CPDFSDK_Annot * GetPrevAnnot(CPDFSDK_Annot *pAnnot)
virtual CFX_FloatRect GetRect() const =0
CPDFSDK_PageView * GetPageViewAtIndex(int nIndex)
TEST_F(CPDFSDK_AnnotIteratorTest, CPDFSDK_AnnotIterator)