14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved.
24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file.
44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef FPDFSDK_JAVASCRIPT_COLOR_H_
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define FPDFSDK_JAVASCRIPT_COLOR_H_
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector>
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/javascript/JS_Define.h"
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/pdfwindow/PWL_Wnd.h"
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass color : public CJS_EmbedObj {
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public:
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  explicit color(CJS_Object* pJSObject);
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  ~color() override;
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
2033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool black(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
2133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool blue(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
2233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool cyan(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
2333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool dkGray(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
2433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool gray(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
2533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool green(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
2633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool ltGray(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
2733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool magenta(CJS_Runtime* pRuntime,
2833357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann               CJS_PropValue& vp,
2933357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann               CFX_WideString& sError);
3033357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool red(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
3133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool transparent(CJS_Runtime* pRuntime,
3233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann                   CJS_PropValue& vp,
3333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann                   CFX_WideString& sError);
3433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool white(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
3533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool yellow(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
3733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool convert(CJS_Runtime* pRuntime,
384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann               const std::vector<CJS_Value>& params,
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann               CJS_Value& vRet,
404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann               CFX_WideString& sError);
4133357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool equal(CJS_Runtime* pRuntime,
424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann             const std::vector<CJS_Value>& params,
434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann             CJS_Value& vRet,
444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann             CFX_WideString& sError);
454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static void ConvertPWLColorToArray(CJS_Runtime* pRuntime,
474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                     const CPWL_Color& color,
484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                     CJS_Array* array);
494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  static void ConvertArrayToPWLColor(CJS_Runtime* pRuntime,
504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                     const CJS_Array& array,
514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                     CPWL_Color* color);
524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private:
5433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann  bool PropertyHelper(CJS_Runtime* pRuntime,
5533357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann                      CJS_PropValue& vp,
5633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann                      CPWL_Color* val);
5733357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann
584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crTransparent;
594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crBlack;
604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crWhite;
614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crRed;
624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crGreen;
634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crBlue;
644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crCyan;
654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crMagenta;
664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crYellow;
674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crDKGray;
684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crGray;
694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Color m_crLTGray;
704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CJS_Color : public CJS_Object {
734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public:
744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  explicit CJS_Color(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  ~CJS_Color() override {}
764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  DECLARE_JS_CLASS();
784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(black, color);
804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(blue, color);
814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(cyan, color);
824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(dkGray, color);
834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(gray, color);
844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(green, color);
854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(ltGray, color);
864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(magenta, color);
874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(red, color);
884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(transparent, color);
894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(white, color);
904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_PROP(yellow, color);
914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_METHOD(convert, color);
934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  JS_STATIC_METHOD(equal, color);
944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // FPDFSDK_JAVASCRIPT_COLOR_H_
97