Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
cfx_dibbase_unittest.cpp
Go to the documentation of this file.
1
// Copyright 2020 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
"core/fxge/dib/cfx_dibbase.h"
6
7
#
include
"core/fxcrt/fx_coordinates.h"
8
#
include
"core/fxge/dib/cfx_dibitmap.h"
9
#
include
"testing/gtest/include/gtest/gtest.h"
10
11
namespace
{
12
13
struct
Input {
14
CFX_Point
src_top_left;
15
CFX_Size
src_size;
16
CFX_Point
dest_top_left;
17
CFX_Size
overlap_size;
18
};
19
20
struct
Output {
21
CFX_Point
src_top_left;
22
CFX_Point
dest_top_left;
23
CFX_Size
overlap_size;
24
};
25
26
void
RunOverlapRectTest(
const
CFX_DIBitmap* bitmap,
27
const
Input& input,
28
const
Output* expected_output) {
29
// Initialize in-out parameters.
30
int
src_left = input.src_top_left.x;
31
int
src_top = input.src_top_left.y;
32
int
dest_left = input.dest_top_left.x;
33
int
dest_top = input.dest_top_left.y;
34
int
overlap_width = input.overlap_size.width;
35
int
overlap_height = input.overlap_size.height;
36
37
bool
success = bitmap
->
GetOverlapRect
(
38
dest_left
,
dest_top
,
overlap_width
,
overlap_height
,
input.src_size.width
,
39
input.src_size.height
,
src_left
,
src_top
,
40
/*pClipRgn=*/
nullptr
)
;
41
if
(success == !expected_output) {
42
ADD_FAILURE();
43
return
;
44
}
45
46
if
(expected_output) {
47
EXPECT_EQ(expected_output->src_top_left.x, src_left);
48
EXPECT_EQ(expected_output->src_top_left.y, src_top);
49
EXPECT_EQ(expected_output->dest_top_left.x, dest_left);
50
EXPECT_EQ(expected_output->dest_top_left.y, dest_top);
51
EXPECT_EQ(expected_output->overlap_size.width, overlap_width);
52
EXPECT_EQ(expected_output->overlap_size.height, overlap_height);
53
}
54
}
55
56
}
// namespace
57
58
TEST
(
CFX_DIBBaseTest
,
GetOverlapRectTrivialOverlap
) {
59
auto
bitmap =
pdfium
::MakeRetain<CFX_DIBitmap>();
60
EXPECT_TRUE(bitmap->Create(400, 300,
FXDIB_Format
::
k1bppRgb
));
61
62
const
Input kInput = {
/*src_top_left=*/
{0, 0},
/*src_size=*/
{400, 300},
63
/*dest_top_left=*/
{0, 0},
64
/*overlap_size=*/
{400, 300}};
65
const
Output kExpectedOutput = {
/*src_top_left=*/
{0, 0},
66
/*dest_top_left=*/
{0, 0},
67
/*overlap_size=*/
{400, 300}};
68
RunOverlapRectTest(bitmap.Get(), kInput, &kExpectedOutput);
69
}
70
71
TEST
(
CFX_DIBBaseTest
,
GetOverlapRectOverlapNoLimit
) {
72
auto
bitmap =
pdfium
::MakeRetain<CFX_DIBitmap>();
73
EXPECT_TRUE(bitmap->Create(400, 300,
FXDIB_Format
::
k1bppRgb
));
74
75
const
Input kInput = {
/*src_top_left=*/
{35, 41},
/*src_size=*/
{400, 300},
76
/*dest_top_left=*/
{123, 137},
77
/*overlap_size=*/
{200, 100}};
78
const
Output kExpectedOutput = {
/*src_top_left=*/
{35, 41},
79
/*dest_top_left=*/
{123, 137},
80
/*overlap_size=*/
{200, 100}};
81
RunOverlapRectTest(bitmap.Get(), kInput, &kExpectedOutput);
82
}
83
84
TEST
(
CFX_DIBBaseTest
,
GetOverlapRectOverlapLimitedBySource
) {
85
auto
bitmap =
pdfium
::MakeRetain<CFX_DIBitmap>();
86
EXPECT_TRUE(bitmap->Create(400, 300,
FXDIB_Format
::
k1bppRgb
));
87
88
const
Input kInput = {
/*src_top_left=*/
{141, 154},
/*src_size=*/
{400, 300},
89
/*dest_top_left=*/
{35, 41},
90
/*overlap_size=*/
{270, 160}};
91
const
Output kExpectedOutput = {
/*src_top_left=*/
{141, 154},
92
/*dest_top_left=*/
{35, 41},
93
/*overlap_size=*/
{259, 146}};
94
RunOverlapRectTest(bitmap.Get(), kInput, &kExpectedOutput);
95
}
96
97
TEST
(
CFX_DIBBaseTest
,
GetOverlapRectOverlapLimitedByDestination
) {
98
auto
bitmap =
pdfium
::MakeRetain<CFX_DIBitmap>();
99
EXPECT_TRUE(bitmap->Create(400, 300,
FXDIB_Format
::
k1bppRgb
));
100
101
const
Input kInput = {
/*src_top_left=*/
{35, 41},
/*src_size=*/
{400, 300},
102
/*dest_top_left=*/
{123, 137},
103
/*overlap_size=*/
{280, 170}};
104
const
Output kExpectedOutput = {
/*src_top_left=*/
{35, 41},
105
/*dest_top_left=*/
{123, 137},
106
/*overlap_size=*/
{277, 163}};
107
RunOverlapRectTest(bitmap.Get(), kInput, &kExpectedOutput);
108
}
109
110
TEST
(
CFX_DIBBaseTest
,
GetOverlapRectBadInputs
) {
111
auto
bitmap =
pdfium
::MakeRetain<CFX_DIBitmap>();
112
EXPECT_TRUE(bitmap->Create(400, 300,
FXDIB_Format
::
k1bppRgb
));
113
114
const
Input kEmptyInputs[] = {
115
// Empty source rect.
116
{
/*src_top_left=*/
{0, 0},
/*src_size=*/
{0, 0},
117
/*dest_top_left=*/
{0, 0},
118
/*overlap_size=*/
{400, 300}},
119
// Empty overlap size.
120
{
/*src_top_left=*/
{0, 0},
/*src_size=*/
{400, 300},
121
/*dest_top_left=*/
{0, 0},
122
/*overlap_size=*/
{0, 0}},
123
// Source out of bounds on x-axis.
124
{
/*src_top_left=*/
{-400, 0},
/*src_size=*/
{400, 300},
125
/*dest_top_left=*/
{0, 0},
126
/*overlap_size=*/
{400, 300}},
127
};
128
for
(
const
Input& input : kEmptyInputs)
129
RunOverlapRectTest(bitmap.Get(), input,
/*expected_output=*/
nullptr
);
130
131
const
Input kOutOfBoundInputs[] = {
132
// Source out of bounds on x-axis.
133
{
/*src_top_left=*/
{400, 0},
/*src_size=*/
{400, 300},
134
/*dest_top_left=*/
{0, 0},
135
/*overlap_size=*/
{400, 300}},
136
// Source out of bounds on y-axis.
137
{
/*src_top_left=*/
{0, 300},
/*src_size=*/
{400, 300},
138
/*dest_top_left=*/
{0, 0},
139
/*overlap_size=*/
{400, 300}},
140
// Source out of bounds on y-axis.
141
{
/*src_top_left=*/
{0, -300},
/*src_size=*/
{400, 300},
142
/*dest_top_left=*/
{0, 0},
143
/*overlap_size=*/
{400, 300}},
144
// Destination out of bounds on x-axis.
145
{
/*src_top_left=*/
{0, 0},
/*src_size=*/
{400, 300},
146
/*dest_top_left=*/
{-400, 0},
147
/*overlap_size=*/
{400, 300}},
148
// Destination out of bounds on x-axis.
149
{
/*src_top_left=*/
{0, 0},
/*src_size=*/
{400, 300},
150
/*dest_top_left=*/
{400, 0},
151
/*overlap_size=*/
{400, 300}},
152
// Destination out of bounds on y-axis.
153
{
/*src_top_left=*/
{0, 0},
/*src_size=*/
{400, 300},
154
/*dest_top_left=*/
{0, -300},
155
/*overlap_size=*/
{400, 300}},
156
// Destination out of bounds on y-axis.
157
{
/*src_top_left=*/
{0, 0},
/*src_size=*/
{400, 300},
158
/*dest_top_left=*/
{0, 300},
159
/*overlap_size=*/
{400, 300}},
160
};
161
for
(
const
Input& input : kOutOfBoundInputs)
162
RunOverlapRectTest(bitmap.Get(), input,
/*expected_output=*/
nullptr
);
163
}
CFX_DIBBase::GetOverlapRect
bool GetOverlapRect(int &dest_left, int &dest_top, int &width, int &height, int src_width, int src_height, int &src_left, int &src_top, const CFX_AggClipRgn *pClipRgn) const
Definition
cfx_dibbase.cpp:682
pdfium::CFDETextOutLargeBitmapTest
Definition
cfde_textout_unittest.cpp:117
CFX_Point
CFX_PTemplate< int32_t > CFX_Point
Definition
fx_coordinates.h:50
CFX_Size
CFX_STemplate< int32_t > CFX_Size
Definition
fx_coordinates.h:114
TEST
TEST(FXCRYPT, MD5GenerateEmtpyData)
Definition
fx_crypt_unittest.cpp:50
FXDIB_Format
FXDIB_Format
Definition
fx_dib.h:21
FXDIB_Format::k1bppRgb
@ k1bppRgb
Definition
fx_dib.h:23
qtwebengine
src
3rdparty
chromium
third_party
pdfium
core
fxge
dib
cfx_dibbase_unittest.cpp
Generated on
for Qt by
1.18.0