[Libreoffice-commits] core.git: 2 commits - formula/source include/formula sc/inc sc/qa sc/source xmloff/source

Markus Mohrhard markus.mohrhard at collabora.co.uk
Sun May 18 23:17:43 PDT 2014


 formula/source/core/resource/core_resource.src       |    6 ++
 include/formula/compiler.hrc                         |    3 -
 include/formula/opcode.hxx                           |    1 
 sc/inc/helpids.h                                     |    1 
 sc/qa/unit/ucalc.cxx                                 |    1 
 sc/source/core/inc/interpre.hxx                      |    1 
 sc/source/core/tool/interpr4.cxx                     |    1 
 sc/source/core/tool/interpr7.cxx                     |   44 +++++++++++++++++
 sc/source/ui/src/scfuncs.src                         |   47 +++++++++++++++++++
 xmloff/source/chart/SchXMLPropertyMappingContext.cxx |    9 +++
 10 files changed, 113 insertions(+), 1 deletion(-)

New commits:
commit dd0f844728a53a337233a3c687b792e725803da5
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Mon May 19 08:12:04 2014 +0200

    add COLOR function
    
    This function makes property mapping in charts more user friendly.
    
    Change-Id: I01cfb31edd749ee474d5078042fa5c4b4a270f86

diff --git a/formula/source/core/resource/core_resource.src b/formula/source/core/resource/core_resource.src
index 1aecc1a..259eda0 100644
--- a/formula/source/core/resource/core_resource.src
+++ b/formula/source/core/resource/core_resource.src
@@ -423,6 +423,7 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF
     /* END defined ERROR.TYPE() values. */
     String SC_OPCODE_FILTERXML     { Text = "COM.MICROSOFT.FILTERXML";};
     String SC_OPCODE_WEBSERVICE    { Text = "COM.MICROSOFT.WEBSERVICE"; };
+    String SC_OPCODE_COLOR         { Text = "COLOR"; };
     String SC_OPCODE_ERF_MS { Text = "COM.MICROSOFT.ERF.PRECISE" ; };
     String SC_OPCODE_ERFC_MS { Text = "COM.MICROSOFT.ERFC.PRECISE" ; };
 };
@@ -1237,6 +1238,7 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH
     /* END defined ERROR.TYPE() values. */
     String SC_OPCODE_FILTERXML     { Text = "FILTERXML";};
     String SC_OPCODE_WEBSERVICE    { Text = "WEBSERVICE"; };
+    String SC_OPCODE_COLOR         { Text = "COLOR"; };
     String SC_OPCODE_ERF_MS { Text = "ERF.PRECISE" ; };
     String SC_OPCODE_ERFC_MS { Text = "ERFC.PRECISE" ; };
 };
@@ -2767,6 +2769,10 @@ Resource RID_STRLIST_FUNCTION_NAMES
     {
         Text [ en-US ] = "FILTERXML";
     };
+    String SC_OPCODE_COLOR
+    {
+        Text [ en-US ] = "COLOR";
+    };
     String SC_OPCODE_WEBSERVICE
     {
         Text [ en-US ] = "WEBSERVICE";
diff --git a/include/formula/compiler.hrc b/include/formula/compiler.hrc
index 2ce7230..6d642ae 100644
--- a/include/formula/compiler.hrc
+++ b/include/formula/compiler.hrc
@@ -468,8 +468,9 @@
 #define SC_OPCODE_NETWORKDAYS_MS    468
 #define SC_OPCODE_WORKDAY_MS        469
 #define SC_OPCODE_AGGREGATE         470
+#define SC_OPCODE_COLOR             471
 
-#define SC_OPCODE_STOP_2_PAR        471     /* last function with two or more parameters' OpCode + 1 */
+#define SC_OPCODE_STOP_2_PAR        472     /* last function with two or more parameters' OpCode + 1 */
 #define SC_OPCODE_STOP_FUNCTION     SC_OPCODE_STOP_2_PAR            /* last function's OpCode + 1 */
 #define SC_OPCODE_LAST_OPCODE_ID    (SC_OPCODE_STOP_FUNCTION - 1)   /* last OpCode */
 
diff --git a/include/formula/opcode.hxx b/include/formula/opcode.hxx
index 0e9fb70..199d598 100644
--- a/include/formula/opcode.hxx
+++ b/include/formula/opcode.hxx
@@ -461,6 +461,7 @@ enum OpCodeEnum
         ocEuroConvert       = SC_OPCODE_EUROCONVERT,
         ocFilterXML         = SC_OPCODE_FILTERXML,
         ocWebservice        = SC_OPCODE_WEBSERVICE,
+        ocColor             = SC_OPCODE_COLOR,
         ocErf_MS            = SC_OPCODE_ERF_MS,
         ocErfc_MS           = SC_OPCODE_ERFC_MS,
     // internal stuff
diff --git a/sc/inc/helpids.h b/sc/inc/helpids.h
index 2646504..50df627 100644
--- a/sc/inc/helpids.h
+++ b/sc/inc/helpids.h
@@ -646,6 +646,7 @@
 #define HID_FUNC_BITRSHIFT                                      "SC_HID_FUNC_BITRSHIFT"
 #define HID_FUNC_FILTERXML                                      "SC_HID_FUNC_FILTERXML"
 #define HID_FUNC_WEBSERVICE                                     "SC_HID_FUNC_WEBSERVICE"
+#define HID_FUNC_COLOR                                          "SC_HID_FUNC_COLOR"
 #define HID_FUNC_COVARIANCE_P                                   "SC_HID_FUNC_COVARIANCE_P"
 #define HID_FUNC_COVARIANCE_S                                   "SC_HID_FUNC_COVARIANCE_S"
 #define HID_FUNC_ST_DEV_P_MS                                    "SC_HID_FUNC_ST_DEV_P_MS"
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 4dc7b1b..8e65f68 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -2509,6 +2509,7 @@ void Test::testFunctionLists()
         "BITXOR",
         "CEILING",
         "CEILING.PRECISE",
+        "COLOR",
         "COMBIN",
         "COMBINA",
         "CONVERT",
diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx
index 0c14d32..6022c8e 100644
--- a/sc/source/core/inc/interpre.hxx
+++ b/sc/source/core/inc/interpre.hxx
@@ -833,6 +833,7 @@ void ScMidB();
 
 void ScFilterXML();
 void ScWebservice();
+void ScColor();
 void ScErf();
 void ScErfc();
 
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index e4fb73f..09ea671 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -4088,6 +4088,7 @@ StackVar ScInterpreter::Interpret()
                 case ocZins             : ScZins();                     break;
                 case ocFilterXML        : ScFilterXML();                break;
                 case ocWebservice       : ScWebservice();               break;
+                case ocColor            : ScColor();                    break;
                 case ocErf_MS           : ScErf();                      break;
                 case ocErfc_MS          : ScErfc();                     break;
                 case ocZinsZ            : ScZinsZ();                    break;
diff --git a/sc/source/core/tool/interpr7.cxx b/sc/source/core/tool/interpr7.cxx
index 9ba8cd4..c0c9bf0 100644
--- a/sc/source/core/tool/interpr7.cxx
+++ b/sc/source/core/tool/interpr7.cxx
@@ -274,4 +274,48 @@ void ScInterpreter::ScErfc()
     }
 }
 
+void ScInterpreter::ScColor()
+{
+    sal_uInt8 nParamCount = GetByte();
+    if(MustHaveParamCount(nParamCount, 3, 4))
+    {
+        double nAlpha = 0;
+        if(nParamCount == 4)
+            nAlpha = rtl::math::approxFloor(GetDouble());
+
+        if(nAlpha < 0 || nAlpha > 255)
+        {
+            PushIllegalArgument();
+            return;
+        }
+
+        double nBlue = rtl::math::approxFloor(GetDouble());
+
+        if(nBlue < 0 || nBlue > 255)
+        {
+            PushIllegalArgument();
+            return;
+        }
+
+        double nGreen = rtl::math::approxFloor(GetDouble());
+
+        if(nGreen < 0 || nGreen > 255)
+        {
+            PushIllegalArgument();
+            return;
+        }
+
+        double nRed = rtl::math::approxFloor(GetDouble());
+
+        if(nRed < 0 || nRed > 255)
+        {
+            PushIllegalArgument();
+            return;
+        }
+
+        double nVal = 256*256*256*nAlpha + 256*256*nRed + 256*nGreen + nBlue;
+        PushDouble(nVal);
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/src/scfuncs.src b/sc/source/ui/src/scfuncs.src
index 5887ab0..3812f6e 100644
--- a/sc/source/ui/src/scfuncs.src
+++ b/sc/source/ui/src/scfuncs.src
@@ -11999,6 +11999,53 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ en-US ] = "String containing a valid XPath expression";
         };
     };
+    Resource SC_OPCODE_COLOR
+    {
+        ExtraData =
+        {
+            0;
+            ID_FUNCTION_GRP_MATH;
+            U2S( HID_FUNC_COLOR );
+            4; 0; 0; 0; 1;
+            0;
+        };
+        String 1 // Description
+        {
+            Text [ en-US ] = "Returns an implementation defined value representing a RGBA color";
+        };
+        String 2 // Name of Parameter 1
+        {
+            Text [ en-US ] = "Red";
+        };
+        String 3 // Description of Parameter 1
+        {
+            Text [ en-US ] = "Value of red";
+        };
+        String 4 // Name of parameter 2
+        {
+            Text [ en-US ] = "Green";
+        };
+        String 5 // Description of Parameter 2
+        {
+            Text [ en-US ] = "Value of green";
+        };
+        String 6 // Name of Parameter 3
+        {
+            Text [ en-US ] = "Blue";
+        };
+        String 7 // Description of Parameter 3
+        {
+            Text [ en-US ] = "Value of blue";
+        };
+        String 8 // Name of parameter 4
+        {
+            Text [ en-US ] = "Alpha";
+        };
+        String 9 // Description of Parameter 4
+        {
+            Text [ en-US ] = "Value of alpha";
+        };
+    };
     Resource SC_OPCODE_WEBSERVICE
     {
         String 1 // Description
commit fefad3715a9ca8411228d2bf4a56c210e5b598ef
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date:   Mon May 19 07:10:03 2014 +0200

    fix import issue with property mapping
    
    Change-Id: Iab06c8676569121f6def631fed07eaa57ffb07a2

diff --git a/xmloff/source/chart/SchXMLPropertyMappingContext.cxx b/xmloff/source/chart/SchXMLPropertyMappingContext.cxx
index affe3aa..7c92cbd 100644
--- a/xmloff/source/chart/SchXMLPropertyMappingContext.cxx
+++ b/xmloff/source/chart/SchXMLPropertyMappingContext.cxx
@@ -47,6 +47,15 @@ Reference< chart2::data::XLabeledDataSequence2 > createAndAddSequenceToSeries( c
         xSeqProp->setPropertyValue("Role", uno::makeAny( rRole));
     xLabeledSeq->setValues( xSeq );
 
+    Reference< chart2::data::XDataSink > xSink( xSeriesSource, uno::UNO_QUERY );
+    if( xSink.is())
+    {
+        Sequence< Reference< chart2::data::XLabeledDataSequence > > aData( xSeriesSource->getDataSequences());
+        aData.realloc( aData.getLength() + 1 );
+        aData[ aData.getLength() - 1 ] = xLabeledSeq;
+        xSink->setData( aData );
+    }
+
     return xLabeledSeq;
 }
 


More information about the Libreoffice-commits mailing list