xref: /aosp_15_r20/external/pdfium/core/fpdfdoc/cpdf_color_utils.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1 // Copyright 2019 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/fpdfdoc/cpdf_color_utils.h"
8 
9 #include "core/fpdfapi/parser/cpdf_array.h"
10 #include "core/fpdfdoc/cpdf_defaultappearance.h"
11 #include "core/fxcrt/bytestring.h"
12 #include "third_party/base/notreached.h"
13 
14 namespace fpdfdoc {
15 
CFXColorFromArray(const CPDF_Array & array)16 CFX_Color CFXColorFromArray(const CPDF_Array& array) {
17   CFX_Color rt;
18   switch (array.size()) {
19     case 1:
20       rt = CFX_Color(CFX_Color::Type::kGray, array.GetFloatAt(0));
21       break;
22     case 3:
23       rt = CFX_Color(CFX_Color::Type::kRGB, array.GetFloatAt(0),
24                      array.GetFloatAt(1), array.GetFloatAt(2));
25       break;
26     case 4:
27       rt = CFX_Color(CFX_Color::Type::kCMYK, array.GetFloatAt(0),
28                      array.GetFloatAt(1), array.GetFloatAt(2),
29                      array.GetFloatAt(3));
30       break;
31   }
32   return rt;
33 }
34 
CFXColorFromString(const ByteString & str)35 CFX_Color CFXColorFromString(const ByteString& str) {
36   CPDF_DefaultAppearance appearance(str);
37   return appearance.GetColor().value_or(CFX_Color());
38 }
39 
40 }  // namespace fpdfdoc
41