39#include <unonames.hxx>
48#include <com/sun/star/beans/PropertyAttribute.hpp>
49#include <com/sun/star/chart2/AxisType.hpp>
50#include <com/sun/star/chart2/DataPointGeometry3D.hpp>
51#include <com/sun/star/chart2/StackingDirection.hpp>
52#include <com/sun/star/chart2/RelativePosition.hpp>
53#include <com/sun/star/chart2/RelativeSize.hpp>
54#include <com/sun/star/chart/MissingValueTreatment.hpp>
55#include <com/sun/star/container/NoSuchElementException.hpp>
56#include <com/sun/star/drawing/ShadeMode.hpp>
57#include <com/sun/star/uno/XComponentContext.hpp>
58#include <com/sun/star/util/CloseVetoException.hpp>
64#include <rtl/math.hxx>
71using namespace ::com::sun::star::beans::PropertyAttribute;
74using ::com::sun::star::beans::Property;
75using ::com::sun::star::uno::Sequence;
76using ::com::sun::star::uno::Reference;
77using ::com::sun::star::uno::Any;
78using ::osl::MutexGuard;
86 PROP_DIAGRAM_REL_SIZE,
87 PROP_DIAGRAM_POSSIZE_EXCLUDE_LABELS,
88 PROP_DIAGRAM_SORT_BY_X_VALUES,
89 PROP_DIAGRAM_CONNECT_BARS,
90 PROP_DIAGRAM_GROUP_BARS_PER_AXIS,
91 PROP_DIAGRAM_INCLUDE_HIDDEN_CELLS,
92 PROP_DIAGRAM_STARTING_ANGLE,
93 PROP_DIAGRAM_RIGHT_ANGLED_AXES,
94 PROP_DIAGRAM_PERSPECTIVE,
95 PROP_DIAGRAM_ROTATION_HORIZONTAL,
96 PROP_DIAGRAM_ROTATION_VERTICAL,
97 PROP_DIAGRAM_MISSING_VALUE_TREATMENT,
98 PROP_DIAGRAM_3DRELATIVEHEIGHT,
99 PROP_DIAGRAM_DATATABLEHBORDER,
100 PROP_DIAGRAM_DATATABLEVBORDER,
101 PROP_DIAGRAM_DATATABLEOUTLINE,
102 PROP_DIAGRAM_EXTERNALDATA
105void lcl_AddPropertiesToVector(
106 std::vector< Property > & rOutProperties )
108 rOutProperties.emplace_back(
"RelativePosition",
109 PROP_DIAGRAM_REL_POS,
111 beans::PropertyAttribute::BOUND
112 | beans::PropertyAttribute::MAYBEVOID );
114 rOutProperties.emplace_back(
"RelativeSize",
115 PROP_DIAGRAM_REL_SIZE,
117 beans::PropertyAttribute::BOUND
118 | beans::PropertyAttribute::MAYBEVOID );
120 rOutProperties.emplace_back(
"PosSizeExcludeAxes",
121 PROP_DIAGRAM_POSSIZE_EXCLUDE_LABELS,
123 beans::PropertyAttribute::BOUND
124 | beans::PropertyAttribute::MAYBEDEFAULT );
127 PROP_DIAGRAM_SORT_BY_X_VALUES,
129 beans::PropertyAttribute::BOUND
130 | beans::PropertyAttribute::MAYBEDEFAULT );
132 rOutProperties.emplace_back(
"ConnectBars",
133 PROP_DIAGRAM_CONNECT_BARS,
135 beans::PropertyAttribute::BOUND
136 | beans::PropertyAttribute::MAYBEDEFAULT );
138 rOutProperties.emplace_back(
"GroupBarsPerAxis",
139 PROP_DIAGRAM_GROUP_BARS_PER_AXIS,
141 beans::PropertyAttribute::BOUND
142 | beans::PropertyAttribute::MAYBEDEFAULT );
144 rOutProperties.emplace_back(
"IncludeHiddenCells",
145 PROP_DIAGRAM_INCLUDE_HIDDEN_CELLS,
147 beans::PropertyAttribute::BOUND
148 | beans::PropertyAttribute::MAYBEDEFAULT );
150 rOutProperties.emplace_back(
"StartingAngle",
151 PROP_DIAGRAM_STARTING_ANGLE,
153 beans::PropertyAttribute::BOUND
154 | beans::PropertyAttribute::MAYBEDEFAULT );
156 rOutProperties.emplace_back(
"RightAngledAxes",
157 PROP_DIAGRAM_RIGHT_ANGLED_AXES,
159 beans::PropertyAttribute::BOUND
160 | beans::PropertyAttribute::MAYBEDEFAULT );
162 rOutProperties.emplace_back(
"Perspective",
163 PROP_DIAGRAM_PERSPECTIVE,
165 beans::PropertyAttribute::MAYBEVOID );
167 rOutProperties.emplace_back(
"RotationHorizontal",
168 PROP_DIAGRAM_ROTATION_HORIZONTAL,
170 beans::PropertyAttribute::MAYBEVOID );
172 rOutProperties.emplace_back(
"RotationVertical",
173 PROP_DIAGRAM_ROTATION_VERTICAL,
175 beans::PropertyAttribute::MAYBEVOID );
177 rOutProperties.emplace_back(
"MissingValueTreatment",
178 PROP_DIAGRAM_MISSING_VALUE_TREATMENT,
180 beans::PropertyAttribute::BOUND
181 | beans::PropertyAttribute::MAYBEVOID );
182 rOutProperties.emplace_back(
"3DRelativeHeight",
183 PROP_DIAGRAM_3DRELATIVEHEIGHT,
185 beans::PropertyAttribute::MAYBEVOID );
186 rOutProperties.emplace_back(
"ExternalData",
187 PROP_DIAGRAM_EXTERNALDATA,
189 beans::PropertyAttribute::MAYBEVOID );
203 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( aMap, PROP_DIAGRAM_STARTING_ANGLE, 90 );
204 ::chart::PropertyHelper::setPropertyValueDefault< sal_Int32 >( aMap, PROP_DIAGRAM_3DRELATIVEHEIGHT, 100 );
208 return aStaticDefaults;
213 static ::cppu::OPropertyArrayHelper aPropHelper = []()
216 lcl_AddPropertiesToVector( aProperties );
228const uno::Reference< beans::XPropertySetInfo >& StaticDiagramInfo()
230 static const uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
232 return xPropertySetInfo;
235void lcl_CloneCoordinateSystems(
236 const ::chart::Diagram::tCoordinateSystemContainerType & rSource,
241 auto xClone =
i->createClone();
244 rDestination.push_back( pClone );
255 m_xModifyEventForwarder( new ModifyEventForwarder() )
261 setFastPropertyValue_NoBroadcast(
263 ThreeDHelper::getDefaultCameraGeometry()));
308 catch(
const uno::Exception & )
318 bool bAddListener =
false;
336 bool bAddListener =
false;
365 auto pLegend =
dynamic_cast<Legend*
>(xNewLegend.get());
366 assert(!xNewLegend || pLegend);
420 if( !xTemplate.is() )
421 xTemplate = xChartTypeManager->createTemplate(
"com.sun.star.chart2.template.Column" );
469 double fXAngleRad=0.0;
470 double fYAngleRad=0.0;
471 double fZAngleRad=0.0;
473 aCompleteRotation.
rotate( fXAngleRad, fYAngleRad, fZAngleRad );
474 return aCompleteRotation;
477 ,
int nLightSourceDirectionProp
478 ,
int nLightSourceOnProp
479 , const ::basegfx::B3DHomMatrix& rRotationMatrix )
481 bool bLightOn =
false;
487 drawing::Direction3D aLight;
491 aLightVector = rRotationMatrix*aLightVector;
516 bool bRightAngledAxes =
false;
518 if(!bRightAngledAxes)
543 drawing::ShadeMode aShadeMode( drawing::ShadeMode_SMOOTH );
557 catch(
const uno::Exception & )
578 throw lang::IllegalArgumentException(
"coordsys not found",
static_cast<cppu::OWeakObject*
>(
this), 1);
582 OSL_FAIL(
"more than one coordinatesystem is not supported yet by the fileformat" );
600 throw container::NoSuchElementException(
601 "The given coordinate-system is no element of the container",
602 static_cast< uno::XWeak *
>(
this ));
612 return comphelper::containerToSequence<uno::Reference< chart2::XCoordinateSystem >>(
m_aCoordSystems );
626 if( aCoordinateSystems.hasElements() )
628 OSL_ENSURE( aCoordinateSystems.getLength()<=1,
"more than one coordinatesystem is not supported yet by the fileformat" );
631 aNew.push_back( pCoordSys );
638 for (
auto & xSystem : aOld)
640 for (
auto & xSystem : aNew)
650 if( !aCoordinateSystems.empty() )
652 OSL_ENSURE( aCoordinateSystems.size()<=1,
"more than one coordinatesystem is not supported yet by the fileformat" );
653 aNew.push_back( aCoordinateSystems[0] );
660 for (
auto & xSystem : aOld)
662 for (
auto & xSystem : aNew)
712 tPropertyValueMap::const_iterator aFound( rStaticDefaults.find(
nHandle ) );
713 if( aFound == rStaticDefaults.end() )
716 rAny = (*aFound).second;
722 return StaticDiagramInfoHelper();
728 return StaticDiagramInfo();
735 if(
nHandle == PROP_DIAGRAM_PERSPECTIVE )
737 sal_Int32 fPerspective = 20;
738 if( rValue >>=fPerspective )
741 else if(
nHandle == PROP_DIAGRAM_ROTATION_HORIZONTAL
742 ||
nHandle == PROP_DIAGRAM_ROTATION_VERTICAL )
744 sal_Int32 nNewAngleDegree = 0;
745 if( rValue >>=nNewAngleDegree )
749 if(
nHandle == PROP_DIAGRAM_ROTATION_HORIZONTAL )
757 ::property::OPropertySet::setFastPropertyValue_NoBroadcast(
nHandle, rValue );
763 if(
nHandle == PROP_DIAGRAM_PERSPECTIVE )
767 rValue <<= nPerspective;
769 else if(
nHandle == PROP_DIAGRAM_ROTATION_HORIZONTAL
770 ||
nHandle == PROP_DIAGRAM_ROTATION_VERTICAL )
774 sal_Int32 nAngleDegree = 0;
775 if(
nHandle == PROP_DIAGRAM_ROTATION_HORIZONTAL )
779 rValue <<= nAngleDegree;
782 ::property::OPropertySet::getFastPropertyValue( rValue,
nHandle );
799 auto* pDataTable =
dynamic_cast<DataTable*
>(xDataTable.get());
800 assert(!xDataTable || pDataTable);
814 if (xOldDataTable.is())
816 if (xNewDataTable.is())
827OUString SAL_CALL
Diagram::getImplementationName()
829 return "com.sun.star.comp.chart2.Diagram";
840 "com.sun.star.chart2.Diagram",
841 "com.sun.star.layout.LayoutElement",
842 "com.sun.star.beans.PropertySet" };
848 chart2::RelativePosition aRelPos;
849 chart2::RelativeSize aRelSize;
853 bool bPosSizeExcludeAxes=
false;
855 if( bPosSizeExcludeAxes )
867 sal_Int32 nResult = css::chart::MissingValueTreatment::LEAVE_GAP;
874 for( sal_Int32
n : aAvailableMissingValueTreatments )
880 if( aAvailableMissingValueTreatments.hasElements() )
882 nResult = aAvailableMissingValueTreatments[0];
891 std::vector< rtl::Reference< DataSeries > > aSeriesVec =
894 for (
auto const& series : aSeriesVec)
897 series,
"Geometry3D",
uno::Any( nNewGeometry ));
903 sal_Int32 nCommonGeom( css::chart2::DataPointGeometry3D::CUBOID );
907 std::vector< rtl::Reference< DataSeries > > aSeriesVec =
getDataSeries();
909 if( aSeriesVec.empty())
912 for (
auto const& series : aSeriesVec)
917 if( series->getPropertyValue(
"Geometry3D") >>= nGeom )
926 else if( nCommonGeom != nGeom )
933 catch(
const uno::Exception & )
946 if( xChartType .is() )
948 OUString aChartType = xChartType->getChartType();
964 OUString sChartType = xType->getChartType();
1010 bool bMovedOrMoveAllowed =
false;
1014 if( !xGivenDataSeries.is() )
1018 bool bFound =
false;
1021 for( std::size_t nCS = 0; !bFound && nCS < aCooSysList.size(); ++nCS )
1026 std::vector< rtl::Reference< ChartType > > aChartTypeList( xCooSys->getChartTypes2() );
1029 for( std::size_t nT = 0; !bFound && nT < aChartTypeList.size(); ++nT )
1035 std::vector< rtl::Reference< DataSeries > > aSeriesList = xCurrentChartType->getDataSeries2();
1037 for( std::size_t nS = 0; !bFound && nS < aSeriesList.size(); ++nS )
1041 if( xGivenDataSeries==aSeriesList[nS] )
1043 std::size_t nOldSeriesIndex = nS;
1048 sal_Int32 nNewSeriesIndex = nS;
1059 bMovedOrMoveAllowed =
true;
1062 aSeriesList[ nOldSeriesIndex ] = aSeriesList[ nNewSeriesIndex ];
1063 aSeriesList[ nNewSeriesIndex ] = xGivenDataSeries;
1064 xCurrentChartType->setDataSeries( aSeriesList );
1067 else if( nNewSeriesIndex<0 )
1072 bMovedOrMoveAllowed =
true;
1075 std::vector< rtl::Reference< DataSeries > > aOtherSeriesList = xFormerChartType->getDataSeries2();
1076 sal_Int32 nOtherSeriesIndex = aOtherSeriesList.size()-1;
1077 if( nOtherSeriesIndex >= 0 &&
o3tl::make_unsigned(nOtherSeriesIndex) < aOtherSeriesList.size() )
1080 aOtherSeriesList[nOtherSeriesIndex] = xGivenDataSeries;
1081 xFormerChartType->setDataSeries(aOtherSeriesList);
1083 aSeriesList[nOldSeriesIndex]=xExchangeSeries;
1084 xCurrentChartType->setDataSeries(aSeriesList);
1089 else if( nT+1 < aChartTypeList.size() )
1095 bMovedOrMoveAllowed =
true;
1098 std::vector< rtl::Reference< DataSeries > > aOtherSeriesList = xOtherChartType->getDataSeries2();
1099 if( !aOtherSeriesList.empty() )
1102 aOtherSeriesList[0] = xGivenDataSeries;
1103 xOtherChartType->setDataSeries(aOtherSeriesList);
1105 aSeriesList[nOldSeriesIndex]=xExchangeSeries;
1106 xCurrentChartType->setDataSeries(aSeriesList);
1112 catch(
const util::CloseVetoException& )
1115 catch(
const uno::RuntimeException& )
1120 xFormerChartType = xCurrentChartType;
1124 catch(
const util::CloseVetoException& )
1127 catch(
const uno::RuntimeException& )
1130 return bMovedOrMoveAllowed;
1137 const bool bDoMove =
false;
1140 *
this, xGivenDataSeries, bForward, bDoMove );
1147 const bool bDoMove =
true;
1150 *
this, xGivenDataSeries, bForward, bDoMove );
1157 std::vector< rtl::Reference< ChartType > > aResult;
1162 const std::vector< rtl::Reference< ChartType > > & aChartTypeSeq( coords->getChartTypes2());
1163 aResult.insert( aResult.end(), aChartTypeSeq.begin(), aChartTypeSeq.end() );
1166 catch(
const uno::Exception & )
1179 sal_Int32 nTypesSoFar = 0;
1182 const std::vector< rtl::Reference< ChartType > > & aChartTypeList( coords->getChartTypes2() );
1185 xChartType = aChartTypeList[
nIndex - nTypesSoFar];
1188 nTypesSoFar += aChartTypeList.size();
1202 std::vector< rtl::Reference< Axis > > aRet;
1210 OSL_ASSERT( xCooSys.is());
1211 for( sal_Int32 nN = xCooSys->getDimension(); nN--; )
1213 const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(nN);
1214 for(sal_Int32 nI=0; nI<=nMaximumScaleIndex; ++nI)
1217 OSL_ASSERT( xAxis.is());
1220 chart2::ScaleData aScaleData = xAxis->getScaleData();
1221 if( aScaleData.Categories.is() || (aScaleData.AxisType == chart2::AxisType::CATEGORY) )
1223 aRet.push_back(xAxis);
1225 if( (nN == 0) && !xFallBack.is())
1232 catch(
const uno::Exception & )
1238 aRet.push_back(xFallBack);
1249 std::vector< rtl::Reference< Axis > > aCatAxes(
1252 if (aCatAxes.empty())
1259 chart2::ScaleData aScaleData( xCatAxis->getScaleData());
1260 if( !aScaleData.Categories.is() )
1263 xResult = aScaleData.Categories;
1269 xProp->setPropertyValue(
"Role",
uno::Any( OUString(
"categories") ) );
1271 catch(
const uno::Exception & )
1277 catch(
const uno::Exception & )
1288 bool bCategoryAxis )
1290 std::vector< rtl::Reference< Axis > > aCatAxes(
1297 chart2::ScaleData aScaleData( xCatAxis->getScaleData());
1298 aScaleData.Categories = xCategories;
1302 aScaleData.AxisType = chart2::AxisType::CATEGORY;
1303 else if( aScaleData.AxisType == chart2::AxisType::CATEGORY || aScaleData.AxisType == chart2::AxisType::DATE )
1304 aScaleData.AxisType = chart2::AxisType::REALNUMBER;
1306 xCatAxis->setScaleData( aScaleData );
1317 for( sal_Int32 nN = xCooSys->getDimension(); nN--; )
1319 const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(nN);
1320 for(sal_Int32 nI=0; nI<=nMaximumScaleIndex; ++nI)
1323 OSL_ASSERT( xAxis.is());
1326 chart2::ScaleData aScaleData = xAxis->getScaleData();
1327 if( aScaleData.AxisType == chart2::AxisType::CATEGORY || aScaleData.AxisType == chart2::AxisType::DATE )
1334 catch(
const uno::Exception & )
1342std::vector< std::vector< rtl::Reference< DataSeries > > >
1345 std::vector< std::vector< rtl::Reference< DataSeries > > > aResult;
1353 aResult.push_back( chartType->getDataSeries2() );
1359std::vector< rtl::Reference< ::chart::DataSeries > >
1362 std::vector< rtl::Reference< DataSeries > > aResult;
1369 const std::vector< rtl::Reference< DataSeries > > aSeriesSeq( chartType->getDataSeries2() );
1370 aResult.insert( aResult.end(), aSeriesSeq.begin(), aSeriesSeq.end() );
1374 catch(
const uno::Exception & )
1385 if( !xGivenDataSeries.is() )
1396 const std::vector< rtl::Reference< ChartType > > & aChartTypeList( xCooSys->getChartTypes2() );
1402 if( xGivenDataSeries==dataSeries )
1421 bool bChanged =
false;
1425 sal_Int32 nNewAxisIndex = bAttachToMainAxis ? 0 : 1;
1429 if( nOldAxisIndex != nNewAxisIndex )
1433 xDataSeries->setPropertyValue(
"AttachedAxisIndex",
uno::Any( nNewAxisIndex ) );
1436 catch(
const uno::Exception & )
1467 xReplacement->setChartTypes( xCooSysToReplace->getChartTypes());
1472 if( xCategories.is() )
1475 catch(
const uno::Exception & )
1484 sal_Int32 nResult = -1;
1492 nResult = xCooSys->getDimension();
1497 catch(
const uno::Exception & )
1512 bool rbFound =
false;
1513 bool rbAmbiguous =
true;
1515 bool bIsSupportingOnlyDeepStackingFor3D=
false;
1523 const std::vector< rtl::Reference< ChartType > > aChartTypeList( xOldCooSys->getChartTypes2() );
1527 if(!xNewCooSys.is())
1529 xNewCooSys =
dynamic_cast<BaseCoordinateSystem*
>(xChartType->createCoordinateSystem( nNewDimensionCount ).get());
1543 if( nNewDimensionCount==3 && eStackMode !=
StackMode::ZStacked && bIsSupportingOnlyDeepStackingFor3D )
1548 catch(
const uno::Exception & )
1558 bool bValueFound =
false;
1559 bool bIsAmbiguous =
false;
1562 if( eStackMode == eOldStackMode && !bIsAmbiguous )
1565 chart2::StackingDirection eNewDirection = chart2::StackingDirection_NO_STACKING;
1567 eNewDirection = chart2::StackingDirection_Y_STACKING;
1569 eNewDirection = chart2::StackingDirection_Z_STACKING;
1571 uno::Any aNewDirection( eNewDirection );
1573 bool bPercent =
false;
1581 const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(1);
1582 for(sal_Int32 nI=0; nI<=nMaximumScaleIndex; ++nI)
1587 chart2::ScaleData aScaleData = xAxis->getScaleData();
1588 if( (aScaleData.AxisType==chart2::AxisType::PERCENT) != bPercent )
1591 aScaleData.AxisType = chart2::AxisType::PERCENT;
1593 aScaleData.AxisType = chart2::AxisType::REALNUMBER;
1594 xAxis->setScaleData( aScaleData );
1599 const std::vector< rtl::Reference< ChartType > > & aChartTypeList( xCooSys->getChartTypes2() );
1600 if (aChartTypeList.empty())
1608 dataSeries->setPropertyValue(
"StackingDirection", aNewDirection );
1612 catch(
const uno::Exception & )
1629 std::vector< rtl::Reference< ChartType > > aChartTypeList( xCooSys->getChartTypes2() );
1630 for( std::size_t nT = 0; nT < aChartTypeList.size(); ++nT )
1635 xChartType, rbFound, rbAmbiguous, xCooSys );
1637 if( rbFound && eLocalStackMode != eGlobalStackMode && nT>0 )
1640 return eGlobalStackMode;
1643 eGlobalStackMode = eLocalStackMode;
1647 return eGlobalStackMode;
1655 aValue <<= bVertical;
1658 bool bChanged =
false;
1659 bool bOldSwap =
false;
1660 if( !(xCooSys->getPropertyValue(
"SwapXAndYAxis") >>= bOldSwap)
1661 || bVertical != bOldSwap )
1665 xCooSys->setPropertyValue(
"SwapXAndYAxis", aValue);
1667 const sal_Int32 nDimensionCount = xCooSys->getDimension();
1668 sal_Int32 nDimIndex = 0;
1669 for (nDimIndex=0; nDimIndex < nDimensionCount; ++nDimIndex)
1671 const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(nDimIndex);
1672 for (sal_Int32 nI = 0; nI <= nMaximumScaleIndex; ++nI)
1683 if (!xTitleProps.is())
1686 double fAngleDegree = 0.0;
1687 xTitleProps->getPropertyValue(
"TextRotation") >>= fAngleDegree;
1688 if (fAngleDegree != 0.0 &&
1689 !rtl::math::approxEqual(fAngleDegree, 90.0))
1692 double fNewAngleDegree = 0.0;
1693 if( !bVertical && nDimIndex == 1 )
1694 fNewAngleDegree = 90.0;
1695 else if( bVertical && nDimIndex == 0 )
1696 fNewAngleDegree = 90.0;
1698 xTitleProps->setPropertyValue(
"TextRotation",
uno::Any(fNewAngleDegree));
1703 catch(
const uno::Exception & )
1711 bool bValue =
false;
1713 rbAmbiguous =
false;
1717 bool bCurrent =
false;
1718 if (coords->getPropertyValue(
"SwapXAndYAxis") >>= bCurrent)
1725 else if (bCurrent != bValue)
1741 if( !xChartTypeManager )
1747 bool bTemplateFound =
false;
1749 for( sal_Int32
i = 0; ! bTemplateFound &&
i <
nLength; ++
i )
1756 if (xTempl.is() && xTempl->matchesTemplate2(
this,
true))
1760 bTemplateFound =
true;
1763 catch(
const uno::Exception & )
1772std::vector< rtl::Reference< RegressionCurveModel > >
1775 std::vector< rtl::Reference< RegressionCurveModel > > aResult;
1776 std::vector< rtl::Reference< DataSeries > > aSeries(
getDataSeries());
1777 for (
auto const& elem : aSeries)
1782 aResult.push_back( curve );
1802 catch(
const uno::Exception & )
1806 return fCameraDistance;
1813 if( fCameraDistance <= 0 )
1819 if( ::basegfx::fTools::equalZero( aVRP.
getLength() ) )
1826 catch(
const uno::Exception & )
1834 bool bRightAngledAxes =
false;
1836 if(bRightAngledAxes)
1849 double fXAngle, fYAngle, fZAngle;
1855 rnHorizontalAngleDegree, rnVerticalAngleDegree, fXAngle, fYAngle, fZAngle);
1856 rnVerticalAngleDegree*=-1;
1865 rnHorizontalAngleDegree =
NormAngle180(rnHorizontalAngleDegree);
1866 rnVerticalAngleDegree =
NormAngle180(rnVerticalAngleDegree);
1874 double fZAngle = 0.0;
1878 nHorizontalAngleDegree, -1*nVerticalYAngleDegree, fXAngle, fYAngle, fZAngle );
1885 drawing::HomogenMatrix aCameraMatrix;
1900 aCameraMatrix.Line1.Column1 = aCross[0];
1901 aCameraMatrix.Line1.Column2 = aCross[1];
1902 aCameraMatrix.Line1.Column3 = aCross[2];
1903 aCameraMatrix.Line1.Column4 = 0.0;
1906 aCameraMatrix.Line2.Column1 = aVUP[0];
1907 aCameraMatrix.Line2.Column2 = aVUP[1];
1908 aCameraMatrix.Line2.Column3 = aVUP[2];
1909 aCameraMatrix.Line2.Column4 = 0.0;
1912 aCameraMatrix.Line3.Column1 = aVPN[0];
1913 aCameraMatrix.Line3.Column2 = aVPN[1];
1914 aCameraMatrix.Line3.Column3 = aVPN[2];
1915 aCameraMatrix.Line3.Column4 = 0.0;
1918 aCameraMatrix.Line4.Column1 = 0.0;
1919 aCameraMatrix.Line4.Column2 = 0.0;
1920 aCameraMatrix.Line4.Column3 = 0.0;
1921 aCameraMatrix.Line4.Column4 = 1.0;
1929 while( fAngleRad<=-M_PI )
1930 fAngleRad+=(2*M_PI);
1931 while( fAngleRad>M_PI )
1932 fAngleRad-=(2*M_PI);
1940 rfXAngleRad = rfYAngleRad = rfZAngleRad = 0.0;
1949 drawing::HomogenMatrix aHomMatrix;
1965 if(rfZAngleRad<-M_PI_2 || rfZAngleRad>M_PI_2)
1969 rfYAngleRad=(M_PI-rfYAngleRad);
1980 double fXAngleRad=0.0;
1981 double fYAngleRad=0.0;
1982 double fZAngleRad=0.0;
1984 aInverseRotation.
rotate( 0.0, 0.0, -fZAngleRad );
1985 aInverseRotation.
rotate( 0.0, -fYAngleRad, 0.0 );
1986 aInverseRotation.
rotate( -fXAngleRad, 0.0, 0.0 );
1987 return aInverseRotation;
2007 double fXAngleRad,
double fYAngleRad,
double fZAngleRad )
2023 aInverseCameraRotation.
rotate( 0.0, 0.0, -aR.
getZ() );
2024 aInverseCameraRotation.
rotate( 0.0, -aR.
getY(), 0.0 );
2025 aInverseCameraRotation.
rotate( -aR.
getX(), 0.0, 0.0 );
2029 aCumulatedRotation.
rotate( fXAngleRad, fYAngleRad, fZAngleRad );
2040 bool bRightAngledAxes =
false;
2046 aNewRotation.
rotate( fXAngleRad, fYAngleRad, fZAngleRad );
2050 catch(
const uno::Exception & )
2056static bool lcl_isEqual(
const drawing::Direction3D& rA,
const drawing::Direction3D& rB )
2058 return ::rtl::math::approxEqual(rA.DirectionX, rB.DirectionX)
2059 && ::rtl::math::approxEqual(rA.DirectionY, rB.DirectionY)
2060 && ::rtl::math::approxEqual(rA.DirectionZ, rB.DirectionZ);
2063 , sal_Int32 nRoundedEdges
2064 , sal_Int32 nObjectLines
2067 if(aShadeMode!=drawing::ShadeMode_FLAT)
2069 if(nRoundedEdges!=0)
2081 , sal_Int32 nRoundedEdges
2082 , sal_Int32 nObjectLines )
2084 if(aShadeMode!=drawing::ShadeMode_SMOOTH)
2086 if(nRoundedEdges!=5)
2102 sal_Int32 nColor = 0;
2108 sal_Int32 nAmbientColor = 0;
2118 drawing::Direction3D aDefaultDirection( bRealistic
2124 bool bRightAngledAxes =
false;
2126 if(!bRightAngledAxes)
2134 aLightVector = aRotation*aLightVector;
2155 sal_Int32 nRoundedEdges;
2156 sal_Int32 nObjectLines;
2160 drawing::ShadeMode aShadeMode( drawing::ShadeMode_SMOOTH );
2165 catch(
const uno::Exception & )
2185 , sal_Int32& rnRoundedEdges
2186 , sal_Int32& rnObjectLines )
2188 rShadeMode = drawing::ShadeMode_SMOOTH;
2194 , sal_Int32& rnRoundedEdges
2195 , sal_Int32& rnObjectLines
2198 rShadeMode = drawing::ShadeMode_FLAT;
2209 drawing::ShadeMode aShadeMode;
2210 sal_Int32 nRoundedEdges;
2211 sal_Int32 nObjectLines;
2222 drawing::ShadeMode aOldShadeMode;
2224 aOldShadeMode != aShadeMode )
2231 catch(
const uno::Exception & )
2246 aSceneRotation.
rotate( -M_PI/3.0, 0, 0 );
2256 bool bOldRightAngledAxes =
false;
2258 if( bOldRightAngledAxes!=bRightAngledAxes)
2261 if(bRightAngledAxes)
2273 catch(
const uno::Exception & )
2281extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
2283 css::uno::Sequence<css::uno::Any>
const &)
2285 return cppu::acquire(new ::chart::Diagram(context));
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_chart2_Diagram_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
Reference< uno::XComponentContext > m_xContext
PropertiesInfo aProperties
void rotate(double fAngleX, double fAngleY, double fAngleZ)
B3DVector & setLength(double fLen)
static rtl::Reference< ::chart::Axis > getAxis(sal_Int32 nDimensionIndex, bool bMainAxis, const rtl::Reference< ::chart::Diagram > &xDiagram)
static rtl::Reference< ::chart::Axis > createAxis(sal_Int32 nDimensionIndex, bool bMainAxis, const rtl::Reference< ::chart::Diagram > &xDiagram, const css::uno::Reference< css::uno::XComponentContext > &xContext, ReferenceSizeProvider *pRefSizeProvider=nullptr)
static void makeAxisVisible(const rtl::Reference< ::chart::Axis > &xAxis)
static void hideAxisIfNoDataIsAttached(const rtl::Reference< ::chart::Axis > &xAxis, const rtl::Reference< ::chart::Diagram > &xDiagram)
static SAL_DLLPRIVATE sal_Int32 getDefaultAmbientLightColor(bool bSimple, const rtl::Reference< ::chart::ChartType > &xChartType)
static bool isSupportingOnlyDeepStackingFor3D(const rtl::Reference< ::chart::ChartType > &xChartType)
static css::uno::Sequence< sal_Int32 > getSupportedMissingValueTreatments(const rtl::Reference< ::chart::ChartType > &xChartType)
static SAL_DLLPRIVATE sal_Int32 getDefaultDirectLightColor(bool bSimple, const rtl::Reference< ::chart::ChartType > &xChartType)
static SAL_DLLPRIVATE css::drawing::Direction3D getDefaultRealisticLightDirection(const rtl::Reference< ::chart::ChartType > &xChartType)
static SAL_DLLPRIVATE bool noBordersForSimpleScheme(const rtl::Reference< ::chart::ChartType > &xChartType)
static bool isSupportingRightAngledAxes(const rtl::Reference< ::chart::ChartType > &xChartType)
static SAL_DLLPRIVATE css::drawing::Direction3D getDefaultSimpleLightDirection(const rtl::Reference< ::chart::ChartType > &xChartType)
Data table implementation.
static SAL_DLLPRIVATE bool areChartTypesCompatible(const rtl::Reference< ::chart::ChartType > &xFirstType, const rtl::Reference< ::chart::ChartType > &xSecondType)
static StackMode getStackModeFromChartType(const rtl::Reference< ::chart::ChartType > &xChartType, bool &rbFound, bool &rbAmbiguous, const rtl::Reference< ::chart::BaseCoordinateSystem > &xCorrespondingCoordinateSystem)
Retrieves the stackmode of the first DataSeries or none.
static bool isSeriesAttachedToMainAxis(const rtl::Reference< ::chart::DataSeries > &xDataSeries)
void setRotationAngle(double fXAngleRad, double fYAngleRad, double fZAngleRad)
virtual ::cppu::IPropertyArrayHelper &SAL_CALL getInfoHelper() override
The InfoHelper table contains all property names and types of this object.
void setStackMode(StackMode eStackMode)
The stacking mode is only set at the series found inside the first chart type.
rtl::Reference<::chart::Legend > m_xLegend
virtual void SAL_CALL set3DSettingsToDefault() override
void setGeometry3D(sal_Int32 nNewGeometry)
virtual void SAL_CALL setDefaultIllumination() override
rtl::Reference< Wall > m_xWall
virtual void SAL_CALL setDataTable(const css::uno::Reference< css::chart2::XDataTable > &xDataTable) override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
css::uno::Reference< css::chart2::XTitle > m_xTitle
bool isSupportingDateAxis()
bool moveSeries(const rtl::Reference< DataSeries > &xGivenDataSeries, bool bForward)
Move a series forward or backward.
virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone() override
void setDimension(sal_Int32 nNewDimensionCount)
Sets the dimension of the diagram given.
virtual void SAL_CALL modified(const css::lang::EventObject &aEvent) override
virtual css::uno::Reference< css::chart2::XDataTable > SAL_CALL getDataTable() override
virtual void firePropertyChangeEvent() override
implement this method in derived classes to get called when properties change.
virtual css::uno::Reference< css::chart2::XLegend > SAL_CALL getLegend() override
void setCameraDistance(double fCameraDistance)
virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const css::uno::Any &rValue) override
The same as setFastPropertyValue; nHandle is always valid.
virtual void SAL_CALL setLegend(const css::uno::Reference< css::chart2::XLegend > &xLegend) override
void getRotation(sal_Int32 &rnHorizontalAngleDegree, sal_Int32 &rnVerticalAngleDegree)
virtual void SAL_CALL setDefaultRotation() override
rtl::Reference<::chart::DataTable > m_xDataTable
virtual css::uno::Reference< css::chart2::XTitle > SAL_CALL getTitleObject() override
virtual void SAL_CALL addCoordinateSystem(const css::uno::Reference< css::chart2::XCoordinateSystem > &aCoordSys) override
css::uno::Reference< css::chart2::XColorScheme > m_xColorScheme
tCoordinateSystemContainerType m_aCoordSystems
tTemplateWithServiceName getTemplate(const rtl::Reference< ::chart::ChartTypeManager > &xChartTypeManager)
tries to find a template in the chart-type manager that matches this diagram.
tCoordinateSystemContainerType getBaseCoordinateSystems() const
virtual void SAL_CALL setCoordinateSystems(const css::uno::Sequence< css::uno::Reference< css::chart2::XCoordinateSystem > > &aCoordinateSystems) override
double getCameraDistance()
rtl::Reference< ChartType > getChartTypeByIndex(sal_Int32 nIndex)
sal_Int32 getDimension()
Returns the dimension found for all chart types in the tree.
bool isSeriesMoveable(const rtl::Reference< DataSeries > &xGivenDataSeries, bool bForward)
Test if a series can be moved.
virtual void SAL_CALL addModifyListener(const css::uno::Reference< css::util::XModifyListener > &aListener) override
bool isSupportingFloorAndWall()
std::vector< rtl::Reference< ::chart::DataSeries > > getDataSeries()
virtual void SAL_CALL setDefaultColorScheme(const css::uno::Reference< css::chart2::XColorScheme > &xColorScheme) override
virtual css::uno::Sequence< css::uno::Reference< css::chart2::XCoordinateSystem > > SAL_CALL getCoordinateSystems() override
StackMode getStackMode(bool &rbFound, bool &rbAmbiguous)
virtual ~Diagram() override
rtl::Reference< Wall > m_xFloor
virtual void SAL_CALL getFastPropertyValue(css::uno::Any &rValue, sal_Int32 nHandle) const override
The same as getFastPropertyValue, but return the value through rValue and nHandle is always valid.
DiagramPositioningMode getDiagramPositioningMode()
SAL_DLLPRIVATE void replaceCoordinateSystem(const rtl::Reference< ::chart::BaseCoordinateSystem > &xCooSysToReplace, const rtl::Reference< ::chart::BaseCoordinateSystem > &xReplacement)
Replaces all occurrences of xCooSysToReplace in the tree with xReplacement in the diagram's tree.
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
void switchRightAngledAxes(bool bRightAngledAxes)
void setScheme(ThreeDLookScheme aScheme)
std::vector< std::vector< rtl::Reference< ::chart::DataSeries > > > getDataSeriesGroups()
return all data series in this diagram grouped by chart-types
Diagram(css::uno::Reference< css::uno::XComponentContext > xContext)
rtl::Reference< ::chart::Axis > getAttachedAxis(const rtl::Reference< ::chart::DataSeries > &xSeries)
virtual void SAL_CALL setDiagramData(const css::uno::Reference< css::chart2::data::XDataSource > &xDataSource, const css::uno::Sequence< css::beans::PropertyValue > &aArguments) override
virtual void SAL_CALL removeModifyListener(const css::uno::Reference< css::util::XModifyListener > &aListener) override
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
bool getVertical(bool &rbOutFoundResult, bool &rbOutAmbiguousResult)
Gets the "SwapXAndYAxis" property at all coordinate systems found in the given diagram.
sal_Int32 getCorrectedMissingValueTreatment(const rtl::Reference< ::chart::ChartType > &xChartType)
void getRotationAngle(double &rfXAngleRad, double &rfYAngleRad, double &rfZAngleRad)
void setRotation(sal_Int32 nHorizontalAngleDegree, sal_Int32 nVerticalYAngleDegree)
bool attachSeriesToAxis(bool bMainAxis, const rtl::Reference< DataSeries > &xSeries, const css::uno::Reference< css::uno::XComponentContext > &xContext, bool bAdaptAxes=true)
virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getFloor() override
virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getWall() override
rtl::Reference< ChartType > getChartTypeOfSeries(const rtl::Reference< DataSeries > &xSeries)
sal_Int32 getGeometry3D(bool &rbFound, bool &rbAmbiguous)
ThreeDLookScheme detectScheme()
std::vector< rtl::Reference< ::chart::BaseCoordinateSystem > > tCoordinateSystemContainerType
void setVertical(bool bVertical)
Sets the "SwapXAndYAxis" property at all coordinate systems found in the given diagram.
css::uno::Reference< css::chart2::data::XLabeledDataSequence > getCategories()
rtl::Reference< ::chart::Legend > getLegend2() const
void setCategories(const css::uno::Reference< css::chart2::data::XLabeledDataSequence > &xCategories, bool bSetAxisType=false, bool bCategoryAxis=true)
std::vector< rtl::Reference<::chart::RegressionCurveModel > > getAllRegressionCurvesNotMeanValueLine()
virtual void SAL_CALL removeCoordinateSystem(const css::uno::Reference< css::chart2::XCoordinateSystem > &aCoordSys) override
std::vector< rtl::Reference< ChartType > > getChartTypes()
css::uno::Reference< css::uno::XComponentContext > m_xContext
virtual void GetDefaultValue(sal_Int32 nHandle, css::uno::Any &rAny) const override
implement this method to provide default values for all properties supporting defaults.
rtl::Reference< ModifyEventForwarder > m_xModifyEventForwarder
rtl::Reference<::chart::DataTable > getDataTableRef() const
virtual void SAL_CALL setTitleObject(const css::uno::Reference< css::chart2::XTitle > &Title) override
virtual css::uno::Reference< css::chart2::XColorScheme > SAL_CALL getDefaultColorScheme() override
This helper class serves as forwarder of modify events.
static void setRoundedEdgesAndObjectLines(const rtl::Reference< ::chart::Diagram > &xDiagram, sal_Int32 nRoundedEdges, sal_Int32 nObjectLines)
static void getRoundedEdgesAndObjectLines(const rtl::Reference< ::chart::Diagram > &xDiagram, sal_Int32 &rnRoundedEdges, sal_Int32 &rnObjectLines)
static css::drawing::CameraGeometry getDefaultCameraGeometry(bool bPie=false)
Returns the default camera geometry that is set in the Diagram CTOR.
static double CameraDistanceToPerspective(double fCameraDistance)
static double PerspectiveToCameraDistance(double fPerspective)
static SAL_DLLPRIVATE void convertXYZAngleRadToElevationRotationDeg(sal_Int32 &rnElevationDeg, sal_Int32 &rnRotationDeg, double fXRad, double fYRad, double fZRad)
static void convertElevationRotationDegToXYZAngleRad(sal_Int32 nElevationDeg, sal_Int32 nRotationDeg, double &rfXAngleRad, double &rfYAngleRad, double &rfZAngleRad)
static SAL_DLLPRIVATE void ensureCameraDistanceRange(double &rfCameraDistance)
mutable::osl::Mutex m_aMutex
static css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL createPropertySetInfo(IPropertyArrayHelper &rProperties)
void SAL_CALL disposing()
virtual void SAL_CALL setPropertyToDefault(const OUString &PropertyName) override final
virtual void SAL_CALL setFastPropertyValue(sal_Int32 nHandle, const css::uno::Any &rValue) override final
constexpr double FIXED_SIZE_FOR_3D_CHART_VOLUME
#define DBG_UNHANDLED_EXCEPTION(...)
Sequence< OUString > aServiceNames
std::enable_if< std::is_signed< T >::value, T >::type NormAngle180(T angle)
Sequence< PropertyValue > aArguments
constexpr double rad2deg(double v)
B2IRange fround(const B2DRange &rRange)
constexpr double deg2rad(double v)
void ReduceToRotationMatrix(::basegfx::B3DHomMatrix &rB3DMatrix)
OOO_DLLPUBLIC_CHARTTOOLS::basegfx::B3DTuple GetRotationFromMatrix(const ::basegfx::B3DHomMatrix &rB3DMatrix)
OOO_DLLPUBLIC_CHARTTOOLS css::drawing::HomogenMatrix B3DHomMatrixToHomogenMatrix(const ::basegfx::B3DHomMatrix &rB3DMatrix)
::basegfx::B3DVector Position3DToB3DVector(const css::drawing::Position3D &rPosition)
::basegfx::B3DVector Direction3DToB3DVector(const css::drawing::Direction3D &rDirection)
css::drawing::Direction3D B3DVectorToDirection3D(const ::basegfx::B3DVector &rB3DVector)
OOO_DLLPUBLIC_CHARTTOOLS::basegfx::B3DHomMatrix HomogenMatrixToB3DHomMatrix(const css::drawing::HomogenMatrix &rHomogenMatrix)
css::drawing::Position3D B3DVectorToPosition3D(const ::basegfx::B3DVector &rB3DVector)
OOO_DLLPUBLIC_CHARTTOOLS void AddDefaultsToMap(::chart::tPropertyValueMap &rOutMap)
OOO_DLLPUBLIC_CHARTTOOLS void AddPropertiesToVector(std::vector< css::beans::Property > &rOutProperties)
OOO_DLLPUBLIC_CHARTTOOLS void setPropertyAlsoToAllAttributedDataPoints(const rtl::Reference< ::chart::DataSeries > &xSeries, const OUString &rPropertyName, const css::uno::Any &rPropertyValue)
OOO_DLLPUBLIC_CHARTTOOLS sal_Int32 getAttachedAxisIndex(const rtl::Reference< ::chart::DataSeries > &xSeries)
void removeListener(const InterfaceRef &xObject, const css::uno::Reference< css::util::XModifyListener > &xListener)
void addListener(const InterfaceRef &xObject, const css::uno::Reference< css::util::XModifyListener > &xListener)
void setPropertyValueDefault(tPropertyValueMap &rOutMap, tPropertyValueMapKey key, const Value &value)
Calls setPropertyValue() but asserts that the given property hasn't been set before.
OOO_DLLPUBLIC_CHARTTOOLS bool isMeanValueLine(const css::uno::Reference< css::chart2::XRegressionCurve > &xRegCurve)
@ PROP_SCENE_TRANSF_MATRIX
@ PROP_SCENE_LIGHT_DIRECTION_3
@ PROP_SCENE_AMBIENT_COLOR
@ PROP_SCENE_LIGHT_DIRECTION_1
@ PROP_SCENE_LIGHT_DIRECTION_7
@ PROP_SCENE_LIGHT_DIRECTION_8
@ PROP_SCENE_LIGHT_COLOR_2
@ PROP_SCENE_CAMERA_GEOMETRY
@ PROP_SCENE_LIGHT_DIRECTION_6
@ PROP_SCENE_LIGHT_DIRECTION_4
@ PROP_SCENE_LIGHT_DIRECTION_5
@ PROP_SCENE_LIGHT_DIRECTION_2
::cppu::WeakImplHelper< css::chart2::XDiagram, css::lang::XServiceInfo, css::chart2::XCoordinateSystemContainer, css::chart2::XTitled, css::chart::X3DDefaultSetter, css::util::XModifyBroadcaster, css::util::XModifyListener, css::util::XCloneable > Diagram_Base
::basegfx::B3DHomMatrix lcl_getCompleteRotationMatrix(Diagram &rDiagram)
static double lcl_shiftAngleToIntervalMinusPiToPi(double fAngleRad)
static void lcl_setSimpleScheme(drawing::ShadeMode &rShadeMode, sal_Int32 &rnRoundedEdges, sal_Int32 &rnObjectLines, const rtl::Reference< Diagram > &xDiagram)
static void lcl_RotateLightSource(Diagram &rDiagram, int nLightSourceDirectionProp, int nLightSourceOnProp, const ::basegfx::B3DHomMatrix &rRotationMatrix)
std::unordered_map< tPropertyValueMapKey, css::uno::Any > tPropertyValueMap
static bool lcl_isLightScheme(Diagram &rDiagram, bool bRealistic)
::basegfx::B3DHomMatrix lcl_getCameraMatrix(Diagram &rDiagram)
static bool lcl_isEqual(const drawing::Direction3D &rA, const drawing::Direction3D &rB)
static bool lcl_moveSeriesOrCheckIfMoveIsAllowed(Diagram &rDiagram, const rtl::Reference< DataSeries > &xGivenDataSeries, bool bForward, bool bDoMove)
This method implements the logic of checking if a series can be moved forward/backward.
static bool lcl_isSimpleLightScheme(Diagram &rDiagram)
::basegfx::B3DHomMatrix lcl_getInverseRotationMatrix(Diagram &rDiagram)
@ ThreeDLookScheme_Unknown
@ ThreeDLookScheme_Realistic
@ ThreeDLookScheme_Simple
static std::vector< rtl::Reference< Axis > > lcl_getAxisHoldingCategoriesFromDiagram(Diagram &rDiagram)
static bool lcl_isRealisticLightScheme(Diagram &rDiagram)
static void lcl_setLightsForScheme(Diagram &rDiagram, const ThreeDLookScheme &rScheme)
static bool lcl_isSimpleScheme(drawing::ShadeMode aShadeMode, sal_Int32 nRoundedEdges, sal_Int32 nObjectLines, const rtl::Reference< Diagram > &xDiagram)
static bool lcl_isRightAngledAxesSetAndSupported(Diagram &rDiagram)
static void lcl_setRealisticScheme(drawing::ShadeMode &rShadeMode, sal_Int32 &rnRoundedEdges, sal_Int32 &rnObjectLines)
OOO_DLLPUBLIC_CHARTTOOLS css::uno::Reference< css::chart2::XColorScheme > createConfigColorScheme(const css::uno::Reference< css::uno::XComponentContext > &xContext)
static void lcl_rotateLights(const ::basegfx::B3DHomMatrix &rLightRotation, Diagram &rDiagram)
static bool lcl_isRealisticScheme(drawing::ShadeMode aShadeMode, sal_Int32 nRoundedEdges, sal_Int32 nObjectLines)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
IMPLEMENT_FORWARD_XTYPEPROVIDER2(ChildWindowPane, ChildWindowPaneInterfaceBase, Pane)
IMPLEMENT_FORWARD_XINTERFACE2(ChildWindowPane, ChildWindowPaneInterfaceBase, Pane)
HashMap_OWString_Interface aMap
constexpr OUStringLiteral CHART2_SERVICE_NAME_CHARTTYPE_PIE
constexpr OUStringLiteral CHART2_SERVICE_NAME_CHARTTYPE_FILLED_NET
constexpr OUStringLiteral CHART2_SERVICE_NAME_CHARTTYPE_NET
functor that clones a UNO-Reference
rtl::Reference< ::chart::ChartTypeTemplate > xChartTypeTemplate
css::drawing::Direction3D aDirection
constexpr OUStringLiteral CHART_UNONAME_SORT_BY_XVALUES