[Libreoffice-commits] .: 5 commits - chart2/source sc/inc sc/source xmloff/source
Markus Mohrhard
mmohrhard at kemper.freedesktop.org
Wed Apr 11 08:55:40 PDT 2012
chart2/source/controller/dialogs/DataBrowserModel.cxx | 41 ----
chart2/source/controller/dialogs/DataBrowserModel.hxx | 2
chart2/source/view/charttypes/VSeriesPlotter.cxx | 7
chart2/source/view/inc/VDataSeries.hxx | 2
chart2/source/view/main/VDataSeries.cxx | 15 +
sc/inc/document.hxx | 4
sc/inc/table.hxx | 6
sc/source/core/data/documen3.cxx | 4
sc/source/core/data/table4.cxx | 68 ++++---
sc/source/ui/docshell/dbdocfun.cxx | 9 -
sc/source/ui/docshell/dbdocimp.cxx | 8
sc/source/ui/docshell/docfunc.cxx | 41 ++++
sc/source/ui/undo/undoblk3.cxx | 18 +-
xmloff/source/chart/SchXMLExport.cxx | 154 ++++++++++--------
14 files changed, 228 insertions(+), 151 deletions(-)
New commits:
commit f1c9be8706683075b581f85d34c1eafdd41be9b5
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Wed Apr 4 09:58:52 2012 -0430
Export chart X,Y errorbars.
- Remove using older properties to get errorbars data.
- Only export X errorbars when using ODF VERSION >= 1.2.
- Use the dimension attribute to set errorbar direction.
diff --git a/xmloff/source/chart/SchXMLExport.cxx b/xmloff/source/chart/SchXMLExport.cxx
index b8d9935..0d253d2 100644
--- a/xmloff/source/chart/SchXMLExport.cxx
+++ b/xmloff/source/chart/SchXMLExport.cxx
@@ -248,8 +248,8 @@ public:
sal_Bool bExportContent );
void exportErrorBar (
- const ::com::sun::star::uno::Reference<beans::XPropertySet> &xSeriesProp,
- sal_Bool bExportContent );
+ const ::com::sun::star::uno::Reference<beans::XPropertySet> &xSeriesProp, bool bYError,
+ bool bExportContent );
/// add svg position as attribute for current element
void addPosition( const ::com::sun::star::awt::Point & rPosition );
@@ -2992,7 +2992,8 @@ void SchXMLExportHelper_Impl::exportSeries(
exportRegressionCurve( aSeriesSeq[nSeriesIdx], xPropSet, rPageSize, bExportContent );
}
- exportErrorBar( xPropSet,bExportContent );
+ exportErrorBar( xPropSet,false, bExportContent ); // X ErrorBar
+ exportErrorBar( xPropSet,true, bExportContent ); // Y ErrorBar
exportDataPoints(
uno::Reference< beans::XPropertySet >( aSeriesSeq[nSeriesIdx], uno::UNO_QUERY ),
@@ -3116,24 +3117,40 @@ void SchXMLExportHelper_Impl::exportRegressionCurve(
}
void SchXMLExportHelper_Impl::exportErrorBar( const Reference<beans::XPropertySet> &xSeriesProp,
- sal_Bool bExportContent )
+ bool bYError, bool bExportContent )
{
assert(mxExpPropMapper.is());
+ const SvtSaveOptions::ODFDefaultVersion nCurrentVersion( SvtSaveOptions().GetODFDefaultVersion() );
+
+ /// Dont export X ErrorBars for older ODF versions.
+ if ( !bYError && nCurrentVersion < SvtSaveOptions::ODFVER_012 )
+ return;
+
if (xSeriesProp.is())
{
- Any aAny;
- std::vector< XMLPropertyState > aPropertyStates;
+ bool bNegative = false, bPositive = false;
sal_Int32 nErrorBarStyle = chart::ErrorBarStyle::NONE;
- chart::ChartErrorIndicatorType eErrorType = chart::ChartErrorIndicatorType_NONE;
+ Reference< beans::XPropertySet > xErrorBarProp;
try
{
- aAny = xSeriesProp->getPropertyValue("ErrorIndicator" );
- aAny >>= eErrorType;
+ Any aAny;
- aAny = xSeriesProp->getPropertyValue("ErrorBarStyle" );
- aAny >>= nErrorBarStyle;
+ aAny = xSeriesProp->getPropertyValue( bYError ? "ErrorBarY" : "ErrorBarX" );
+ aAny >>= xErrorBarProp;
+
+ if ( xErrorBarProp.is() )
+ {
+ aAny = xErrorBarProp->getPropertyValue("ShowNegativeError" );
+ aAny >>= bNegative;
+
+ aAny = xErrorBarProp->getPropertyValue("ShowPositiveError" );
+ aAny >>= bPositive;
+
+ aAny = xErrorBarProp->getPropertyValue("ErrorBarStyle" );
+ aAny >>= nErrorBarStyle;
+ }
}
catch( const beans::UnknownPropertyException & rEx )
{
@@ -3144,56 +3161,37 @@ void SchXMLExportHelper_Impl::exportErrorBar( const Reference<beans::XPropertySe
RTL_TEXTENCODING_ASCII_US ).getStr());
}
- if( nErrorBarStyle != chart::ErrorBarStyle::NONE &&
- eErrorType != chart::ChartErrorIndicatorType_NONE)
+ if( nErrorBarStyle != chart::ErrorBarStyle::NONE && (bNegative || bPositive))
{
- Reference< beans::XPropertySet > xErrorBarProp;
- try
- {
- aAny = xSeriesProp->getPropertyValue("DataErrorProperties" );
- aAny >>= xErrorBarProp;
- }
- catch( const uno::Exception & rEx )
- {
- (void)rEx; // avoid warning for pro build
- OSL_TRACE( "Exception caught during Export of series - optional DataErrorProperties not available: %s",
- OUStringToOString( rEx.Message, RTL_TEXTENCODING_ASCII_US ).getStr() );
- }
-
- if( xErrorBarProp.is() )
+ if( bExportContent && nErrorBarStyle == chart::ErrorBarStyle::FROM_DATA )
{
- if( bExportContent &&
- nErrorBarStyle == chart::ErrorBarStyle::FROM_DATA )
+ // register data ranges for error bars for export in local table
+ ::std::vector< Reference< chart2::data::XDataSequence > > aErrorBarSequences(
+ lcl_getErrorBarSequences( xErrorBarProp ));
+ for( ::std::vector< Reference< chart2::data::XDataSequence > >::const_iterator aIt(
+ aErrorBarSequences.begin()); aIt != aErrorBarSequences.end(); ++aIt )
{
- // register data ranges for error bars for export in local table
- ::std::vector< Reference< chart2::data::XDataSequence > > aErrorBarSequences(
- lcl_getErrorBarSequences( xErrorBarProp ));
- for( ::std::vector< Reference< chart2::data::XDataSequence > >::const_iterator aIt(
- aErrorBarSequences.begin()); aIt != aErrorBarSequences.end(); ++aIt )
- {
- m_aDataSequencesToExport.push_back( tLabelValuesDataPair( 0, *aIt ));
- }
+ m_aDataSequencesToExport.push_back( tLabelValuesDataPair( 0, *aIt ));
}
+ }
- aPropertyStates = mxExpPropMapper->Filter( xErrorBarProp );
+ std::vector< XMLPropertyState > aPropertyStates = mxExpPropMapper->Filter( xErrorBarProp );
- if( !aPropertyStates.empty() )
+ if( !aPropertyStates.empty() )
+ {
+ // write element
+ if( bExportContent )
{
- // write element
- if( bExportContent )
- {
- // add style name attribute
- AddAutoStyleAttribute( aPropertyStates );
+ // add style name attribute
+ AddAutoStyleAttribute( aPropertyStates );
- const SvtSaveOptions::ODFDefaultVersion nCurrentVersion( SvtSaveOptions().GetODFDefaultVersion() );
- if( nCurrentVersion >= SvtSaveOptions::ODFVER_012 )
- mrExport.AddAttribute( XML_NAMESPACE_CHART, XML_DIMENSION, XML_Y );//#i114149#
- SvXMLElementExport( mrExport, XML_NAMESPACE_CHART, XML_ERROR_INDICATOR, sal_True, sal_True );
- }
- else // autostyles
- {
- CollectAutoStyle( aPropertyStates );
- }
+ if( nCurrentVersion >= SvtSaveOptions::ODFVER_012 )
+ mrExport.AddAttribute( XML_NAMESPACE_CHART, XML_DIMENSION, bYError ? XML_Y : XML_X );//#i114149#
+ SvXMLElementExport( mrExport, XML_NAMESPACE_CHART, XML_ERROR_INDICATOR, sal_True, sal_True );
+ }
+ else // autostyles
+ {
+ CollectAutoStyle( aPropertyStates );
}
}
}
commit 181a7d75129017c3107939da8aa8b5972b9d5ca9
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Tue Apr 3 17:41:52 2012 -0430
Move exporting chart errorbars code to its own method.
diff --git a/xmloff/source/chart/SchXMLExport.cxx b/xmloff/source/chart/SchXMLExport.cxx
index bb8011c..b8d9935 100644
--- a/xmloff/source/chart/SchXMLExport.cxx
+++ b/xmloff/source/chart/SchXMLExport.cxx
@@ -247,6 +247,10 @@ public:
const ::com::sun::star::awt::Size & rPageSize,
sal_Bool bExportContent );
+ void exportErrorBar (
+ const ::com::sun::star::uno::Reference<beans::XPropertySet> &xSeriesProp,
+ sal_Bool bExportContent );
+
/// add svg position as attribute for current element
void addPosition( const ::com::sun::star::awt::Point & rPosition );
void addPosition( com::sun::star::uno::Reference< com::sun::star::drawing::XShape > xShape );
@@ -2748,8 +2752,6 @@ void SchXMLExportHelper_Impl::exportSeries(
sal_Int32 nAttachedAxis = chart::ChartAxisAssign::PRIMARY_Y;
sal_Bool bHasMeanValueLine = false;
chart::ChartRegressionCurveType eRegressionType( chart::ChartRegressionCurveType_NONE );
- chart::ChartErrorIndicatorType eErrorType( chart::ChartErrorIndicatorType_NONE );
- sal_Int32 nErrorBarStyle( chart::ErrorBarStyle::NONE );
Reference< beans::XPropertySet > xPropSet;
tLabelValuesDataPair aSeriesLabelValuesPair;
@@ -2817,14 +2819,6 @@ void SchXMLExportHelper_Impl::exportSeries(
aAny = xPropSet->getPropertyValue(
OUString( RTL_CONSTASCII_USTRINGPARAM( "RegressionCurves" )));
aAny >>= eRegressionType;
-
- aAny = xPropSet->getPropertyValue(
- OUString( RTL_CONSTASCII_USTRINGPARAM( "ErrorIndicator" )));
- aAny >>= eErrorType;
-
- aAny = xPropSet->getPropertyValue(
- OUString( RTL_CONSTASCII_USTRINGPARAM( "ErrorBarStyle" )));
- aAny >>= nErrorBarStyle;
}
catch( const beans::UnknownPropertyException & rEx )
{
@@ -2998,62 +2992,7 @@ void SchXMLExportHelper_Impl::exportSeries(
exportRegressionCurve( aSeriesSeq[nSeriesIdx], xPropSet, rPageSize, bExportContent );
}
- if( nErrorBarStyle != chart::ErrorBarStyle::NONE &&
- eErrorType != chart::ChartErrorIndicatorType_NONE &&
- xPropSet.is() &&
- mxExpPropMapper.is() )
- {
- Reference< beans::XPropertySet > xStatProp;
- try
- {
- Any aPropAny( xPropSet->getPropertyValue(
- OUString( RTL_CONSTASCII_USTRINGPARAM( "DataErrorProperties" ))));
- aPropAny >>= xStatProp;
- }
- catch( const uno::Exception & rEx )
- {
- (void)rEx; // avoid warning for pro build
- OSL_TRACE( "Exception caught during Export of series - optional DataErrorProperties not available: %s",
- OUStringToOString( rEx.Message, RTL_TEXTENCODING_ASCII_US ).getStr() );
- }
-
- if( xStatProp.is() )
- {
- if( bExportContent &&
- nErrorBarStyle == chart::ErrorBarStyle::FROM_DATA )
- {
- // register data ranges for error bars for export in local table
- ::std::vector< Reference< chart2::data::XDataSequence > > aErrorBarSequences(
- lcl_getErrorBarSequences( xStatProp ));
- for( ::std::vector< Reference< chart2::data::XDataSequence > >::const_iterator aIt(
- aErrorBarSequences.begin()); aIt != aErrorBarSequences.end(); ++aIt )
- {
- m_aDataSequencesToExport.push_back( tLabelValuesDataPair( 0, *aIt ));
- }
- }
-
- aPropertyStates = mxExpPropMapper->Filter( xStatProp );
-
- if( !aPropertyStates.empty() )
- {
- // write element
- if( bExportContent )
- {
- // add style name attribute
- AddAutoStyleAttribute( aPropertyStates );
-
- const SvtSaveOptions::ODFDefaultVersion nCurrentVersion( SvtSaveOptions().GetODFDefaultVersion() );
- if( nCurrentVersion >= SvtSaveOptions::ODFVER_012 )
- mrExport.AddAttribute( XML_NAMESPACE_CHART, XML_DIMENSION, XML_Y );//#i114149#
- SvXMLElementExport( mrExport, XML_NAMESPACE_CHART, XML_ERROR_INDICATOR, sal_True, sal_True );
- }
- else // autostyles
- {
- CollectAutoStyle( aPropertyStates );
- }
- }
- }
- }
+ exportErrorBar( xPropSet,bExportContent );
exportDataPoints(
uno::Reference< beans::XPropertySet >( aSeriesSeq[nSeriesIdx], uno::UNO_QUERY ),
@@ -3176,6 +3115,91 @@ void SchXMLExportHelper_Impl::exportRegressionCurve(
}
}
+void SchXMLExportHelper_Impl::exportErrorBar( const Reference<beans::XPropertySet> &xSeriesProp,
+ sal_Bool bExportContent )
+{
+ assert(mxExpPropMapper.is());
+
+ if (xSeriesProp.is())
+ {
+ Any aAny;
+ std::vector< XMLPropertyState > aPropertyStates;
+ sal_Int32 nErrorBarStyle = chart::ErrorBarStyle::NONE;
+ chart::ChartErrorIndicatorType eErrorType = chart::ChartErrorIndicatorType_NONE;
+
+ try
+ {
+ aAny = xSeriesProp->getPropertyValue("ErrorIndicator" );
+ aAny >>= eErrorType;
+
+ aAny = xSeriesProp->getPropertyValue("ErrorBarStyle" );
+ aAny >>= nErrorBarStyle;
+ }
+ catch( const beans::UnknownPropertyException & rEx )
+ {
+ (void)rEx; // avoid warning for pro build
+ OSL_TRACE(
+ OUStringToOString(OUString("Required property not found in DataRowProperties: " ) +
+ rEx.Message,
+ RTL_TEXTENCODING_ASCII_US ).getStr());
+ }
+
+ if( nErrorBarStyle != chart::ErrorBarStyle::NONE &&
+ eErrorType != chart::ChartErrorIndicatorType_NONE)
+ {
+ Reference< beans::XPropertySet > xErrorBarProp;
+ try
+ {
+ aAny = xSeriesProp->getPropertyValue("DataErrorProperties" );
+ aAny >>= xErrorBarProp;
+ }
+ catch( const uno::Exception & rEx )
+ {
+ (void)rEx; // avoid warning for pro build
+ OSL_TRACE( "Exception caught during Export of series - optional DataErrorProperties not available: %s",
+ OUStringToOString( rEx.Message, RTL_TEXTENCODING_ASCII_US ).getStr() );
+ }
+
+ if( xErrorBarProp.is() )
+ {
+ if( bExportContent &&
+ nErrorBarStyle == chart::ErrorBarStyle::FROM_DATA )
+ {
+ // register data ranges for error bars for export in local table
+ ::std::vector< Reference< chart2::data::XDataSequence > > aErrorBarSequences(
+ lcl_getErrorBarSequences( xErrorBarProp ));
+ for( ::std::vector< Reference< chart2::data::XDataSequence > >::const_iterator aIt(
+ aErrorBarSequences.begin()); aIt != aErrorBarSequences.end(); ++aIt )
+ {
+ m_aDataSequencesToExport.push_back( tLabelValuesDataPair( 0, *aIt ));
+ }
+ }
+
+ aPropertyStates = mxExpPropMapper->Filter( xErrorBarProp );
+
+ if( !aPropertyStates.empty() )
+ {
+ // write element
+ if( bExportContent )
+ {
+ // add style name attribute
+ AddAutoStyleAttribute( aPropertyStates );
+
+ const SvtSaveOptions::ODFDefaultVersion nCurrentVersion( SvtSaveOptions().GetODFDefaultVersion() );
+ if( nCurrentVersion >= SvtSaveOptions::ODFVER_012 )
+ mrExport.AddAttribute( XML_NAMESPACE_CHART, XML_DIMENSION, XML_Y );//#i114149#
+ SvXMLElementExport( mrExport, XML_NAMESPACE_CHART, XML_ERROR_INDICATOR, sal_True, sal_True );
+ }
+ else // autostyles
+ {
+ CollectAutoStyle( aPropertyStates );
+ }
+ }
+ }
+ }
+ }
+}
+
void SchXMLExportHelper_Impl::exportCandleStickSeries(
const Sequence< Reference< chart2::XDataSeries > > & aSeriesSeq,
const Reference< chart2::XDiagram > & xDiagram,
commit 67c45c9dbde0eb164df28d6f8cae935869de85d4
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Mon Apr 2 19:04:01 2012 -0430
Calculate correct standard deviation for XErrorBar.
- Add method to calculate X standard deviation.
- Set correct XErrorBar position when using standard deviation error
type.
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index 1c84ca0..c693a0b 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -823,7 +823,12 @@ void VSeriesPlotter::createErrorBar(
drawing::Position3D aUnscaledLogicPosition(rUnscaledLogicPosition);
if(nErrorBarStyle==::com::sun::star::chart::ErrorBarStyle::STANDARD_DEVIATION)
- aUnscaledLogicPosition.PositionY = rVDataSeries.getYMeanValue();
+ {
+ if (bYError)
+ aUnscaledLogicPosition.PositionY = rVDataSeries.getYMeanValue();
+ else
+ aUnscaledLogicPosition.PositionX = rVDataSeries.getXMeanValue();
+ }
bool bCreateNegativeBorder = false;//make a vertical line at the negative end of the error bar
bool bCreatePositiveBorder = false;//make a vertical line at the positive end of the error bar
diff --git a/chart2/source/view/inc/VDataSeries.hxx b/chart2/source/view/inc/VDataSeries.hxx
index 64679cd..cb10cef 100644
--- a/chart2/source/view/inc/VDataSeries.hxx
+++ b/chart2/source/view/inc/VDataSeries.hxx
@@ -102,6 +102,7 @@ public:
::com::sun::star::uno::Sequence< double > getAllX() const;
::com::sun::star::uno::Sequence< double > getAllY() const;
+ double getXMeanValue() const;
double getYMeanValue() const;
bool hasExplicitNumberFormat( sal_Int32 nPointIndex, bool bForPercentage ) const;
@@ -216,6 +217,7 @@ private: //member
VDataSequence* m_pValueSequenceForDataLabelNumberFormatDetection;
+ mutable double m_fXMeanValue;
mutable double m_fYMeanValue;
::com::sun::star::uno::Sequence< sal_Int32 > m_aAttributedDataPointIndexList;
diff --git a/chart2/source/view/main/VDataSeries.cxx b/chart2/source/view/main/VDataSeries.cxx
index 5cad9ca..25420ad 100644
--- a/chart2/source/view/main/VDataSeries.cxx
+++ b/chart2/source/view/main/VDataSeries.cxx
@@ -176,6 +176,7 @@ VDataSeries::VDataSeries( const uno::Reference< XDataSeries >& xDataSeries )
, m_aValues_Bubble_Size()
, m_pValueSequenceForDataLabelNumberFormatDetection(&m_aValues_Y)
+ , m_fXMeanValue(1.0)
, m_fYMeanValue(1.0)
, m_aAttributedDataPointIndexList()
@@ -207,6 +208,7 @@ VDataSeries::VDataSeries( const uno::Reference< XDataSeries >& xDataSeries )
, m_nMissingValueTreatment(::com::sun::star::chart::MissingValueTreatment::LEAVE_GAP)
, m_bAllowPercentValueInDataLabel(false)
{
+ ::rtl::math::setNan( & m_fXMeanValue );
::rtl::math::setNan( & m_fYMeanValue );
uno::Reference<data::XDataSource> xDataSource =
@@ -729,6 +731,19 @@ uno::Sequence< double > VDataSeries::getAllY() const
return m_aValues_Y.Doubles;
}
+double VDataSeries::getXMeanValue() const
+{
+ if( ::rtl::math::isNan( m_fXMeanValue ) )
+ {
+ uno::Reference< XRegressionCurveCalculator > xCalculator( RegressionCurveHelper::createRegressionCurveCalculatorByServiceName( "com.sun.star.chart2.MeanValueRegressionCurve" ) );
+ uno::Sequence< double > aXValuesDummy;
+ xCalculator->recalculateRegression( aXValuesDummy, getAllX() );
+ double fXDummy = 1.0;
+ m_fXMeanValue = xCalculator->getCurveValue( fXDummy );
+ }
+ return m_fXMeanValue;
+}
+
double VDataSeries::getYMeanValue() const
{
if( ::rtl::math::isNan( m_fYMeanValue ) )
commit 0e3bd5c0c4e18d9daa6bc827996e860ede1f438b
Author: Rafael Dominguez <venccsralph at gmail.com>
Date: Mon Apr 2 18:21:51 2012 -0430
Display correct errorbars columns in chart data browser.
diff --git a/chart2/source/controller/dialogs/DataBrowserModel.cxx b/chart2/source/controller/dialogs/DataBrowserModel.cxx
index 1ec9acf..b9ae25b 100644
--- a/chart2/source/controller/dialogs/DataBrowserModel.cxx
+++ b/chart2/source/controller/dialogs/DataBrowserModel.cxx
@@ -918,7 +918,10 @@ void DataBrowserModel::updateFromModel()
// add ranges for error bars if present for a series
if( StatisticsHelper::usesErrorBarRanges( aSeries[nSeriesIdx], /* bYError = */ true ))
- addErrorBarRanges( aSeries[nSeriesIdx], nYAxisNumberFormatKey, nSeqIdx, nHeaderEnd );
+ addErrorBarRanges( aSeries[nSeriesIdx], nYAxisNumberFormatKey, nSeqIdx, nHeaderEnd, true );
+
+ if( StatisticsHelper::usesErrorBarRanges( aSeries[nSeriesIdx], /* bYError = */ false ))
+ addErrorBarRanges( aSeries[nSeriesIdx], nYAxisNumberFormatKey, nSeqIdx, nHeaderEnd, false );
m_aHeaders.push_back(
tDataHeader(
@@ -942,59 +945,31 @@ void DataBrowserModel::addErrorBarRanges(
const Reference< chart2::XDataSeries > & xDataSeries,
sal_Int32 nNumberFormatKey,
sal_Int32 & rInOutSequenceIndex,
- sal_Int32 & rInOutHeaderEnd )
+ sal_Int32 & rInOutHeaderEnd, bool bYError )
{
try
{
::std::vector< Reference< chart2::data::XLabeledDataSequence > > aSequences;
- // x error bars
- // ------------
Reference< chart2::data::XDataSource > xErrorSource(
- StatisticsHelper::getErrorBars( xDataSeries, /* bYError = */ false ), uno::UNO_QUERY );
+ StatisticsHelper::getErrorBars( xDataSeries, bYError ), uno::UNO_QUERY );
- // positive x error bars
Reference< chart2::data::XLabeledDataSequence > xErrorLSequence(
StatisticsHelper::getErrorLabeledDataSequenceFromDataSource(
xErrorSource,
/* bPositiveValue = */ true,
- /* bYError = */ false ));
+ bYError ));
if( xErrorLSequence.is())
aSequences.push_back( xErrorLSequence );
- // negative x error bars
xErrorLSequence.set(
StatisticsHelper::getErrorLabeledDataSequenceFromDataSource(
xErrorSource,
/* bPositiveValue = */ false,
- /* bYError = */ false ));
- if( xErrorLSequence.is())
- aSequences.push_back( xErrorLSequence );
-
- // y error bars
- // ------------
- xErrorSource.set(
- StatisticsHelper::getErrorBars( xDataSeries, /* bYError = */ true ), uno::UNO_QUERY );
-
- // positive y error bars
- xErrorLSequence.set(
- StatisticsHelper::getErrorLabeledDataSequenceFromDataSource(
- xErrorSource,
- /* bPositiveValue = */ true,
- /* bYError = */ true ));
+ bYError ));
if( xErrorLSequence.is())
aSequences.push_back( xErrorLSequence );
- // negative y error bars
- xErrorLSequence.set(
- StatisticsHelper::getErrorLabeledDataSequenceFromDataSource(
- xErrorSource,
- /* bPositiveValue = */ false,
- /* bYError = */ true ));
- if( xErrorLSequence.is())
- aSequences.push_back( xErrorLSequence );
-
-
for( ::std::vector< Reference< chart2::data::XLabeledDataSequence > >::const_iterator aIt( aSequences.begin());
aIt != aSequences.end(); ++aIt )
{
diff --git a/chart2/source/controller/dialogs/DataBrowserModel.hxx b/chart2/source/controller/dialogs/DataBrowserModel.hxx
index ee48fa0..7d6e99a 100644
--- a/chart2/source/controller/dialogs/DataBrowserModel.hxx
+++ b/chart2/source/controller/dialogs/DataBrowserModel.hxx
@@ -159,7 +159,7 @@ private:
::com::sun::star::chart2::XDataSeries > & xDataSeries,
sal_Int32 nNumberFormatKey,
sal_Int32 & rInOutSequenceIndex,
- sal_Int32 & rInOutHeaderEnd );
+ sal_Int32 & rInOutHeaderEnd, bool bYError );
sal_Int32 getCategoryColumnCount();
commit 883d20c5eb68893c73ab2fd5d3bfee528d0a02d1
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Wed Apr 11 09:28:54 2012 +0200
move ScProgress outside of ScTable::Fill
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 99bbc54..42b2949 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1148,10 +1148,10 @@ public:
void UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY );
void Fill( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
- const ScMarkData& rMark,
+ ScProgress* pProgress, const ScMarkData& rMark,
sal_uLong nFillCount, FillDir eFillDir = FILL_TO_BOTTOM,
FillCmd eFillCmd = FILL_LINEAR, FillDateCmd eFillDateCmd = FILL_DAY,
- double nStepValue = 1.0, double nMaxValue = 1E307);
+ double nStepValue = 1.0, double nMaxValue = 1E307 );
rtl::OUString GetAutoFillPreview( const ScRange& rSource, SCCOL nEndX, SCROW nEndY );
bool GetSelectionFunction( ScSubTotalFunc eFunc,
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 0c440f9..2261718 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -477,7 +477,7 @@ public:
const ScRangeData::IndexMap& rMap );
void Fill( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
sal_uLong nFillCount, FillDir eFillDir, FillCmd eFillCmd, FillDateCmd eFillDateCmd,
- double nStepValue, double nMaxValue);
+ double nStepValue, double nMaxValue, ScProgress* pProgress);
String GetAutoFillPreview( const ScRange& rSource, SCCOL nEndX, SCROW nEndY );
void UpdateSelectionFunction( ScFunctionData& rData,
@@ -792,13 +792,13 @@ private:
sal_uLong nFillCount, FillDir eFillDir, FillCmd eFillCmd,
FillDateCmd eFillDateCmd,
double nStepValue, double nMaxValue, sal_uInt16 nMinDigits,
- bool bAttribs, ScProgress& rProgress );
+ bool bAttribs, ScProgress* pProgress );
void FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
FillCmd& rCmd, FillDateCmd& rDateCmd,
double& rInc, sal_uInt16& rMinDigits,
ScUserListData*& rListData, sal_uInt16& rListIndex);
void FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
- sal_uLong nFillCount, FillDir eFillDir, ScProgress& rProgress );
+ sal_uLong nFillCount, FillDir eFillDir, ScProgress* pProgress );
bool ValidNextPos( SCCOL nCol, SCROW nRow, const ScMarkData& rMark,
bool bMarked, bool bUnprotected );
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index e0d57a6..f016df5 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -1100,7 +1100,7 @@ void ScDocument::UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY )
maTabs[i]->UpdateGrow( rArea, nGrowX, nGrowY );
}
-void ScDocument::Fill(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, const ScMarkData& rMark,
+void ScDocument::Fill(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, ScProgress* pProgress, const ScMarkData& rMark,
sal_uLong nFillCount, FillDir eFillDir, FillCmd eFillCmd, FillDateCmd eFillDateCmd,
double nStepValue, double nMaxValue)
{
@@ -1112,7 +1112,7 @@ void ScDocument::Fill(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, const
if (maTabs[*itr])
maTabs[*itr]->Fill(nCol1, nRow1, nCol2, nRow2,
nFillCount, eFillDir, eFillCmd, eFillDateCmd,
- nStepValue, nMaxValue);
+ nStepValue, nMaxValue, pProgress);
}
rtl::OUString ScDocument::GetAutoFillPreview( const ScRange& rSource, SCCOL nEndX, SCROW nEndY )
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index 44eb226..e3d57be 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -467,7 +467,7 @@ void ScTable::FillFormula(sal_uLong& /* nFormulaCounter */, bool /* bFirst */, S
}
void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
- sal_uLong nFillCount, FillDir eFillDir, ScProgress& rProgress )
+ sal_uLong nFillCount, FillDir eFillDir, ScProgress* pProgress )
{
if ( (nFillCount == 0) || !ValidColRow(nCol1, nRow1) || !ValidColRow(nCol2, nRow2) )
return;
@@ -541,7 +541,9 @@ void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
DeleteArea(static_cast<SCCOL>(nIMin), nRow1, static_cast<SCCOL>(nIMax), nRow2, IDF_AUTOFILL);
}
- sal_uLong nProgress = rProgress.GetState();
+ sal_uLong nProgress = 0;
+ if (pProgress)
+ nProgress = pProgress->GetState();
//
// ausfuehren
@@ -701,8 +703,11 @@ void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
if (rInner == nIEnd) break;
if (bPositive) ++rInner; else --rInner;
}
- nProgress += nIMax - nIMin + 1;
- rProgress.SetStateOnPercent( nProgress );
+ if(pProgress)
+ {
+ nProgress += nIMax - nIMin + 1;
+ pProgress->SetStateOnPercent( nProgress );
+ }
}
else if (eFillCmd == FILL_SIMPLE) // Auffuellen mit Muster
{
@@ -871,11 +876,12 @@ void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
// und auch dann nicht fuer jede einzelne
++nProgress;
- if ( eCellType == CELLTYPE_FORMULA || eCellType == CELLTYPE_EDIT )
- rProgress.SetStateOnPercent( nProgress );
+ if ( pProgress && (eCellType == CELLTYPE_FORMULA || eCellType == CELLTYPE_EDIT) )
+ pProgress->SetStateOnPercent( nProgress );
}
- rProgress.SetStateOnPercent( nProgress );
+ if (pProgress)
+ pProgress->SetStateOnPercent( nProgress );
}
else
{
@@ -886,13 +892,14 @@ void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
FillSeries( static_cast<SCCOL>(nCol), nRow1,
static_cast<SCCOL>(nCol), nRow2, nFillCount, eFillDir,
eFillCmd, eDateCmd, nInc, nEndVal, nMinDigits, false,
- rProgress );
+ pProgress );
else
FillSeries( nCol1, static_cast<SCROW>(nRow), nCol2,
static_cast<SCROW>(nRow), nFillCount, eFillDir,
eFillCmd, eDateCmd, nInc, nEndVal, nMinDigits, false,
- rProgress );
- nProgress = rProgress.GetState();
+ pProgress );
+ if (pProgress)
+ nProgress = pProgress->GetState();
}
nActFormCnt += nMaxFormCnt;
@@ -1246,7 +1253,7 @@ void ScTable::IncDate(double& rVal, sal_uInt16& nDayOfMonth, double nStep, FillD
void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
sal_uLong nFillCount, FillDir eFillDir, FillCmd eFillCmd, FillDateCmd eFillDateCmd,
double nStepValue, double nMaxValue, sal_uInt16 nArgMinDigits,
- bool bAttribs, ScProgress& rProgress )
+ bool bAttribs, ScProgress* pProgress )
{
//
// Richtung auswerten
@@ -1315,7 +1322,9 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
else
DeleteArea(static_cast<SCCOL>(nIMin), nRow1, static_cast<SCCOL>(nIMax), nRow2, nDel);
- sal_uLong nProgress = rProgress.GetState();
+ sal_uLong nProgress = 0;
+ if (pProgress)
+ nProgress = pProgress->GetState();
//
// ausfuehren
@@ -1358,7 +1367,8 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
FillFormula(nInd, bFirst, (ScFormulaCell*)pSrcCell,
static_cast<SCCOL>(nCol), nRow, (rInner == nIEnd) );
bFirst = false;
- rProgress.SetStateOnPercent( ++nProgress );
+ if(pProgress)
+ pProgress->SetStateOnPercent( ++nProgress );
}
}
else if (eCellType != CELLTYPE_NOTE)
@@ -1371,7 +1381,8 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
aCol[nCol].Insert( aDestPos.Row(), pSrcCell->Clone( *pDocument ) );
}
nProgress += nIMax - nIMin + 1;
- rProgress.SetStateOnPercent( nProgress );
+ if(pProgress)
+ pProgress->SetStateOnPercent( nProgress );
}
}
else if (eCellType == CELLTYPE_VALUE || eCellType == CELLTYPE_FORMULA)
@@ -1449,7 +1460,8 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
if (bPositive) ++rInner; else --rInner;
}
nProgress += nIMax - nIMin + 1;
- rProgress.SetStateOnPercent( nProgress );
+ if(pProgress)
+ pProgress->SetStateOnPercent( nProgress );
}
else if (eCellType == CELLTYPE_STRING || eCellType == CELLTYPE_EDIT)
{
@@ -1554,14 +1566,17 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
if (bPositive) ++rInner; else --rInner;
}
}
- nProgress += nIMax - nIMin + 1;
- rProgress.SetStateOnPercent( nProgress );
+ if(pProgress)
+ {
+ nProgress += nIMax - nIMin + 1;
+ pProgress->SetStateOnPercent( nProgress );
+ }
}
}
- else
+ else if(pProgress)
{
nProgress += nIMax - nIMin + 1;
- rProgress.SetStateOnPercent( nProgress );
+ pProgress->SetStateOnPercent( nProgress );
}
++nActFormCnt;
}
@@ -1569,22 +1584,13 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
void ScTable::Fill( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
sal_uLong nFillCount, FillDir eFillDir, FillCmd eFillCmd, FillDateCmd eFillDateCmd,
- double nStepValue, double nMaxValue)
+ double nStepValue, double nMaxValue, ScProgress* pProgress)
{
- sal_uLong nProgCount;
- if (eFillDir == FILL_TO_BOTTOM || eFillDir == FILL_TO_TOP)
- nProgCount = nCol2 - nCol1 + 1;
- else
- nProgCount = nRow2 - nRow1 + 1;
- nProgCount *= nFillCount;
- ScProgress aProgress( pDocument->GetDocumentShell(),
- ScGlobal::GetRscString(STR_FILL_SERIES_PROGRESS), nProgCount );
-
if (eFillCmd == FILL_AUTO)
- FillAuto(nCol1, nRow1, nCol2, nRow2, nFillCount, eFillDir, aProgress);
+ FillAuto(nCol1, nRow1, nCol2, nRow2, nFillCount, eFillDir, pProgress);
else
FillSeries(nCol1, nRow1, nCol2, nRow2, nFillCount, eFillDir,
- eFillCmd, eFillDateCmd, nStepValue, nMaxValue, 0, true, aProgress);
+ eFillCmd, eFillDateCmd, nStepValue, nMaxValue, 0, true, pProgress);
}
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index f935ef9..0e25ee0 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -61,6 +61,7 @@
#include "hints.hxx"
#include "queryentry.hxx"
#include "markdata.hxx"
+#include "progress.hxx"
#include <set>
@@ -886,8 +887,14 @@ sal_Bool ScDBDocFunc::Query( SCTAB nTab, const ScQueryParam& rQueryParam,
ScMarkData aMark;
aMark.SelectOneTable(nDestTab);
SCROW nFStartY = aLocalParam.nRow1 + ( aLocalParam.bHasHeader ? 1 : 0 );
+
+ sal_uLong nProgCount = nFormulaCols;
+ nProgCount *= aLocalParam.nRow2 - nFStartY;
+ ScProgress aProgress( pDoc->GetDocumentShell(),
+ ScGlobal::GetRscString(STR_FILL_SERIES_PROGRESS), nProgCount );
+
pDoc->Fill( aLocalParam.nCol2+1, nFStartY,
- aLocalParam.nCol2+nFormulaCols, nFStartY, aMark,
+ aLocalParam.nCol2+nFormulaCols, nFStartY, &aProgress, aMark,
aLocalParam.nRow2 - nFStartY,
FILL_TO_BOTTOM, FILL_SIMPLE );
}
diff --git a/sc/source/ui/docshell/dbdocimp.cxx b/sc/source/ui/docshell/dbdocimp.cxx
index 39b2b80..92f6b45 100644
--- a/sc/source/ui/docshell/dbdocimp.cxx
+++ b/sc/source/ui/docshell/dbdocimp.cxx
@@ -597,8 +597,14 @@ bool ScDBDocFunc::DoImport( SCTAB nTab, const ScImportParam& rParam,
// fill formulas
ScMarkData aMark;
aMark.SelectOneTable(nTab);
+
+ sal_uLong nProgCount = nFormulaCols;
+ nProgCount *= nEndRow-rParam.nRow1-1;
+ ScProgress aProgress( pDoc->GetDocumentShell(),
+ ScGlobal::GetRscString(STR_FILL_SERIES_PROGRESS), nProgCount );
+
pDoc->Fill( nEndCol+1, rParam.nRow1+1, nEndCol+nFormulaCols, rParam.nRow1+1,
- aMark, nEndRow-rParam.nRow1-1, FILL_TO_BOTTOM, FILL_SIMPLE );
+ &aProgress, aMark, nEndRow-rParam.nRow1-1, FILL_TO_BOTTOM, FILL_SIMPLE );
}
// if new range is smaller, clear old contents
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 973968d..379887f 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -100,6 +100,7 @@
#include "clipparam.hxx"
#include "externalrefmgr.hxx"
#include "undorangename.hxx"
+#include "progress.hxx"
#include <memory>
#include <basic/basmgr.hxx>
@@ -4078,9 +4079,18 @@ bool ScDocFunc::FillSimple( const ScRange& rRange, const ScMarkData* pTabMark,
pDoc->CopyToDocument( aCopyRange, IDF_AUTOFILL, false, pUndoDoc, &aMark );
}
+ sal_uLong nProgCount;
+ if (eDir == FILL_TO_BOTTOM || eDir == FILL_TO_TOP)
+ nProgCount = aSourceArea.aEnd.Col() - aSourceArea.aStart.Col() + 1;
+ else
+ nProgCount = aSourceArea.aEnd.Row() - aSourceArea.aStart.Row() + 1;
+ nProgCount *= nCount;
+ ScProgress aProgress( pDoc->GetDocumentShell(),
+ ScGlobal::GetRscString(STR_FILL_SERIES_PROGRESS), nProgCount );
+
pDoc->Fill( aSourceArea.aStart.Col(), aSourceArea.aStart.Row(),
- aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), aMark,
- nCount, eDir, FILL_SIMPLE );
+ aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), &aProgress,
+ aMark, nCount, eDir, FILL_SIMPLE );
AdjustRowHeight(aRange);
if ( bRecord ) // Draw-Undo erst jetzt verfuegbar
@@ -4194,9 +4204,19 @@ sal_Bool ScDocFunc::FillSeries( const ScRange& rRange, const ScMarkData* pTabMar
SCTAB nTab = aDestArea.aStart.Tab();
pDoc->SetValue( nValX, nValY, nTab, fStart );
}
+
+ sal_uLong nProgCount;
+ if (eDir == FILL_TO_BOTTOM || eDir == FILL_TO_TOP)
+ nProgCount = aSourceArea.aEnd.Col() - aSourceArea.aStart.Col() + 1;
+ else
+ nProgCount = aSourceArea.aEnd.Row() - aSourceArea.aStart.Row() + 1;
+ nProgCount *= nCount;
+ ScProgress aProgress( pDoc->GetDocumentShell(),
+ ScGlobal::GetRscString(STR_FILL_SERIES_PROGRESS), nProgCount );
+
pDoc->Fill( aSourceArea.aStart.Col(), aSourceArea.aStart.Row(),
- aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), aMark,
- nCount, eDir, eCmd, eDateCmd, fStep, fMax );
+ aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), &aProgress,
+ aMark, nCount, eDir, eCmd, eDateCmd, fStep, fMax );
AdjustRowHeight(rRange);
rDocShell.PostPaintGridAll();
@@ -4325,9 +4345,18 @@ sal_Bool ScDocFunc::FillAuto( ScRange& rRange, const ScMarkData* pTabMark, FillD
IDF_AUTOFILL, false, pUndoDoc, &aMark );
}
+ sal_uLong nProgCount;
+ if (eDir == FILL_TO_BOTTOM || eDir == FILL_TO_TOP)
+ nProgCount = aSourceArea.aEnd.Col() - aSourceArea.aStart.Col() + 1;
+ else
+ nProgCount = aSourceArea.aEnd.Row() - aSourceArea.aStart.Row() + 1;
+ nProgCount *= nCount;
+ ScProgress aProgress( pDoc->GetDocumentShell(),
+ ScGlobal::GetRscString(STR_FILL_SERIES_PROGRESS), nProgCount );
+
pDoc->Fill( aSourceArea.aStart.Col(), aSourceArea.aStart.Row(),
- aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), aMark,
- nCount, eDir, eCmd, eDateCmd, fStep, fMax );
+ aSourceArea.aEnd.Col(), aSourceArea.aEnd.Row(), &aProgress,
+ aMark, nCount, eDir, eCmd, eDateCmd, fStep, fMax );
AdjustRowHeight(aDestArea);
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx
index 3286614..78ea86b 100644
--- a/sc/source/ui/undo/undoblk3.cxx
+++ b/sc/source/ui/undo/undoblk3.cxx
@@ -60,6 +60,7 @@
#include "paramisc.hxx"
#include "postit.hxx"
#include "docuno.hxx"
+#include "progress.hxx"
// STATIC DATA ---------------------------------------------------------------
@@ -714,11 +715,20 @@ void ScUndoAutoFill::Redo()
SCTAB nTab = aSource.aStart.Tab();
pDoc->SetValue( nValX, nValY, nTab, fStartValue );
}
+ sal_uLong nProgCount;
+ if (eFillDir == FILL_TO_BOTTOM || eFillDir == FILL_TO_TOP)
+ nProgCount = aSource.aEnd.Col() - aSource.aStart.Col() + 1;
+ else
+ nProgCount = aSource.aEnd.Row() - aSource.aStart.Row() + 1;
+ nProgCount *= nCount;
+ ScProgress aProgress( pDoc->GetDocumentShell(),
+ ScGlobal::GetRscString(STR_FILL_SERIES_PROGRESS), nProgCount );
+
pDoc->Fill( aSource.aStart.Col(), aSource.aStart.Row(),
- aSource.aEnd.Col(), aSource.aEnd.Row(),
- aMarkData, nCount,
- eFillDir, eFillCmd, eFillDateCmd,
- fStepValue, fMaxValue );
+ aSource.aEnd.Col(), aSource.aEnd.Row(), &aProgress,
+ aMarkData, nCount,
+ eFillDir, eFillCmd, eFillDateCmd,
+ fStepValue, fMaxValue );
SetChangeTrack();
More information about the Libreoffice-commits
mailing list