blob: 8d6187a17844c3c8b26ded0821a617636b2bd6c7 [file] [log] [blame]
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07001// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
Lei Zhanga6d9f0e2015-06-13 00:48:38 -07004
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07005// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
Dan Sinclairf766ad22016-03-14 13:51:24 -04007#ifndef FPDFSDK_JAVASCRIPT_COLOR_H_
8#define FPDFSDK_JAVASCRIPT_COLOR_H_
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07009
Dan Sinclair3ebd1212016-03-09 09:59:23 -050010#include <vector>
11
Dan Sinclairf766ad22016-03-14 13:51:24 -040012#include "fpdfsdk/javascript/JS_Define.h"
dan sinclair89e904b2016-03-23 19:29:15 -040013#include "fpdfsdk/pdfwindow/PWL_Wnd.h"
Tom Sepez9a3f8122015-04-07 15:35:48 -070014
Nico Weber9d8ec5a2015-08-04 13:00:21 -070015class color : public CJS_EmbedObj {
16 public:
Dan Sinclair85c8e7f2016-11-21 13:50:32 -050017 explicit color(CJS_Object* pJSObject);
Lei Zhang2b1a2d52015-08-14 22:16:22 -070018 ~color() override;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070019
Tom Sepezb1670b52017-02-16 17:01:00 -080020 bool black(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
21 bool blue(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
22 bool cyan(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
23 bool dkGray(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
24 bool gray(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
25 bool green(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
26 bool ltGray(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
27 bool magenta(CJS_Runtime* pRuntime,
28 CJS_PropValue& vp,
29 CFX_WideString& sError);
30 bool red(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
31 bool transparent(CJS_Runtime* pRuntime,
Tom Sepezd6ae2af2017-02-16 11:49:55 -080032 CJS_PropValue& vp,
33 CFX_WideString& sError);
Tom Sepezb1670b52017-02-16 17:01:00 -080034 bool white(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
35 bool yellow(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070036
Tom Sepezb1670b52017-02-16 17:01:00 -080037 bool convert(CJS_Runtime* pRuntime,
tsepez4cf55152016-11-02 14:37:54 -070038 const std::vector<CJS_Value>& params,
39 CJS_Value& vRet,
40 CFX_WideString& sError);
Tom Sepezb1670b52017-02-16 17:01:00 -080041 bool equal(CJS_Runtime* pRuntime,
tsepez4cf55152016-11-02 14:37:54 -070042 const std::vector<CJS_Value>& params,
43 CJS_Value& vRet,
44 CFX_WideString& sError);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070045
tsepeze5aff742016-08-08 09:49:42 -070046 static void ConvertPWLColorToArray(CJS_Runtime* pRuntime,
47 const CPWL_Color& color,
48 CJS_Array* array);
49 static void ConvertArrayToPWLColor(CJS_Runtime* pRuntime,
50 const CJS_Array& array,
51 CPWL_Color* color);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070052
Nico Weber9d8ec5a2015-08-04 13:00:21 -070053 private:
Tom Sepez37a35df2017-02-21 11:43:14 -080054 bool PropertyHelper(CJS_Runtime* pRuntime,
55 CJS_PropValue& vp,
56 CPWL_Color* val);
57
Nico Weber9d8ec5a2015-08-04 13:00:21 -070058 CPWL_Color m_crTransparent;
59 CPWL_Color m_crBlack;
60 CPWL_Color m_crWhite;
61 CPWL_Color m_crRed;
62 CPWL_Color m_crGreen;
63 CPWL_Color m_crBlue;
64 CPWL_Color m_crCyan;
65 CPWL_Color m_crMagenta;
66 CPWL_Color m_crYellow;
67 CPWL_Color m_crDKGray;
68 CPWL_Color m_crGray;
69 CPWL_Color m_crLTGray;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070070};
71
Nico Weber9d8ec5a2015-08-04 13:00:21 -070072class CJS_Color : public CJS_Object {
73 public:
Dan Sinclair85c8e7f2016-11-21 13:50:32 -050074 explicit CJS_Color(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
Lei Zhang2b1a2d52015-08-14 22:16:22 -070075 ~CJS_Color() override {}
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070076
Tom Sepezcd56a7d2015-10-06 11:45:28 -070077 DECLARE_JS_CLASS();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070078
Nico Weber9d8ec5a2015-08-04 13:00:21 -070079 JS_STATIC_PROP(black, color);
80 JS_STATIC_PROP(blue, color);
81 JS_STATIC_PROP(cyan, color);
82 JS_STATIC_PROP(dkGray, color);
83 JS_STATIC_PROP(gray, color);
84 JS_STATIC_PROP(green, color);
85 JS_STATIC_PROP(ltGray, color);
86 JS_STATIC_PROP(magenta, color);
87 JS_STATIC_PROP(red, color);
88 JS_STATIC_PROP(transparent, color);
89 JS_STATIC_PROP(white, color);
90 JS_STATIC_PROP(yellow, color);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070091
Nico Weber9d8ec5a2015-08-04 13:00:21 -070092 JS_STATIC_METHOD(convert, color);
93 JS_STATIC_METHOD(equal, color);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070094};
95
Dan Sinclairf766ad22016-03-14 13:51:24 -040096#endif // FPDFSDK_JAVASCRIPT_COLOR_H_