tdf#165742 Step 5.4: Add 'unsupported chart type' message
Add clearer handling for chartex types whose rendering is not currently supported. Previously, unsupported types defaulted to being rendered as line charts, which could lead to confusion. With this commit, we instead display a message stating that the chart type is not supported, and do not attempt to render it. Note that at this time, the message is hard-coded only in English language text. In the short term it should be internationalised, though in the longer term, the intent is that all chart types will be properly rendered. Change-Id: I66eecb3368abaf228d80c21ab664a1eb2b45ae32 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197128 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
This commit is contained in:
committed by
Tomaž Vajngerl
parent
34d3c984c2
commit
ef9c1d57ad
@@ -254,6 +254,7 @@ $(eval $(call gb_Library_add_exception_objects,chart2,\
|
||||
chart2/source/view/charttypes/CategoryPositionHelper \
|
||||
chart2/source/view/charttypes/NetChart \
|
||||
chart2/source/view/charttypes/PieChart \
|
||||
chart2/source/view/charttypes/UnsupportedChart \
|
||||
chart2/source/view/charttypes/Splines \
|
||||
chart2/source/view/charttypes/VSeriesPlotter \
|
||||
chart2/source/view/diagram/VDiagram \
|
||||
|
||||
@@ -175,6 +175,7 @@
|
||||
#define STR_MIN_GREATER_MAX NC_("STR_MIN_GREATER_MAX", "The minimum must be lower than the maximum. Check your input.")
|
||||
#define STR_INVALID_INTERVALS NC_("STR_INVALID_INTERVALS", "The major interval needs to be greater than the minor interval. Check your input.")
|
||||
#define STR_INVALID_TIME_UNIT NC_("STR_INVALID_TIME_UNIT", "The major and minor interval need to be greater or equal to the resolution. Check your input.")
|
||||
#define STR_UNSUPPORTED_CHART_TYPE NC_("STR_UNSUPPORTED_CHART_TYPE", "One or more chart types are unsupported in this version of LibreOffice")
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
#include <ResId.hxx>
|
||||
#include <strings.hrc>
|
||||
|
||||
#include "UnsupportedChart.hxx"
|
||||
#include <PlottingPositionHelper.hxx>
|
||||
#include <ShapeFactory.hxx>
|
||||
#include <ObjectIdentifier.hxx>
|
||||
#include <LabelPositionHelper.hxx>
|
||||
#include <ChartType.hxx>
|
||||
#include <PropertyMapper.hxx>
|
||||
#include <CommonConverters.hxx>
|
||||
|
||||
#include <com/sun/star/drawing/FillStyle.hpp>
|
||||
#include <com/sun/star/drawing/LineStyle.hpp>
|
||||
#include <com/sun/star/style/ParagraphAdjust.hpp>
|
||||
#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
|
||||
#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
|
||||
|
||||
#include <com/sun/star/chart/DataLabelPlacement.hpp>
|
||||
#include <sal/log.hxx>
|
||||
#include <osl/diagnose.h>
|
||||
#include <basegfx/point/b2dpoint.hxx>
|
||||
#include <basegfx/matrix/b3dhommatrix.hxx>
|
||||
|
||||
#include <com/sun/star/beans/XPropertySet.hpp>
|
||||
#include <com/sun/star/uno/Sequence.hxx>
|
||||
#include <com/sun/star/chart2/XFormattedString.hpp>
|
||||
#include <com/sun/star/chart2/FormattedString.hpp>
|
||||
|
||||
#include <limits>
|
||||
|
||||
namespace chart
|
||||
{
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::chart2;
|
||||
using ::com::sun::star::uno::Reference;
|
||||
|
||||
UnsupportedChart::UnsupportedChart(const rtl::Reference<ChartType>& xChartTypeModel)
|
||||
: VSeriesPlotter(xChartTypeModel, 2, false)
|
||||
{
|
||||
if (!m_pMainPosHelper)
|
||||
m_pMainPosHelper = new PlottingPositionHelper();
|
||||
PlotterBase::m_pPosHelper = m_pMainPosHelper;
|
||||
}
|
||||
|
||||
UnsupportedChart::~UnsupportedChart() { delete m_pMainPosHelper; }
|
||||
|
||||
bool UnsupportedChart::isExpandIfValuesCloseToBorder(sal_Int32 /*nDimensionIndex*/) { return true; }
|
||||
|
||||
bool UnsupportedChart::isSeparateStackingForDifferentSigns(sal_Int32 /*nDimensionIndex*/)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LegendSymbolStyle UnsupportedChart::getLegendSymbolStyle() { return LegendSymbolStyle::Circle; }
|
||||
|
||||
drawing::Direction3D UnsupportedChart::getPreferredDiagramAspectRatio() const
|
||||
{
|
||||
return drawing::Direction3D(-1, -1, -1);
|
||||
}
|
||||
|
||||
void UnsupportedChart::createShapes()
|
||||
{
|
||||
rtl::Reference<SvxShapeGroup> xSeriesTarget = ShapeFactory::createGroup2D(m_xFinalTarget);
|
||||
|
||||
tNameSequence aPropNames;
|
||||
tAnySequence aPropValues;
|
||||
|
||||
tPropertyNameValueMap aTextValueMap;
|
||||
aTextValueMap[u"CharHeight"_ustr] <<= 10.0f;
|
||||
aTextValueMap[u"CharHeightAsian"_ustr] <<= 10.0f;
|
||||
aTextValueMap[u"CharHeightComplex"_ustr] <<= 10.0f;
|
||||
aTextValueMap[u"FillColor"_ustr] <<= sal_Int32(0xFFFFFF);
|
||||
aTextValueMap[u"FillStyle"_ustr] <<= drawing::FillStyle_SOLID;
|
||||
aTextValueMap[u"LineColor"_ustr] <<= sal_Int32(0xFFFFFF);
|
||||
aTextValueMap[u"LineStyle"_ustr] <<= drawing::LineStyle_SOLID;
|
||||
aTextValueMap[u"ParaAdjust"_ustr] <<= style::ParagraphAdjust_CENTER;
|
||||
aTextValueMap[u"TextHorizontalAdjust"_ustr] <<= drawing::TextHorizontalAdjust_CENTER;
|
||||
aTextValueMap[u"TextVerticalAdjust"_ustr] <<= drawing::TextVerticalAdjust_CENTER;
|
||||
aTextValueMap[u"ParaLeftMargin"_ustr] <<= sal_Int32(0);
|
||||
aTextValueMap[u"ParaRightMargin"_ustr] <<= sal_Int32(0);
|
||||
aTextValueMap[u"TextMaximumFrameWidth"_ustr] <<= sal_Int32(2 * m_aPageReferenceSize.Width / 3);
|
||||
aTextValueMap[u"TextAutoGrowHeight"_ustr] <<= true;
|
||||
aTextValueMap[u"TextAutoGrowWidth"_ustr] <<= true;
|
||||
|
||||
PropertyMapper::getMultiPropertyListsFromValueMap(aPropNames, aPropValues, aTextValueMap);
|
||||
|
||||
::basegfx::B2DHomMatrix aM;
|
||||
aM.translate(m_aPageReferenceSize.Width / 2, m_aPageReferenceSize.Height / 2);
|
||||
|
||||
rtl::Reference<SvxShapeText> xTextShape
|
||||
= ShapeFactory::createText(xSeriesTarget, SchResId(STR_UNSUPPORTED_CHART_TYPE), aPropNames,
|
||||
aPropValues, uno::Any(B2DHomMatrixToHomogenMatrix3(aM)));
|
||||
}
|
||||
|
||||
} //namespace chart
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
@@ -0,0 +1,47 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <VSeriesPlotter.hxx>
|
||||
#include <com/sun/star/drawing/Direction3D.hpp>
|
||||
|
||||
namespace chart
|
||||
{
|
||||
class UnsupportedChart : public VSeriesPlotter
|
||||
{
|
||||
// public methods
|
||||
public:
|
||||
UnsupportedChart() = delete;
|
||||
|
||||
UnsupportedChart(const rtl::Reference<::chart::ChartType>& xChartTypeModel);
|
||||
virtual ~UnsupportedChart() override;
|
||||
|
||||
virtual void createShapes() override;
|
||||
|
||||
virtual css::drawing::Direction3D getPreferredDiagramAspectRatio() const override;
|
||||
|
||||
// MinimumAndMaximumSupplier
|
||||
virtual bool isExpandIfValuesCloseToBorder(sal_Int32 nDimensionIndex) override;
|
||||
virtual bool isSeparateStackingForDifferentSigns(sal_Int32 nDimensionIndex) override;
|
||||
|
||||
virtual LegendSymbolStyle getLegendSymbolStyle() override;
|
||||
};
|
||||
} //namespace chart
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
@@ -58,6 +58,7 @@
|
||||
#include "CandleStickChart.hxx"
|
||||
#include "BubbleChart.hxx"
|
||||
#include "NetChart.hxx"
|
||||
#include "UnsupportedChart.hxx"
|
||||
#include <unonames.hxx>
|
||||
#include <SpecialCharacters.hxx>
|
||||
|
||||
@@ -2896,8 +2897,10 @@ VSeriesPlotter* VSeriesPlotter::createSeriesPlotter(
|
||||
pRet = new NetChart(xChartTypeModel,nDimensionCount,false,std::make_unique<PolarPlottingPositionHelper>());
|
||||
else if( aChartType.equalsIgnoreAsciiCase(CHART2_SERVICE_NAME_CHARTTYPE_CANDLESTICK) )
|
||||
pRet = new CandleStickChart(xChartTypeModel,nDimensionCount);
|
||||
else
|
||||
else if( aChartType.equalsIgnoreAsciiCase(CHART2_SERVICE_NAME_CHARTTYPE_AREA) )
|
||||
pRet = new AreaChart(xChartTypeModel,nDimensionCount,false,true);
|
||||
else
|
||||
pRet = new UnsupportedChart(xChartTypeModel);
|
||||
return pRet;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user