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
cpdf_devicecs_unittest.cpp
Go to the documentation of this file.
1// Copyright 2017 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// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#include "core/fpdfapi/page/cpdf_devicecs.h"
8
9#include "core/fxcrt/retain_ptr.h"
10#include "testing/gtest/include/gtest/gtest.h"
11
13 auto device_gray =
14 pdfium::MakeRetain<CPDF_DeviceCS>(CPDF_ColorSpace::Family::kDeviceGray);
15
16 // Test normal values. For gray, only first value from buf should be used.
17 float buf[3] = {0.43f, 0.11f, 0.34f};
18 auto maybe_rgb = device_gray->GetRGB(buf);
19 ASSERT_TRUE(maybe_rgb.has_value());
20 EXPECT_FLOAT_EQ(0.43f, maybe_rgb.value().red);
21 EXPECT_FLOAT_EQ(0.43f, maybe_rgb.value().green);
22 EXPECT_FLOAT_EQ(0.43f, maybe_rgb.value().blue);
23
24 buf[0] = 0.872f;
25 maybe_rgb = device_gray->GetRGB(buf);
26 ASSERT_TRUE(maybe_rgb.has_value());
27 EXPECT_FLOAT_EQ(0.872f, maybe_rgb.value().red);
28 EXPECT_FLOAT_EQ(0.872f, maybe_rgb.value().green);
29 EXPECT_FLOAT_EQ(0.872f, maybe_rgb.value().blue);
30
31 // Test boundary values
32 buf[0] = {0.0f};
33 maybe_rgb = device_gray->GetRGB(buf);
34 ASSERT_TRUE(maybe_rgb.has_value());
35 EXPECT_FLOAT_EQ(0.0f, maybe_rgb.value().red);
36 EXPECT_FLOAT_EQ(0.0f, maybe_rgb.value().green);
37 EXPECT_FLOAT_EQ(0.0f, maybe_rgb.value().blue);
38
39 buf[0] = 1.0f;
40 maybe_rgb = device_gray->GetRGB(buf);
41 ASSERT_TRUE(maybe_rgb.has_value());
42 EXPECT_FLOAT_EQ(1.0f, maybe_rgb.value().red);
43 EXPECT_FLOAT_EQ(1.0f, maybe_rgb.value().green);
44 EXPECT_FLOAT_EQ(1.0f, maybe_rgb.value().blue);
45
46 // Test out of range values
47 buf[0] = -0.01f;
48 maybe_rgb = device_gray->GetRGB(buf);
49 ASSERT_TRUE(maybe_rgb.has_value());
50 EXPECT_FLOAT_EQ(0.0f, maybe_rgb.value().red);
51 EXPECT_FLOAT_EQ(0.0f, maybe_rgb.value().green);
52 EXPECT_FLOAT_EQ(0.0f, maybe_rgb.value().blue);
53
54 buf[0] = 12.5f;
55 maybe_rgb = device_gray->GetRGB(buf);
56 ASSERT_TRUE(maybe_rgb.has_value());
57 EXPECT_FLOAT_EQ(1.0f, maybe_rgb.value().red);
58 EXPECT_FLOAT_EQ(1.0f, maybe_rgb.value().green);
59 EXPECT_FLOAT_EQ(1.0f, maybe_rgb.value().blue);
60}
61
63 auto device_rgb =
64 pdfium::MakeRetain<CPDF_DeviceCS>(CPDF_ColorSpace::Family::kDeviceRGB);
65
66 // Test normal values
67 float buf[3] = {0.13f, 1.0f, 0.652f};
68 auto maybe_rgb = device_rgb->GetRGB(buf);
69 ASSERT_TRUE(maybe_rgb.has_value());
70 EXPECT_FLOAT_EQ(0.13f, maybe_rgb.value().red);
71 EXPECT_FLOAT_EQ(1.0f, maybe_rgb.value().green);
72 EXPECT_FLOAT_EQ(0.652f, maybe_rgb.value().blue);
73
74 buf[0] = 0.0f;
75 buf[1] = 0.52f;
76 buf[2] = 0.78f;
77 maybe_rgb = device_rgb->GetRGB(buf);
78 ASSERT_TRUE(maybe_rgb.has_value());
79 EXPECT_FLOAT_EQ(0.0f, maybe_rgb.value().red);
80 EXPECT_FLOAT_EQ(0.52f, maybe_rgb.value().green);
81 EXPECT_FLOAT_EQ(0.78f, maybe_rgb.value().blue);
82
83 // Test out of range values
84 buf[0] = -10.5f;
85 buf[1] = 100.0f;
86 maybe_rgb = device_rgb->GetRGB(buf);
87 ASSERT_TRUE(maybe_rgb.has_value());
88 EXPECT_FLOAT_EQ(0.0f, maybe_rgb.value().red);
89 EXPECT_FLOAT_EQ(1.0f, maybe_rgb.value().green);
90 EXPECT_FLOAT_EQ(0.78f, maybe_rgb.value().blue);
91}
92
94 auto device_cmyk =
95 pdfium::MakeRetain<CPDF_DeviceCS>(CPDF_ColorSpace::Family::kDeviceCMYK);
96
97 // Test normal values
98 float buf[4] = {0.6f, 0.5f, 0.3f, 0.9f};
99 auto maybe_rgb = device_cmyk->GetRGB(buf);
100 ASSERT_TRUE(maybe_rgb.has_value());
101 EXPECT_FLOAT_EQ(0.0627451f, maybe_rgb.value().red);
102 EXPECT_FLOAT_EQ(0.0627451f, maybe_rgb.value().green);
103 EXPECT_FLOAT_EQ(0.10588236f, maybe_rgb.value().blue);
104
105 buf[0] = 0.15f;
106 buf[2] = 0.0f;
107 maybe_rgb = device_cmyk->GetRGB(buf);
108 ASSERT_TRUE(maybe_rgb.has_value());
109 EXPECT_FLOAT_EQ(0.2f, maybe_rgb.value().red);
110 EXPECT_FLOAT_EQ(0.0862745f, maybe_rgb.value().green);
111 EXPECT_FLOAT_EQ(0.16470589f, maybe_rgb.value().blue);
112
113 buf[2] = 1.0f;
114 buf[3] = 0.0f;
115 maybe_rgb = device_cmyk->GetRGB(buf);
116 ASSERT_TRUE(maybe_rgb.has_value());
117 EXPECT_FLOAT_EQ(0.85098046f, maybe_rgb.value().red);
118 EXPECT_FLOAT_EQ(0.552941f, maybe_rgb.value().green);
119 EXPECT_FLOAT_EQ(0.15686275f, maybe_rgb.value().blue);
120
121 // Test out of range values
122 buf[2] = 1.5f;
123 buf[3] = -0.6f;
124 maybe_rgb = device_cmyk->GetRGB(buf);
125 ASSERT_TRUE(maybe_rgb.has_value());
126 EXPECT_FLOAT_EQ(0.85098046f, maybe_rgb.value().red);
127 EXPECT_FLOAT_EQ(0.552941f, maybe_rgb.value().green);
128 EXPECT_FLOAT_EQ(0.15686275f, maybe_rgb.value().blue);
129}
TEST(FXCRYPT, MD5GenerateEmtpyData)