| Index: fpdfsdk/javascript/color.cpp
|
| diff --git a/fpdfsdk/javascript/color.cpp b/fpdfsdk/javascript/color.cpp
|
| index 74c885b68256d9b33e6134d8c36d7686438b0d56..c0b63335a47191bf1af044e35d7b56e42aa2c265 100644
|
| --- a/fpdfsdk/javascript/color.cpp
|
| +++ b/fpdfsdk/javascript/color.cpp
|
| @@ -57,38 +57,50 @@ color::color(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {
|
|
|
| color::~color() {}
|
|
|
| -void color::ConvertPWLColorToArray(const CPWL_Color& color, CJS_Array& array) {
|
| +void color::ConvertPWLColorToArray(CJS_Runtime* pRuntime,
|
| + const CPWL_Color& color,
|
| + CJS_Array* array) {
|
| switch (color.nColorType) {
|
| case COLORTYPE_TRANSPARENT:
|
| - array.SetElement(0, CJS_Value(array.GetJSRuntime(), "T"));
|
| + array->SetElement(pRuntime->GetIsolate(), 0, CJS_Value(pRuntime, "T"));
|
| break;
|
| case COLORTYPE_GRAY:
|
| - array.SetElement(0, CJS_Value(array.GetJSRuntime(), "G"));
|
| - array.SetElement(1, CJS_Value(array.GetJSRuntime(), color.fColor1));
|
| + array->SetElement(pRuntime->GetIsolate(), 0, CJS_Value(pRuntime, "G"));
|
| + array->SetElement(pRuntime->GetIsolate(), 1,
|
| + CJS_Value(pRuntime, color.fColor1));
|
| break;
|
| case COLORTYPE_RGB:
|
| - array.SetElement(0, CJS_Value(array.GetJSRuntime(), "RGB"));
|
| - array.SetElement(1, CJS_Value(array.GetJSRuntime(), color.fColor1));
|
| - array.SetElement(2, CJS_Value(array.GetJSRuntime(), color.fColor2));
|
| - array.SetElement(3, CJS_Value(array.GetJSRuntime(), color.fColor3));
|
| + array->SetElement(pRuntime->GetIsolate(), 0, CJS_Value(pRuntime, "RGB"));
|
| + array->SetElement(pRuntime->GetIsolate(), 1,
|
| + CJS_Value(pRuntime, color.fColor1));
|
| + array->SetElement(pRuntime->GetIsolate(), 2,
|
| + CJS_Value(pRuntime, color.fColor2));
|
| + array->SetElement(pRuntime->GetIsolate(), 3,
|
| + CJS_Value(pRuntime, color.fColor3));
|
| break;
|
| case COLORTYPE_CMYK:
|
| - array.SetElement(0, CJS_Value(array.GetJSRuntime(), "CMYK"));
|
| - array.SetElement(1, CJS_Value(array.GetJSRuntime(), color.fColor1));
|
| - array.SetElement(2, CJS_Value(array.GetJSRuntime(), color.fColor2));
|
| - array.SetElement(3, CJS_Value(array.GetJSRuntime(), color.fColor3));
|
| - array.SetElement(4, CJS_Value(array.GetJSRuntime(), color.fColor4));
|
| + array->SetElement(pRuntime->GetIsolate(), 0, CJS_Value(pRuntime, "CMYK"));
|
| + array->SetElement(pRuntime->GetIsolate(), 1,
|
| + CJS_Value(pRuntime, color.fColor1));
|
| + array->SetElement(pRuntime->GetIsolate(), 2,
|
| + CJS_Value(pRuntime, color.fColor2));
|
| + array->SetElement(pRuntime->GetIsolate(), 3,
|
| + CJS_Value(pRuntime, color.fColor3));
|
| + array->SetElement(pRuntime->GetIsolate(), 4,
|
| + CJS_Value(pRuntime, color.fColor4));
|
| break;
|
| }
|
| }
|
|
|
| -void color::ConvertArrayToPWLColor(CJS_Array& array, CPWL_Color& color) {
|
| +void color::ConvertArrayToPWLColor(CJS_Runtime* pRuntime,
|
| + const CJS_Array& array,
|
| + CPWL_Color* color) {
|
| int nArrayLen = array.GetLength();
|
| if (nArrayLen < 1)
|
| return;
|
|
|
| - CJS_Value value(array.GetJSRuntime());
|
| - array.GetElement(0, value);
|
| + CJS_Value value(pRuntime);
|
| + array.GetElement(pRuntime->GetIsolate(), 0, value);
|
| CFX_ByteString sSpace = value.ToCFXByteString();
|
|
|
| double d1 = 0;
|
| @@ -97,34 +109,35 @@ void color::ConvertArrayToPWLColor(CJS_Array& array, CPWL_Color& color) {
|
| double d4 = 0;
|
|
|
| if (nArrayLen > 1) {
|
| - array.GetElement(1, value);
|
| + array.GetElement(pRuntime->GetIsolate(), 1, value);
|
| d1 = value.ToDouble();
|
| }
|
|
|
| if (nArrayLen > 2) {
|
| - array.GetElement(2, value);
|
| + array.GetElement(pRuntime->GetIsolate(), 2, value);
|
| d2 = value.ToDouble();
|
| }
|
|
|
| if (nArrayLen > 3) {
|
| - array.GetElement(3, value);
|
| + array.GetElement(pRuntime->GetIsolate(), 3, value);
|
| d3 = value.ToDouble();
|
| }
|
|
|
| if (nArrayLen > 4) {
|
| - array.GetElement(4, value);
|
| + array.GetElement(pRuntime->GetIsolate(), 4, value);
|
| d4 = value.ToDouble();
|
| }
|
|
|
| if (sSpace == "T") {
|
| - color = CPWL_Color(COLORTYPE_TRANSPARENT);
|
| + *color = CPWL_Color(COLORTYPE_TRANSPARENT);
|
| } else if (sSpace == "G") {
|
| - color = CPWL_Color(COLORTYPE_GRAY, (FX_FLOAT)d1);
|
| + *color = CPWL_Color(COLORTYPE_GRAY, (FX_FLOAT)d1);
|
| } else if (sSpace == "RGB") {
|
| - color = CPWL_Color(COLORTYPE_RGB, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3);
|
| + *color =
|
| + CPWL_Color(COLORTYPE_RGB, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3);
|
| } else if (sSpace == "CMYK") {
|
| - color = CPWL_Color(COLORTYPE_CMYK, (FX_FLOAT)d1, (FX_FLOAT)d2, (FX_FLOAT)d3,
|
| - (FX_FLOAT)d4);
|
| + *color = CPWL_Color(COLORTYPE_CMYK, (FX_FLOAT)d1, (FX_FLOAT)d2,
|
| + (FX_FLOAT)d3, (FX_FLOAT)d4);
|
| }
|
| }
|
|
|
| @@ -132,14 +145,14 @@ void color::ConvertArrayToPWLColor(CJS_Array& array, CPWL_Color& color) {
|
| FX_BOOL color::prop(IJS_Context* cc, CJS_PropValue& vp, \
|
| CFX_WideString& sError) { \
|
| CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); \
|
| - CJS_Array array(pRuntime); \
|
| + CJS_Array array; \
|
| if (vp.IsGetting()) { \
|
| - ConvertPWLColorToArray(var, array); \
|
| + ConvertPWLColorToArray(pRuntime, var, &array); \
|
| vp << array; \
|
| } else { \
|
| if (!vp.ConvertToArray(array)) \
|
| return FALSE; \
|
| - ConvertArrayToPWLColor(array, var); \
|
| + ConvertArrayToPWLColor(pRuntime, array, &var); \
|
| } \
|
| return TRUE; \
|
| }
|
| @@ -166,12 +179,12 @@ FX_BOOL color::convert(IJS_Context* cc,
|
| return FALSE;
|
|
|
| CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| - CJS_Array aSource(pRuntime);
|
| + CJS_Array aSource;
|
| if (!params[0].ConvertToArray(aSource))
|
| return FALSE;
|
|
|
| CPWL_Color crSource;
|
| - ConvertArrayToPWLColor(aSource, crSource);
|
| + ConvertArrayToPWLColor(pRuntime, aSource, &crSource);
|
|
|
| CFX_ByteString sDestSpace = params[1].ToCFXByteString();
|
| int nColorType = COLORTYPE_TRANSPARENT;
|
| @@ -186,11 +199,11 @@ FX_BOOL color::convert(IJS_Context* cc,
|
| nColorType = COLORTYPE_CMYK;
|
| }
|
|
|
| - CJS_Array aDest(pRuntime);
|
| + CJS_Array aDest;
|
| CPWL_Color crDest = crSource;
|
| crDest.ConvertColorType(nColorType);
|
| - ConvertPWLColorToArray(crDest, aDest);
|
| - vRet = aDest;
|
| + ConvertPWLColorToArray(pRuntime, crDest, &aDest);
|
| + vRet = CJS_Value(pRuntime, aDest);
|
|
|
| return TRUE;
|
| }
|
| @@ -203,8 +216,8 @@ FX_BOOL color::equal(IJS_Context* cc,
|
| return FALSE;
|
|
|
| CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| - CJS_Array array1(pRuntime);
|
| - CJS_Array array2(pRuntime);
|
| + CJS_Array array1;
|
| + CJS_Array array2;
|
| if (!params[0].ConvertToArray(array1))
|
| return FALSE;
|
| if (!params[1].ConvertToArray(array2))
|
| @@ -212,8 +225,8 @@ FX_BOOL color::equal(IJS_Context* cc,
|
|
|
| CPWL_Color color1;
|
| CPWL_Color color2;
|
| - ConvertArrayToPWLColor(array1, color1);
|
| - ConvertArrayToPWLColor(array2, color2);
|
| + ConvertArrayToPWLColor(pRuntime, array1, &color1);
|
| + ConvertArrayToPWLColor(pRuntime, array2, &color2);
|
| color1.ConvertColorType(color2.nColorType);
|
| vRet = color1 == color2;
|
| return TRUE;
|
|
|