summaryrefslogtreecommitdiff
path: root/chart2/source
diff options
context:
space:
mode:
authoriha <iha@openoffice.org>2011-03-03 11:37:57 +0100
committeriha <iha@openoffice.org>2011-03-03 11:37:57 +0100
commit516890c9ae37e28cf4b6df41a9c95c6c252a245b (patch)
tree0cf12d888b59d49f93b8675bd0b8497a4c70f780 /chart2/source
parentae94862cfcb00ad0dd0afb6b12d6e4b459ca6f12 (diff)
chart55: #117183# bad autoscaling for date axis
Diffstat (limited to 'chart2/source')
-rw-r--r--chart2/source/view/axes/ScaleAutomatism.cxx28
1 files changed, 24 insertions, 4 deletions
diff --git a/chart2/source/view/axes/ScaleAutomatism.cxx b/chart2/source/view/axes/ScaleAutomatism.cxx
index d4fa3c193..9db33ce0b 100644
--- a/chart2/source/view/axes/ScaleAutomatism.cxx
+++ b/chart2/source/view/axes/ScaleAutomatism.cxx
@@ -49,9 +49,16 @@ using ::com::sun::star::chart::TimeUnit::MONTH;
using ::com::sun::star::chart::TimeUnit::YEAR;
const sal_Int32 MAXIMUM_MANUAL_INCREMENT_COUNT = 500;
-const sal_Int32 MAXIMUM_AUTO_INCREMENT_COUNT = 10;
const sal_Int32 MAXIMUM_SUB_INCREMENT_COUNT = 100;
+sal_Int32 lcl_getMaximumAutoIncrementCount( sal_Int32 nAxisType )
+{
+ sal_Int32 nMaximumAutoIncrementCount = 10;
+ if( nAxisType==AxisType::DATE )
+ nMaximumAutoIncrementCount = MAXIMUM_MANUAL_INCREMENT_COUNT;
+ return nMaximumAutoIncrementCount;
+}
+
namespace
{
@@ -102,7 +109,7 @@ ScaleAutomatism::ScaleAutomatism( const ScaleData& rSourceScale, const Date& rNu
: m_aSourceScale( rSourceScale )
, m_fValueMinimum( 0.0 )
, m_fValueMaximum( 0.0 )
- , m_nMaximumAutoMainIncrementCount( MAXIMUM_AUTO_INCREMENT_COUNT )
+ , m_nMaximumAutoMainIncrementCount( lcl_getMaximumAutoIncrementCount( m_aSourceScale.AxisType ) )
, m_bExpandBorderToIncrementRhythm( false )
, m_bExpandIfValuesCloseToBorder( false )
, m_bExpandWideValuesToZero( false )
@@ -149,8 +156,8 @@ void ScaleAutomatism::setMaximumAutoMainIncrementCount( sal_Int32 nMaximumAutoMa
{
if( nMaximumAutoMainIncrementCount < 2 )
m_nMaximumAutoMainIncrementCount = 2; //#i82006
- else if( nMaximumAutoMainIncrementCount > MAXIMUM_AUTO_INCREMENT_COUNT )
- m_nMaximumAutoMainIncrementCount = MAXIMUM_AUTO_INCREMENT_COUNT;
+ else if( nMaximumAutoMainIncrementCount > lcl_getMaximumAutoIncrementCount( m_aSourceScale.AxisType ) )
+ m_nMaximumAutoMainIncrementCount = lcl_getMaximumAutoIncrementCount( m_aSourceScale.AxisType );
else
m_nMaximumAutoMainIncrementCount = nMaximumAutoMainIncrementCount;
}
@@ -692,6 +699,19 @@ void ScaleAutomatism::calculateExplicitIncrementAndScaleForDateTimeAxis(
nNumer = static_cast<sal_Int32>( rtl::math::approxCeil( nIntervalDays/nDaysPerInterval ) );
if(nNumer<=0)
nNumer=1;
+ if( rExplicitIncrement.MajorTimeInterval.TimeUnit == DAY )
+ {
+ if( nNumer>2 && nNumer<7 )
+ nNumer=7;
+ else if( nNumer>7 )
+ {
+ rExplicitIncrement.MajorTimeInterval.TimeUnit = MONTH;
+ nDaysPerInterval = 31.0;
+ nNumer = static_cast<sal_Int32>( rtl::math::approxCeil( nIntervalDays/nDaysPerInterval ) );
+ if(nNumer<=0)
+ nNumer=1;
+ }
+ }
rExplicitIncrement.MajorTimeInterval.Number = nNumer;
nMainIncrementCount = nDayCount/(nNumer*nDaysPerInterval);
}