1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JavaScript.h"
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/IJavaScript.h"
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Define.h"
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Object.h"
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Value.h"
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/color.h"
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_EventHandler.h"
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Context.h"
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/javascript/JS_Runtime.h"
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic v8::Isolate* GetIsolate(IFXJS_Context* cc)
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Context* pContext = (CJS_Context *)cc;
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pContext != NULL);
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Runtime* pRuntime = pContext->GetJSRuntime();
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ASSERT(pRuntime != NULL);
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return pRuntime->GetIsolate();
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------- color -------------------------- */
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovBEGIN_JS_STATIC_CONST(CJS_Color)
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovEND_JS_STATIC_CONST()
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovBEGIN_JS_STATIC_PROP(CJS_Color)
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(black)
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(blue)
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(cyan)
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(dkGray)
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(gray)
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(green)
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(ltGray)
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(magenta)
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(red)
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(transparent)
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(white)
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_PROP_ENTRY(yellow)
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovEND_JS_STATIC_PROP()
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovBEGIN_JS_STATIC_METHOD(CJS_Color)
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(convert, 2)
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	JS_STATIC_METHOD_ENTRY(equal, 2)
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovEND_JS_STATIC_METHOD()
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIMPLEMENT_JS_CLASS(CJS_Color,color)
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovcolor::color(CJS_Object* pJSObject): CJS_EmbedObj(pJSObject)
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crTransparent = CPWL_Color(COLORTYPE_TRANSPARENT);
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crBlack = CPWL_Color(COLORTYPE_GRAY, 0);
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crWhite = CPWL_Color(COLORTYPE_GRAY, 1);
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crRed = CPWL_Color(COLORTYPE_RGB, 1, 0 ,0);
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crGreen = CPWL_Color(COLORTYPE_RGB, 0, 1 ,0);
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crBlue = CPWL_Color(COLORTYPE_RGB, 0, 0 ,1);
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crCyan = CPWL_Color(COLORTYPE_CMYK, 1, 0 ,0, 0);
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crMagenta = CPWL_Color(COLORTYPE_CMYK, 0, 1 ,0, 0);
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crYellow = CPWL_Color(COLORTYPE_CMYK, 0, 0 ,1, 0);
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crDKGray = CPWL_Color(COLORTYPE_GRAY, 0.25);
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crGray = CPWL_Color(COLORTYPE_GRAY, 0.5);
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	m_crLTGray = CPWL_Color(COLORTYPE_GRAY, 0.75);
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovcolor::~color(void)
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid color::ConvertPWLColorToArray(const CPWL_Color& color, CJS_Array& array)
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	switch (color.nColorType)
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case COLORTYPE_TRANSPARENT:
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(0, CJS_Value(array.GetIsolate(), "T"));
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case COLORTYPE_GRAY:
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(0, CJS_Value(array.GetIsolate(),"G"));
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(1, CJS_Value(array.GetIsolate(),color.fColor1));
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case COLORTYPE_RGB:
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(0, CJS_Value(array.GetIsolate(),"RGB"));
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(1, CJS_Value(array.GetIsolate(),color.fColor1));
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(2, CJS_Value(array.GetIsolate(),color.fColor2));
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(3, CJS_Value(array.GetIsolate(),color.fColor3));
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	case COLORTYPE_CMYK:
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(0, CJS_Value(array.GetIsolate(),"CMYK"));
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(1, CJS_Value(array.GetIsolate(),color.fColor1));
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(2, CJS_Value(array.GetIsolate(),color.fColor2));
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(3, CJS_Value(array.GetIsolate(),color.fColor3));
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.SetElement(4, CJS_Value(array.GetIsolate(),color.fColor4));
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		break;
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid color::ConvertArrayToPWLColor(CJS_Array& array, CPWL_Color& color)
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nArrayLen = array.GetLength();
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nArrayLen < 1) return;
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Value value(array.GetIsolate());
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_ByteString sSpace;
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	array.GetElement(0, value);
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	sSpace = value;
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	double d1 = 0;
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	double d2 = 0;
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	double d3 = 0;
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	double d4 = 0;
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nArrayLen > 1)
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.GetElement(1, value);
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		d1 = value;
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nArrayLen > 2)
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.GetElement(2, value);
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		d2 = value;
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nArrayLen > 3)
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.GetElement(3, value);
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		d3 = value;
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (nArrayLen > 4)
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		array.GetElement(4, value);
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		d4 = value;
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (sSpace == "T")
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color = CPWL_Color(COLORTYPE_TRANSPARENT);
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (sSpace == "G")
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color = CPWL_Color(COLORTYPE_GRAY, (FX_FLOAT)d1);
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (sSpace == "RGB")
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color = CPWL_Color(COLORTYPE_RGB, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3);
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (sSpace == "CMYK")
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		color = CPWL_Color(COLORTYPE_CMYK, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3, (FX_FLOAT)d4);
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JS_IMPLEMENT_COLORPROP(prop, var)\
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL color::prop(OBJ_PROP_PARAMS)\
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{\
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Context* pContext = (CJS_Context*)cc;\
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Isolate* isolate = pContext->GetJSRuntime()->GetIsolate();\
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (vp.IsGetting())\
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{\
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array array(isolate);\
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ConvertPWLColorToArray(var, array);\
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		vp << array;\
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}\
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else\
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{\
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		CJS_Array array(isolate);\
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		if (!vp.ConvertToArray(array)) return FALSE;\
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		ConvertArrayToPWLColor(array, var);\
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}\
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;\
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(transparent, m_crTransparent)
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(black, m_crBlack)
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(white, m_crWhite)
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(red, m_crRed)
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(green, m_crGreen)
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(blue, m_crBlue)
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(cyan, m_crCyan)
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(magenta, m_crMagenta)
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(yellow, m_crYellow)
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(dkGray, m_crDKGray)
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(gray, m_crGray)
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovJS_IMPLEMENT_COLORPROP(ltGray, m_crLTGray)
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL color::convert(OBJ_METHOD_PARAMS)
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Isolate* isolate = GetIsolate(cc);
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int iSize = params.size();
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (iSize < 2) return FALSE;
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Array aSource(isolate);
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!params[0].ConvertToArray(aSource)) return FALSE;
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPWL_Color crSource;
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ConvertArrayToPWLColor(aSource, crSource);
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CFX_ByteString sDestSpace = params[1];
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int nColorType = COLORTYPE_TRANSPARENT;
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (sDestSpace == "T")
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nColorType = COLORTYPE_TRANSPARENT;
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (sDestSpace == "G")
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nColorType = COLORTYPE_GRAY;
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (sDestSpace == "RGB")
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nColorType = COLORTYPE_RGB;
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	else if (sDestSpace == "CMYK")
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	{
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		nColorType = COLORTYPE_CMYK;
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	}
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Array aDest(isolate);
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPWL_Color crDest = crSource;
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	crDest.ConvertColorType(nColorType);
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ConvertPWLColorToArray(crDest, aDest);
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	vRet = aDest;
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL color::equal(OBJ_METHOD_PARAMS)
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	v8::Isolate* isolate = GetIsolate(cc);
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (params.size() < 2) return FALSE;
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CJS_Array array1(isolate), array2(isolate);
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!params[0].ConvertToArray(array1)) return FALSE;
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if (!params[1].ConvertToArray(array2)) return FALSE;
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPWL_Color color1;
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	CPWL_Color color2;
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ConvertArrayToPWLColor(array1, color1);
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	ConvertArrayToPWLColor(array2, color2);
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	color1.ConvertColorType(color2.nColorType);
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	vRet = color1 == color2;
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	return TRUE;
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
254