20#include <config_feature_desktop.h>
49#include <servicenames.hxx>
60#include <unonames.hxx>
69#include <rtl/math.hxx>
75#include <osl/mutex.hxx>
81#include <com/sun/star/awt/Point.hpp>
82#include <com/sun/star/chart/ChartAxisPosition.hpp>
83#include <com/sun/star/chart/TimeUnit.hpp>
84#include <com/sun/star/chart2/AxisType.hpp>
85#include <com/sun/star/chart2/StackingDirection.hpp>
86#include <com/sun/star/chart2/RelativePosition.hpp>
87#include <com/sun/star/chart2/RelativeSize.hpp>
88#include <com/sun/star/chart2/data/XPivotTableDataProvider.hpp>
89#include <com/sun/star/chart2/data/PivotTableFieldEntry.hpp>
90#include <com/sun/star/drawing/GraphicExportFilter.hpp>
91#include <com/sun/star/embed/Aspects.hpp>
92#include <com/sun/star/io/XSeekable.hpp>
93#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
94#include <com/sun/star/util/XRefreshable.hpp>
95#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
96#include <com/sun/star/text/XText.hpp>
97#include <com/sun/star/text/XTextDocument.hpp>
98#include <com/sun/star/text/WritingMode2.hpp>
99#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
100#include <com/sun/star/view/XSelectionSupplier.hpp>
107#include <rtl/ustring.hxx>
113#include <libxml/xmlwriter.h>
121using ::com::sun::star::uno::Reference;
122using ::com::sun::star::uno::Sequence;
123using ::com::sun::star::uno::Any;
164 uno::Reference<uno::XComponentContext> xContext,
166 : m_xCC(
std::move(xContext))
167 , mrChartModel(rModel)
169 , m_bInViewUpdate(false)
170 , m_bViewUpdatePending(false)
171 , m_bRefreshAddIn(true)
172 , m_aPageResolution(1000,1000)
173 , m_bPointsWereSkipped(false)
174 , m_nScaleXNumerator(1)
175 , m_nScaleXDenominator(1)
176 , m_nScaleYNumerator(1)
177 , m_nScaleYDenominator(1)
178 , m_bSdrViewIsInEditMode(false)
179 , m_aResultingDiagramRectangleExcludingAxes(0,0,0,0)
229constexpr OUStringLiteral lcl_aGDIMetaFileMIMEType(
230 u
"application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"" );
231constexpr OUStringLiteral lcl_aGDIMetaFileMIMETypeHighContrast(
232 u
"application/x-openoffice-highcontrast-gdimetafile;windows_formatname=\"GDIMetaFile\"" );
236 ,
bool bUseHighContrast )
263 if( xExporter->filter( aProps ) )
266 xOutStream->closeOutput();
275 bool bHighContrastMetaFile( aFlavor.MimeType == lcl_aGDIMetaFileMIMETypeHighContrast);
277 if( ! (bHighContrastMetaFile || aFlavor.MimeType == lcl_aGDIMetaFileMIMEType) )
285 this->
getMetaFile( pStreamWrapper, bHighContrastMetaFile );
287 pStreamWrapper->seek(0);
288 sal_Int32 nBytesToRead = pStreamWrapper->available();
290 pStreamWrapper->readBytes(
aSeq, nBytesToRead);
292 pStreamWrapper->closeInput();
306 return ( aFlavor.MimeType == lcl_aGDIMetaFileMIMEType ||
307 aFlavor.MimeType == lcl_aGDIMetaFileMIMETypeHighContrast );
328 const ::basegfx::B2IRectangle& rDiagramRectangleWithoutAxes )
333 aM.
translate(
double(rDiagramRectangleWithoutAxes.getMinX())
334 ,
double(rDiagramRectangleWithoutAxes.getMinY()+rDiagramRectangleWithoutAxes.getHeight()-1), 0);
347 return xDiagram->isPieOrDonutChart();
350void lcl_setDefaultWritingMode(
const std::shared_ptr< DrawModelWrapper >& pDrawModelWrapper, ChartModel& rModel)
358 sal_Int16 nWritingMode=-1;
359 uno::Reference< beans::XPropertySet > xParentProps( rModel.getParent(), uno::UNO_QUERY );
360 uno::Reference< style::XStyleFamiliesSupplier > xStyleFamiliesSupplier( xParentProps, uno::UNO_QUERY );
361 if( xStyleFamiliesSupplier.is() )
363 uno::Reference< container::XNameAccess > xStylesFamilies( xStyleFamiliesSupplier->getStyleFamilies() );
364 if( xStylesFamilies.is() )
366 if( !xStylesFamilies->hasByName(
"PageStyles" ) )
369 uno::Reference< lang::XMultiServiceFactory > xFatcory( xParentProps, uno::UNO_QUERY );
372 uno::Reference< beans::XPropertySet > xDrawDefaults( xFatcory->createInstance(
"com.sun.star.drawing.Defaults" ), uno::UNO_QUERY );
373 if( xDrawDefaults.is() )
374 xDrawDefaults->getPropertyValue(
"WritingMode" ) >>= nWritingMode;
379 uno::Reference< container::XNameAccess > xPageStyles( xStylesFamilies->getByName(
"PageStyles" ), uno::UNO_QUERY );
380 if( xPageStyles.is() )
384 uno::Reference< text::XTextDocument > xTextDocument( xParentProps, uno::UNO_QUERY );
385 if( xTextDocument.is() )
390 uno::Reference< text::XTextEmbeddedObjectsSupplier > xTextEmbeddedObjectsSupplier( xTextDocument, uno::UNO_QUERY );
391 if( xTextEmbeddedObjectsSupplier.is() )
393 uno::Reference< container::XNameAccess > xEmbeddedObjects( xTextEmbeddedObjectsSupplier->getEmbeddedObjects() );
394 if( xEmbeddedObjects.is() )
396 uno::Sequence< OUString > aNames( xEmbeddedObjects->getElementNames() );
398 sal_Int32
nCount = aNames.getLength();
399 for( sal_Int32 nN=0; nN<
nCount; nN++ )
401 uno::Reference< beans::XPropertySet > xEmbeddedProps( xEmbeddedObjects->getByName( aNames[nN] ), uno::UNO_QUERY );
402 if( xEmbeddedProps.is() )
406 xEmbeddedProps->getPropertyValue(
"CLSID" ) >>= aCLSID;
407 if( aCLSID == aChartCLSID )
409 uno::Reference< text::XTextContent > xEmbeddedObject( xEmbeddedProps, uno::UNO_QUERY );
410 if( xEmbeddedObject.is() )
412 uno::Reference< text::XTextRange > xAnchor( xEmbeddedObject->getAnchor() );
415 uno::Reference< beans::XPropertySet > xAnchorProps( xAnchor, uno::UNO_QUERY );
416 if( xAnchorProps.is() )
418 xAnchorProps->getPropertyValue(
"WritingMode" ) >>= nWritingMode;
420 uno::Reference< text::XText > xText( xAnchor->getText() );
423 uno::Reference< beans::XPropertySet > xTextCursorProps( xText->createTextCursor(), uno::UNO_QUERY );
424 if( xTextCursorProps.is() )
425 xTextCursorProps->getPropertyValue(
"PageStyleName" ) >>= aPageStyle;
435 if( aPageStyle.isEmpty() )
437 uno::Reference< text::XText > xText( xTextDocument->getText() );
440 uno::Reference< beans::XPropertySet > xTextCursorProps( xText->createTextCursor(), uno::UNO_QUERY );
441 if( xTextCursorProps.is() )
442 xTextCursorProps->getPropertyValue(
"PageStyleName" ) >>= aPageStyle;
445 if(aPageStyle.isEmpty())
446 aPageStyle =
"Standard";
451 Reference< com::sun::star::beans::XPropertySetInfo > xInfo = xParentProps->getPropertySetInfo();
452 if (xInfo->hasPropertyByName(
"PageStyle"))
454 xParentProps->getPropertyValue(
"PageStyle" ) >>= aPageStyle;
456 if(aPageStyle.isEmpty())
457 aPageStyle =
"Default";
459 if( nWritingMode == -1 || nWritingMode == text::WritingMode2::PAGE )
461 uno::Reference< beans::XPropertySet > xPageStyle( xPageStyles->getByName( aPageStyle ), uno::UNO_QUERY );
462 Reference< com::sun::star::beans::XPropertySetInfo > xInfo = xPageStyle->getPropertySetInfo();
463 if (xInfo->hasPropertyByName(
"WritingMode"))
465 if( xPageStyle.is() )
466 xPageStyle->getPropertyValue(
"WritingMode" ) >>= nWritingMode;
473 if( nWritingMode != -1 && nWritingMode != text::WritingMode2::PAGE )
475 if( pDrawModelWrapper )
479 catch(
const uno::Exception& )
485sal_Int16 lcl_getDefaultWritingModeFromPool(
const std::shared_ptr<DrawModelWrapper>& pDrawModelWrapper )
487 sal_Int16 nWritingMode = text::WritingMode2::LR_TB;
488 if(!pDrawModelWrapper)
491 const SfxPoolItem& rItem = pDrawModelWrapper->GetItemPool().GetDefaultItem(EE_PARA_WRITINGDIR);
506 return aUsedOuterRect;
508 sal_Int32 nDimensionCount = xDiagram->getDimension();
517 const std::vector< std::unique_ptr<VCoordinateSystem> >& rVCooSysList( rParam.
mpSeriesPlotterContainer->getCooSysList() );
524 for (
auto& rpVCooSys : rVCooSysList)
526 if (nDimensionCount == 3)
531 rpVCooSys->set3DWallPositions( eLeftWallPos, eBackWallPos, eBottomPos );
547 drawing::Direction3D aPreferredAspectRatio =
552 VDiagram aVDiagram(xDiagram, aPreferredAspectRatio, nDimensionCount);
571 for (
auto& rpVCooSys : rVCooSysList)
573 rpVCooSys->initPlottingTargets(xSeriesTargetInFrontOfAxis, xTextTargetShapes, xSeriesTargetBehindAxis);
578 rpVCooSys->initVAxisInList();
588 bool bIsPieOrDonut = lcl_IsPieOrDonut(xDiagram);
589 if( !bIsPieOrDonut && (!rVCooSysList.empty()) )
609 bool bLessSpaceConsumedThanExpected =
false;
617 bLessSpaceConsumedThanExpected =
true;
641 for (
auto& rpVCooSys : rVCooSysList)
646 rpVCooSys->createAxesShapes();
647 rpVCooSys->createGridShapes();
652 for(
const std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
657 xSeriesTarget = xSeriesTargetInFrontOfAxis;
660 xSeriesTarget = xSeriesTargetBehindAxis;
661 OSL_ENSURE( !bIsPieOrDonut,
"not implemented yet! - during a complete recreation this shape is destroyed so no series can be created anymore" );
663 pSeriesPlotter->
initPlotter( xSeriesTarget,xTextTargetShapes,OUString() );
666 if(nDimensionCount==2)
695 for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
697 aPlotter->releaseShapes();
702 xSeriesTargetBehindAxis.clear();
706 for (
auto& rpVCooSys : rVCooSysList)
713 for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
716 if(nDimensionCount==2)
719 aPlotter->setPieLabelsAllowToMove(bIsPieOrDonut);
720 aPlotter->createShapes();
724 for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
725 aPlotter->rearrangeLabelToAvoidOverlapIfRequested(rPageSize);
730 aUsedOuterRect = awt::Rectangle( aConsumedOuterRect.
getMinX(), aConsumedOuterRect.
getMinY(), aConsumedOuterRect.
getWidth(), aConsumedOuterRect.
getHeight() );
735 bool bSnapRectToUsedArea =
false;
736 for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
738 bSnapRectToUsedArea = aPlotter->shouldSnapRectToUsedArea();
739 if(bSnapRectToUsedArea)
742 if(bSnapRectToUsedArea)
768 bool bPosSizeExcludeAxesProperty =
true;
769 xDiagram->getPropertyValue(
"PosSizeExcludeAxes") >>= bPosSizeExcludeAxesProperty;
779 return aUsedOuterRect;
799 sal_Int32 nDimensionIndex=-1;
800 sal_Int32 nAxisIndex=-1;
810 if( rExplicitScale.
AxisType == css::chart2::AxisType::DATE )
816 case css::chart::TimeUnit::DAY:
819 case css::chart::TimeUnit::MONTH:
822 case css::chart::TimeUnit::YEAR:
828 else if( rExplicitScale.
AxisType == css::chart2::AxisType::CATEGORY )
830 else if( rExplicitScale.
AxisType == css::chart2::AxisType::SERIES )
852 assert(xShape2 || !xShape);
876 SdrObject* pRootSdrObject = xShape->GetSdrObject();
882 OUString aShapeName =
"MarkHandles";
884 aShapeName =
"PlotAreaIncludingAxes";
895 awt::Size aSize( xShape->getSize() );
896 awt::Point aPoint( xShape->getPosition() );
897 aRet = awt::Rectangle( aPoint.X, aPoint.Y, aSize.Width, aSize.Height );
901 SdrObject* pSdrObject = xShape->GetSdrObject();
920constexpr double constPageLayoutDistancePercentage = 0.02;
921constexpr sal_Int32 constPageLayoutFixedDistance = 350;
923bool getAvailablePosAndSizeForDiagram(
932 xChartType = xDiagram->getChartTypeByIndex(0);
934 sal_Int32 nXDistance = sal_Int32(rPageSize.Width * constPageLayoutDistancePercentage);
935 sal_Int32 nYDistance = sal_Int32(rPageSize.Height * constPageLayoutDistancePercentage);
940 nXDistance = constPageLayoutFixedDistance;
941 nYDistance = constPageLayoutFixedDistance;
949 bool bPosSizeExcludeAxes =
false;
951 xProp->getPropertyValue(
"PosSizeExcludeAxes" ) >>= bPosSizeExcludeAxes;
954 css::chart2::RelativeSize aRelativeSize;
955 if( xProp.is() && (xProp->getPropertyValue(
"RelativeSize" )>>=aRelativeSize) )
957 rParam.
maRemainingSpace.Height =
static_cast<sal_Int32
>(aRelativeSize.Secondary*rPageSize.Height);
958 rParam.
maRemainingSpace.Width =
static_cast<sal_Int32
>(aRelativeSize.Primary*rPageSize.Width);
966 chart2::RelativePosition aRelativePosition;
967 if( xProp.is() && (xProp->getPropertyValue(
"RelativePosition" )>>=aRelativePosition) )
972 double fX = aRelativePosition.Primary*rPageSize.Width;
973 double fY = aRelativePosition.Secondary*rPageSize.Height;
976 awt::Point(
static_cast<sal_Int32
>(fX),
static_cast<sal_Int32
>(fY)),
978 aRelativePosition.Anchor);
998void changePositionOfAxisTitle( VTitle* pVTitle, TitleAlignment eAlignment
999 , awt::Rectangle
const & rDiagramPlusAxesRect,
const awt::Size & rPageSize )
1004 awt::Point aNewPosition(0,0);
1005 awt::Size aTitleSize = pVTitle->getFinalSize();
1006 sal_Int32 nYDistance =
static_cast<sal_Int32
>(rPageSize.Height * constPageLayoutDistancePercentage);
1007 sal_Int32 nXDistance =
static_cast<sal_Int32
>(rPageSize.Width * constPageLayoutDistancePercentage);
1010 case TitleAlignment::ALIGN_TOP:
1011 aNewPosition = awt::Point( rDiagramPlusAxesRect.X + rDiagramPlusAxesRect.Width/2
1012 , rDiagramPlusAxesRect.Y - aTitleSize.Height/2 - nYDistance );
1014 case TitleAlignment::ALIGN_BOTTOM:
1015 aNewPosition = awt::Point( rDiagramPlusAxesRect.X + rDiagramPlusAxesRect.Width/2
1016 , rDiagramPlusAxesRect.Y + rDiagramPlusAxesRect.Height + aTitleSize.Height/2 + nYDistance );
1018 case TitleAlignment::ALIGN_LEFT:
1019 aNewPosition = awt::Point( rDiagramPlusAxesRect.X - aTitleSize.Width/2 - nXDistance
1020 , rDiagramPlusAxesRect.Y + rDiagramPlusAxesRect.Height/2 );
1022 case TitleAlignment::ALIGN_RIGHT:
1023 aNewPosition = awt::Point( rDiagramPlusAxesRect.X + rDiagramPlusAxesRect.Width + aTitleSize.Width/2 + nXDistance
1024 , rDiagramPlusAxesRect.Y + rDiagramPlusAxesRect.Height/2 );
1026 case TitleAlignment::ALIGN_Z:
1027 aNewPosition = awt::Point( rDiagramPlusAxesRect.X + rDiagramPlusAxesRect.Width + aTitleSize.Width/2 + nXDistance
1028 , rDiagramPlusAxesRect.Y + rDiagramPlusAxesRect.Height - aTitleSize.Height/2 );
1032 sal_Int32 nMaxY = rPageSize.Height - aTitleSize.Height/2;
1033 sal_Int32 nMaxX = rPageSize.Width - aTitleSize.Width/2;
1034 sal_Int32 nMinX = aTitleSize.Width/2;
1035 sal_Int32 nMinY = aTitleSize.Height/2;
1036 if( aNewPosition.Y > nMaxY )
1037 aNewPosition.Y = nMaxY;
1038 if( aNewPosition.X > nMaxX )
1039 aNewPosition.X = nMaxX;
1040 if( aNewPosition.Y < nMinY )
1041 aNewPosition.Y = nMinY;
1042 if( aNewPosition.X < nMinX )
1043 aNewPosition.X = nMinX;
1045 pVTitle->changePosition( aNewPosition );
1050 , ChartModel& rModel
1051 , awt::Rectangle& rRemainingSpace
1052 ,
const awt::Size & rPageSize
1053 , TitleAlignment eAlignment
1054 ,
bool& rbAutoPosition )
1056 std::shared_ptr<VTitle> apVTitle;
1059 double fPercentage = constPageLayoutDistancePercentage;
1060 sal_Int32 nXDistance =
static_cast< sal_Int32
>( rPageSize.Width * fPercentage );
1061 sal_Int32 nYDistance =
static_cast< sal_Int32
>( rPageSize.Height * fPercentage );
1081 awt::Size aTextMaxWidth(rPageSize.Width, rPageSize.Height);
1082 bool bYAxisTitle =
false;
1085 aTextMaxWidth.Width =
static_cast<sal_Int32
>(rPageSize.Width * 0.8);
1086 aTextMaxWidth.Height =
static_cast<sal_Int32
>(rPageSize.Height * 0.5);
1091 aTextMaxWidth.Width =
static_cast<sal_Int32
>(rPageSize.Width * 0.8);
1092 aTextMaxWidth.Height =
static_cast<sal_Int32
>(rPageSize.Height * 0.2);
1097 aTextMaxWidth.Width =
static_cast<sal_Int32
>(rPageSize.Width * 0.2);
1098 aTextMaxWidth.Height =
static_cast<sal_Int32
>(rPageSize.Height * 0.8);
1101 apVTitle = std::make_shared<VTitle>(xTitle);
1103 apVTitle->init(xPageShapes, aCID);
1104 apVTitle->createShapes(awt::Point(0, 0), rPageSize, aTextMaxWidth, bYAxisTitle);
1105 awt::Size aTitleUnrotatedSize = apVTitle->getUnrotatedSize();
1106 awt::Size aTitleSize = apVTitle->getFinalSize();
1109 rbAutoPosition =
true;
1110 awt::Point aNewPosition(0,0);
1111 chart2::RelativePosition aRelativePosition;
1112 if (xTitle.is() && (xTitle->getPropertyValue(
"RelativePosition") >>= aRelativePosition))
1114 rbAutoPosition =
false;
1117 double fX = aRelativePosition.Primary*rPageSize.Width;
1118 double fY = aRelativePosition.Secondary*rPageSize.Height;
1120 double fAnglePi = apVTitle->getRotationAnglePi();
1122 awt::Point(
static_cast<sal_Int32
>(fX),
static_cast<sal_Int32
>(fY))
1123 , aTitleUnrotatedSize, aRelativePosition.Anchor, fAnglePi );
1127 switch( eAlignment )
1129 case TitleAlignment::ALIGN_TOP:
1130 aNewPosition = awt::Point( rRemainingSpace.X + rRemainingSpace.Width/2
1131 , rRemainingSpace.Y + aTitleSize.Height/2 + nYDistance );
1133 case TitleAlignment::ALIGN_BOTTOM:
1134 aNewPosition = awt::Point( rRemainingSpace.X + rRemainingSpace.Width/2
1135 , rRemainingSpace.Y + rRemainingSpace.Height - aTitleSize.Height/2 - nYDistance );
1137 case TitleAlignment::ALIGN_LEFT:
1138 aNewPosition = awt::Point( rRemainingSpace.X + aTitleSize.Width/2 + nXDistance
1139 , rRemainingSpace.Y + rRemainingSpace.Height/2 );
1141 case TitleAlignment::ALIGN_RIGHT:
1142 aNewPosition = awt::Point( rRemainingSpace.X + rRemainingSpace.Width - aTitleSize.Width/2 - nXDistance
1143 , rRemainingSpace.Y + rRemainingSpace.Height/2 );
1145 case TitleAlignment::ALIGN_Z:
1150 apVTitle->changePosition( aNewPosition );
1153 switch( eAlignment )
1155 case TitleAlignment::ALIGN_TOP:
1157 rRemainingSpace.Y += ( aTitleSize.Height + nYDistance );
1158 rRemainingSpace.Height -= ( aTitleSize.Height + nYDistance );
1160 case TitleAlignment::ALIGN_BOTTOM:
1162 rRemainingSpace.Height -= ( aTitleSize.Height + nYDistance );
1164 case TitleAlignment::ALIGN_LEFT:
1166 rRemainingSpace.X += ( aTitleSize.Width + nXDistance );
1167 rRemainingSpace.Width -= ( aTitleSize.Width + nXDistance );
1169 case TitleAlignment::ALIGN_RIGHT:
1171 rRemainingSpace.Width -= ( aTitleSize.Width + nXDistance );
1173 case TitleAlignment::ALIGN_Z:
1182 ,
const uno::Reference< uno::XComponentContext > & xContext
1183 , awt::Rectangle & rRemainingSpace
1184 ,
const awt::Size & rPageSize
1185 , ChartModel& rModel
1186 , std::vector< LegendEntryProvider* >&& rLegendEntryProviderList
1187 , sal_Int16 nDefaultWritingMode )
1192 awt::Size rDefaultLegendSize;
1193 VLegend aVLegend( xLegend, xContext, std::move(rLegendEntryProviderList),
1194 xPageShapes, rModel);
1195 aVLegend.setDefaultWritingMode( nDefaultWritingMode );
1196 aVLegend.createShapes( awt::Size( rRemainingSpace.Width, rRemainingSpace.Height ),
1197 rPageSize, rDefaultLegendSize );
1198 aVLegend.changePosition( rRemainingSpace, rPageSize, rDefaultLegendSize );
1204 awt::Rectangle& rRemainingSpace)
1206 uno::Reference<chart2::data::XPivotTableDataProvider> xPivotTableDataProvider(rModel.getDataProvider(), uno::UNO_QUERY);
1207 if (!xPivotTableDataProvider.is())
1210 uno::Reference<beans::XPropertySet> xModelPage(rModel.getPageBackground());
1212 awt::Size aSize(4000, 700);
1216 if (xPivotTableDataProvider->getPageFields().hasElements())
1220 const css::uno::Sequence<chart2::data::PivotTableFieldEntry> aPivotFieldEntries = xPivotTableDataProvider->getPageFields();
1221 for (css::chart2::data::PivotTableFieldEntry
const & rPageFieldEntry : aPivotFieldEntries)
1224 aButton.init(xPageShapes);
1225 awt::Point aNewPosition(rRemainingSpace.X + x + 100, rRemainingSpace.Y + 100);
1226 sal_Int32 nDimensionIndex = rPageFieldEntry.DimensionIndex;
1227 OUString aFieldOutputDescription = xPivotTableDataProvider->getFieldOutputDescription(nDimensionIndex);
1228 aButton.setLabel(rPageFieldEntry.Name +
" | " + aFieldOutputDescription);
1229 aButton.setCID(
"FieldButton.Page." + OUString::number(nDimensionIndex));
1230 aButton.setPosition(aNewPosition);
1231 aButton.setSize(aSize);
1232 if (rPageFieldEntry.HasHiddenMembers)
1233 aButton.setArrowColor(
Color(0x0000FF));
1235 aButton.createShapes(xModelPage);
1236 x += aSize.Width + 100;
1238 rRemainingSpace.Y += (aSize.Height + 100 + 100);
1239 rRemainingSpace.Height -= (aSize.Height + 100 + 100);
1242 aSize = awt::Size(3000, 700);
1244 if (!xPivotTableDataProvider->getRowFields().hasElements())
1248 const css::uno::Sequence<chart2::data::PivotTableFieldEntry> aPivotFieldEntries = xPivotTableDataProvider->getRowFields();
1249 for (css::chart2::data::PivotTableFieldEntry
const & rRowFieldEntry : aPivotFieldEntries)
1252 aButton.init(xPageShapes);
1253 awt::Point aNewPosition(rRemainingSpace.X + x + 100,
1254 rRemainingSpace.Y + rRemainingSpace.Height - aSize.Height - 100);
1255 aButton.setLabel(rRowFieldEntry.Name);
1256 aButton.setCID(
"FieldButton.Row." + OUString::number(rRowFieldEntry.DimensionIndex));
1257 aButton.setPosition(aNewPosition);
1258 aButton.setSize(aSize);
1259 if ( rRowFieldEntry.Name ==
"Data" )
1261 aButton.setBGColor(
Color(0x00F6F6F6) );
1262 aButton.showArrow(
false );
1264 else if (rRowFieldEntry.HasHiddenMembers)
1265 aButton.setArrowColor(
Color(0x0000FF));
1266 aButton.createShapes(xModelPage);
1267 x += aSize.Width + 100;
1269 rRemainingSpace.Height -= (aSize.Height + 100 + 100);
1273 ChartModel& rChartModel
1274 ,
const awt::Size& rPageSize
1280 uno::Reference< beans::XPropertySet > xModelPage( rChartModel.getPageBackground());
1281 if( ! xModelPage.is())
1289 aNameValueMap.emplace(
"Name",
uno::Any( aCID ) );
1296 xTarget, rPageSize, awt::Point(0, 0), aNames, aValues);
1298 catch(
const uno::Exception & )
1304void lcl_removeEmptyGroupShapes(
const SdrObject& rParent )
1311 for(
auto nIdx =
static_cast<sal_Int32
>(pObjList->
GetObjCount() - 1); nIdx >= 0; --nIdx)
1323 lcl_removeEmptyGroupShapes(*pChildSdrObject);
1341 xProp->getPropertyValue(
"AddIn" ) >>= xAddIn;
1344 bool bRefreshAddInAllowed =
true;
1345 xProp->getPropertyValue(
"RefreshAddInAllowed" ) >>= bRefreshAddInAllowed;
1346 if( bRefreshAddInAllowed )
1350 catch(
const uno::Exception& )
1367 const ::comphelper::ScopeGuard aGuard( [
this]() { this->
impl_refreshAddIn(); } );
1380 awt::Size aPageSize =
mrChartModel.getVisualAreaSize( embed::Aspects::MSOLE_CONTENT );
1389 pPage->
SetSize(
Size(aPageSize.Width,aPageSize.Height));
1393 OSL_FAIL(
"could not set page size correctly");
1427 if (bCheckLockedCtrler &&
mrChartModel.hasControllersLocked())
1468 catch(
const uno::Exception& )
1507 if ( xSelectionSupplier.is() )
1509 OUString aSelObjCID;
1510 uno::Any aSelObj( xSelectionSupplier->getSelection() );
1511 aSelObj >>= aSelObjCID;
1512 if ( !aSelObjCID.isEmpty() )
1519 if (rHint.
GetId() != SfxHintId::ThisIsAnSdrHint)
1523 bool bShapeChanged =
false;
1526 case SdrHintKind::ObjectChange:
1527 bShapeChanged =
true;
1529 case SdrHintKind::ObjectInserted:
1530 bShapeChanged =
true;
1532 case SdrHintKind::ObjectRemoved:
1533 bShapeChanged =
true;
1535 case SdrHintKind::ModelCleared:
1536 bShapeChanged =
true;
1538 case SdrHintKind::EndEdit:
1539 bShapeChanged =
true;
1549 bShapeChanged=
false;
1565 util::ModeChangeEvent
aEvent(
static_cast< uno::XWeak*
>(
this ), rNewMode );
1569 catch(
const uno::Exception& )
1623 OSL_FAIL(
"not implemented");
1628 ,
const Any& rValue )
1630 if( rPropertyName ==
"Resolution" )
1632 awt::Size aNewResolution;
1633 if( ! (rValue >>= aNewResolution) )
1634 throw lang::IllegalArgumentException(
"Property 'Resolution' requires value of type awt::Size",
nullptr, 0 );
1644 this->
modified( lang::EventObject(
static_cast< uno::XWeak*
>(
this ) ) );
1647 else if( rPropertyName ==
"ZoomFactors" )
1651 if( ! (rValue >>= aZoomFactors) )
1652 throw lang::IllegalArgumentException(
"Property 'ZoomFactors' requires value of type Sequence< PropertyValue >",
nullptr, 0 );
1654 sal_Int32 nFilterArgs = aZoomFactors.getLength();
1655 const beans::PropertyValue* pDataValues = aZoomFactors.getConstArray();
1656 while( nFilterArgs-- )
1658 if ( pDataValues->Name ==
"ScaleXNumerator" )
1660 else if ( pDataValues->Name ==
"ScaleXDenominator" )
1662 else if ( pDataValues->Name ==
"ScaleYNumerator" )
1664 else if ( pDataValues->Name ==
"ScaleYDenominator" )
1670 else if( rPropertyName ==
"SdrViewIsInEditMode" )
1674 throw lang::IllegalArgumentException(
"Property 'SdrViewIsInEditMode' requires value of type sal_Bool",
nullptr, 0 );
1677 throw beans::UnknownPropertyException(
"unknown property was tried to set to chart wizard " + rPropertyName,
nullptr );
1682 if( rPropertyName !=
"Resolution" )
1683 throw beans::UnknownPropertyException(
"unknown property was tried to get from chart wizard " + rPropertyName,
nullptr );
1691 OSL_FAIL(
"not implemented");
1696 OSL_FAIL(
"not implemented");
1701 OSL_FAIL(
"not implemented");
1706 OSL_FAIL(
"not implemented");
1718 if ( aServiceSpecifier ==
"com.sun.star.drawing.DashTable" )
1726 else if ( aServiceSpecifier ==
"com.sun.star.drawing.GradientTable" )
1734 else if ( aServiceSpecifier ==
"com.sun.star.drawing.HatchTable" )
1742 else if ( aServiceSpecifier ==
"com.sun.star.drawing.BitmapTable" )
1750 else if ( aServiceSpecifier ==
"com.sun.star.drawing.TransparencyGradientTable" )
1758 else if ( aServiceSpecifier ==
"com.sun.star.drawing.MarkerTable" )
1773 OSL_ENSURE( Arguments.hasElements(),
"ChartView::createInstanceWithArguments: arguments are ignored" );
1780 "com.sun.star.drawing.GradientTable",
1781 "com.sun.star.drawing.HatchTable",
1782 "com.sun.star.drawing.BitmapTable",
1783 "com.sun.star.drawing.TransparencyGradientTable",
1784 "com.sun.star.drawing.MarkerTable" };
1791 if (kind.isEmpty()) {
1796#if HAVE_FEATURE_DESKTOP
1802 for(sal_Int32
i = 0;
i <
n; ++
i)
1813 if(!xSingleShape.is())
1821 return aBuffer.makeStringAndClear();
1829 (void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"ChartView"));
1830 (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST(
"ptr"),
"%p",
this);
1837 (void)xmlTextWriterEndElement(pWriter);
1866 bool bHasRelativeSize =
false;
1867 if( xDiagram.is() && xDiagram->getPropertyValue(
"RelativeSize").hasValue() )
1868 bHasRelativeSize =
true;
1875 xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0,0));
1879 xDiagramPlusAxesPlusMarkHandlesGroup_Shapes, awt::Size(0, 0));
1884 bool bAutoPositionDummy =
true;
1891 aParam.
maRemainingSpace, rPageSize, TitleAlignment::ALIGN_TOP, bAutoPositionDummy);
1897 aParam.
maRemainingSpace, rPageSize, TitleAlignment::ALIGN_TOP, bAutoPositionDummy );
1906 size_t n = rSeriesPlotter.size();
1907 for(
size_t i = 0;
i <
n; ++
i)
1909 std::vector<VDataSeries*> aAllNewDataSeries = rSeriesPlotter[
i]->getAllSeries();
1910 std::vector< VDataSeries* >& rAllOldDataSeries =
1912 size_t m = std::min(aAllNewDataSeries.size(), rAllOldDataSeries.size());
1913 for(
size_t j = 0; j <
m; ++j)
1915 aAllNewDataSeries[j]->setOldTimeBased(
1932 bool bDummy =
false;
1933 bool bIsVertical = xDiagram && xDiagram->getVertical(bDummy, bDummy);
1935 if (getAvailablePosAndSizeForDiagram(aParam, rPageSize, xDiagram))
1941 aParam.
mxPlotAreaWithAxes->setPosition(awt::Point(aUsedOuterRect.X, aUsedOuterRect.Y));
1942 aParam.
mxPlotAreaWithAxes->setSize(awt::Size(aUsedOuterRect.Width, aUsedOuterRect.Height));
1946 awt::Rectangle aDiagramPlusAxesRect( aUsedOuterRect );
1948 changePositionOfAxisTitle(aParam.
mpVTitleX.get(), TitleAlignment::ALIGN_BOTTOM, aDiagramPlusAxesRect, rPageSize);
1950 changePositionOfAxisTitle(aParam.
mpVTitleY.get(), TitleAlignment::ALIGN_LEFT, aDiagramPlusAxesRect, rPageSize);
1952 changePositionOfAxisTitle(aParam.
mpVTitleZ.get(), TitleAlignment::ALIGN_Z, aDiagramPlusAxesRect, rPageSize);
1954 changePositionOfAxisTitle(aParam.
mpVTitleSecondX.get(), bIsVertical? TitleAlignment::ALIGN_RIGHT : TitleAlignment::ALIGN_TOP, aDiagramPlusAxesRect, rPageSize);
1956 changePositionOfAxisTitle(aParam.
mpVTitleSecondY.get(), bIsVertical? TitleAlignment::ALIGN_TOP : TitleAlignment::ALIGN_RIGHT, aDiagramPlusAxesRect, rPageSize);
1960 lcl_removeEmptyGroupShapes( *
mxRootShape->GetSdrObject() );
1966 size_t n = rSeriesPlotter.size();
1969 for(
size_t i = 0;
i <
n; ++
i)
1971 std::vector<VDataSeries*> aAllNewDataSeries = rSeriesPlotter[
i]->getAllSeries();
1973 size_t m = aAllNewDataSeries.size();
1974 for(
size_t j = 0; j <
m; ++j)
1976 rAllOldDataSeries.push_back( aAllNewDataSeries[j]->
1977 createCopyForTimeBased() );
1997 sal_Int32 nDimension = 0;
2000 xChartType = xDiagram->getChartTypeByIndex( 0 );
2001 nDimension = xDiagram->getDimension();
2022 bool bDummy =
false;
2023 bool bIsVertical = xDiagram && xDiagram->getVertical( bDummy, bDummy );
2042extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
2044 css::uno::Sequence<css::uno::Any>
const &)
2047 return cppu::acquire(new ::chart::ChartView(context, *pChartModel));
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_chart2_ChartView_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
FILE * init(int, char **)
void AddDays(sal_Int32 nAddDays)
const SdrPage * GetPage() const
SdrHintKind GetKind() const
SdrObject * GetObj(size_t nNum) const
size_t GetObjCount() const
virtual rtl::Reference< SdrObject > NbcRemoveObject(size_t nObjNum)
virtual css::uno::Reference< css::drawing::XShape > getUnoShape()
virtual SdrObjList * GetSubList() const
virtual const tools::Rectangle & GetSnapRect() const
virtual SdrObjList * getChildrenOfSdrObject() const
virtual void SetSize(const Size &aSiz)
void StartListening(SfxBroadcaster &rBroadcaster, DuplicateHandling eDuplicateHanding=DuplicateHandling::Unexpected)
void EndListening(SfxBroadcaster &rBroadcaster, bool bRemoveAllDuplicates=false)
OUString GetHexName() const
static bool IsCTLFontEnabled()
void SetTimeout(sal_uInt64 nTimeoutMs)
void SetInvokeHandler(const Link< Timer *, void > &rLink)
virtual void Start(bool bStartTimer=true) override
void translate(double fX, double fY, double fZ)
void scale(double fX, double fY, double fZ)
static rtl::Reference< ::chart::BaseCoordinateSystem > getCoordinateSystemOfAxis(const rtl::Reference< ::chart::Axis > &xAxis, const rtl::Reference< ::chart::Diagram > &xDiagram)
static bool getIndicesForAxis(const rtl::Reference< ::chart::Axis > &xAxis, const rtl::Reference< ::chart::BaseCoordinateSystem > &xCooSys, sal_Int32 &rOutDimensionIndex, sal_Int32 &rOutAxisIndex)
static bool isSupportingMainAxis(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount, sal_Int32 nDimensionIndex)
static bool isSupportingSecondaryAxis(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
The ChartView is responsible to manage the generation of Drawing Objects for visualization on a given...
bool createAxisTitleShapes2D(CreateShapeParam2D &rParam, const css::awt::Size &rPageSize, bool bHasRelativeSize)
void impl_updateView(bool bCheckLockedCtrler=true)
virtual void SAL_CALL updateSoft() override
void createShapes2D(const css::awt::Size &rPageSize)
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance(const OUString &aServiceSpecifier) override
virtual bool getExplicitValuesForAxis(rtl::Reference< ::chart::Axis > xAxis, ExplicitScaleData &rExplicitScale, ExplicitIncrementData &rExplicitIncrement) override
virtual void SAL_CALL removePropertyChangeListener(const OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &aListener) override
virtual OUString SAL_CALL getImplementationName() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual ~ChartView() override
comphelper::OInterfaceContainerHelper4< css::util::XModeChangeListener > m_aModeChangeListeners
chart::ChartModel & mrChartModel
virtual void SAL_CALL addVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
bool m_bViewUpdatePending
virtual void SAL_CALL removeVetoableChangeListener(const OUString &PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener > &aListener) override
rtl::Reference< SvxShapeGroupAnyD > mxRootShape
virtual void SAL_CALL removeModeChangeApproveListener(const css::uno::Reference< css::util::XModeChangeApproveListener > &_rxListener) override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
css::awt::Size m_aPageResolution
sal_Int32 m_nScaleYDenominator
virtual rtl::Reference< SvxShape > getShapeForCID(const OUString &rObjectCID) override
virtual void SAL_CALL addPropertyChangeListener(const OUString &aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener > &xListener) override
virtual css::awt::Rectangle getDiagramRectangleExcludingAxes() override
void dumpAsXml(xmlTextWriterPtr pWriter) const
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
virtual void SAL_CALL addModeChangeApproveListener(const css::uno::Reference< css::util::XModeChangeApproveListener > &_rxListener) override
virtual void SAL_CALL addModeChangeListener(const css::uno::Reference< css::util::XModeChangeListener > &_rxListener) override
css::awt::Rectangle m_aResultingDiagramRectangleExcludingAxes
sal_Int32 m_nScaleXNumerator
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments(const OUString &ServiceSpecifier, const css::uno::Sequence< css::uno::Any > &Arguments) override
virtual void SAL_CALL modified(const css::lang::EventObject &aEvent) override
css::uno::Reference< css::lang::XMultiServiceFactory > m_xShapeFactory
virtual void SAL_CALL setPropertyValue(const OUString &aPropertyName, const css::uno::Any &aValue) override
css::uno::Reference< css::uno::XComponentContext > const & getComponentContext()
css::uno::Reference< css::uno::XInterface > m_xHatchTable
css::uno::Reference< css::uno::XInterface > m_xGradientTable
virtual css::uno::Any SAL_CALL getTransferData(const css::datatransfer::DataFlavor &aFlavor) override
std::shared_ptr< DrawModelWrapper > getDrawModelWrapper() override
bool m_bPointsWereSkipped
sal_Int32 m_nScaleXDenominator
css::uno::Reference< css::uno::XInterface > m_xMarkerTable
std::shared_ptr< DrawModelWrapper > m_pDrawModelWrapper
virtual void SAL_CALL updateHard() override
css::uno::Reference< css::uno::XComponentContext > m_xCC
void getMetaFile(const css::uno::Reference< css::io::XOutputStream > &xOutStream, bool bUseHighContrast)
void impl_deleteCoordinateSystems()
css::uno::Reference< css::uno::XInterface > m_xBitmapTable
bool m_bSdrViewIsInEditMode
css::uno::Reference< css::uno::XInterface > m_xTransGradientTable
std::vector< std::unique_ptr< VCoordinateSystem > > m_aVCooSysList
virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > &aArguments) override
virtual css::awt::Rectangle getRectangleOfObject(const OUString &rObjectCID, bool bSnapRect=false) override
virtual css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() override
TimeBasedInfo maTimeBased
virtual css::uno::Sequence< css::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors() override
virtual void SAL_CALL removeModeChangeListener(const css::uno::Reference< css::util::XModeChangeListener > &_rxListener) override
void impl_notifyModeChangeListener(const OUString &rNewMode)
virtual sal_Bool SAL_CALL isDataFlavorSupported(const css::datatransfer::DataFlavor &aFlavor) override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
css::awt::Rectangle impl_createDiagramAndContent(const CreateShapeParam2D &rParam, const css::awt::Size &rPageSize)
rtl::Reference< SvxDrawPage > m_xDrawPage
sal_Int32 m_nScaleYNumerator
virtual css::uno::Any SAL_CALL getPropertyValue(const OUString &PropertyName) override
virtual OUString SAL_CALL dump(OUString const &kind) override
css::uno::Reference< css::uno::XInterface > m_xDashTable
virtual void SAL_CALL update() override
static Date GetDateSomeYearsAway(const Date &rD, sal_Int32 nYearDistance)
static Date GetDateSomeMonthsAway(const Date &rD, sal_Int32 nMonthDistance)
static bool switchDiagramPositioningToExcludingPositioning(ChartModel &rModel, bool bResetModifiedState, bool bConvertAlsoFromAutoPositioning)
SdrObject * getNamedSdrObject(const OUString &rName)
static rtl::Reference< ::chart::Legend > getLegend(ChartModel &rModel, const css::uno::Reference< css::uno::XComponentContext > &xContext=nullptr, bool bCreate=false)
static OUString createClassifiedIdentifier(enum ObjectType eObjectType, std::u16string_view rParticleID)
ObjectType getObjectType() const
static OUString createClassifiedIdentifierForObject(const css::uno::Reference< css::uno::XInterface > &xObject, const rtl::Reference<::chart::ChartModel > &xChartModel)
virtual void setTransformationSceneToScreen(const css::drawing::HomogenMatrix &rMatrix)
virtual void createShapes()=0
virtual void initPlotter(const rtl::Reference< SvxShapeGroupAnyD > &xLogicTarget, const rtl::Reference< SvxShapeGroupAnyD > &xFinalTarget, const OUString &rCID)
static const tPropertyNameMap & getPropertyNameMapForFillAndLineProperties()
static void getMultiPropertyListsFromValueMap(tNameSequence &rNames, tAnySequence &rValues, const tPropertyNameValueMap &rValueMap)
static void getValueMap(tPropertyNameValueMap &rValueMap, const tPropertyNameMap &rNameMap, const css::uno::Reference< css::beans::XPropertySet > &xSourceProp)
Fetch property values from the source object and map it to the destination container.
static css::awt::Point getUpperLeftCornerOfAnchoredObject(css::awt::Point aPoint, css::awt::Size aObjectSize, css::drawing::Alignment aAnchor)
returns the upper left corner of an object that has size aObjectSize and where the point indicated by...
static css::awt::Point getCenterOfAnchoredObject(css::awt::Point aPoint, css::awt::Size aUnrotatedObjectSize, css::drawing::Alignment aAnchor, double fAnglePi)
returns the center of an object that has size aObjectSize and where the point indicated by aAnchor ha...
static VCoordinateSystem * getCooSysForPlotter(const std::vector< std::unique_ptr< VCoordinateSystem > > &rVCooSysList, MinimumAndMaximumSupplier *pMinimumAndMaximumSupplier)
static VCoordinateSystem * findInCooSysList(const std::vector< std::unique_ptr< VCoordinateSystem > > &rVCooSysList, const rtl::Reference< BaseCoordinateSystem > &xCooSys)
static void setShapeName(const rtl::Reference< SvxShape > &xShape, const OUString &rName)
static rtl::Reference< SvxShapeGroupAnyD > getOrCreateChartRootShape(const rtl::Reference< SvxDrawPage > &xPage)
static void setPageSize(const rtl::Reference< SvxShapeGroupAnyD > &xChartShapes, const css::awt::Size &rSize)
static rtl::Reference< SvxShapeRect > createRectangle(const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const css::awt::Size &rSize, const css::awt::Point &rPosition, const tNameSequence &rPropNames, const tAnySequence &rPropValues, StackPosition ePos=StackPosition::Top)
static rtl::Reference< SvxShapeRect > createInvisibleRectangle(const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const css::awt::Size &rSize)
static void removeSubShapes(const rtl::Reference< SvxShapeGroupAnyD > &xShapes)
static rtl::Reference< SvxShapeGroup > createGroup2D(const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const OUString &aName=OUString())
::basegfx::B2IRectangle getRectangleOfShape(SvxShape &rShape)
static CuboidPlanePosition getAutomaticCuboidPlanePositionForStandardBackWall(const rtl::Reference< ::chart::Diagram > &xDiagram)
static CuboidPlanePosition getAutomaticCuboidPlanePositionForStandardLeftWall(const rtl::Reference< ::chart::Diagram > &xDiagram)
static CuboidPlanePosition getAutomaticCuboidPlanePositionForStandardBottom(const rtl::Reference< ::chart::Diagram > &xDiagram)
static rtl::Reference< ::chart::Title > getTitle(eTitleType nTitleIndex, ChartModel &rModel)
@ TITLE_AT_STANDARD_X_AXIS_POSITION
@ TITLE_AT_STANDARD_Y_AXIS_POSITION
static OUString getCompleteString(const rtl::Reference< ::chart::Title > &xTitle)
ExplicitScaleData getExplicitScale(sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex) const
ExplicitIncrementData getExplicitIncrement(sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex) const
void createMaximumAxesLabels()
void setTransformationSceneToScreen(const css::drawing::HomogenMatrix &rMatrix)
virtual css::uno::Sequence< sal_Int32 > getCoordinateSystemResolution(const css::awt::Size &rPageSize, const css::awt::Size &rPageResolution)
const css::drawing::HomogenMatrix & getTransformationSceneToScreen() const
The VDiagram is responsible to generate the visible parts of the Diagram that is wall,...
void reduceToMinimumSize()
basegfx::B2IRectangle getCurrentRectangle() const
Get current bounding rectangle for the diagram without axes.
::basegfx::B2IRectangle adjustInnerSize(const ::basegfx::B2IRectangle &rConsumedOuterRect)
const rtl::Reference< SvxShapeGroupAnyD > & getCoordinateRegion() const
void createShapes(const css::awt::Point &rPos, const css::awt::Size &rSize)
void init(const rtl::Reference< SvxShapeGroupAnyD > &xTarget)
static bool isVisible(const rtl::Reference< ::chart::Legend > &xLegend)
bool PointsWereSkipped() const
void setAvailableOuterRect(const basegfx::B2IRectangle &aAvailableOuterRect)
void setPageReferenceSize(const css::awt::Size &rPageRefSize)
void setCoordinateSystemResolution(const css::uno::Sequence< sal_Int32 > &rCoordinateSystemResolution)
void setPieLabelsAllowToMove(bool bIsPieOrDonut)
bool WantToPlotInFrontOfAxisLine()
static bool isVisible(const rtl::Reference< ::chart::Title > &xTitle)
sal_Int32 addInterface(std::unique_lock< std::mutex > &rGuard, const css::uno::Reference< ListenerT > &rxIFace)
void notifyEach(std::unique_lock< std::mutex > &rGuard, void(SAL_CALL ListenerT::*NotificationMethod)(const EventT &), const EventT &Event) const
sal_Int32 getLength(std::unique_lock< std::mutex > &rGuard) const
sal_Int32 removeInterface(std::unique_lock< std::mutex > &rGuard, const css::uno::Reference< ListenerT > &rxIFace)
constexpr double FIXED_SIZE_FOR_3D_CHART_VOLUME
#define TOOLS_WARN_EXCEPTION(area, stream)
#define DBG_UNHANDLED_EXCEPTION(...)
Sequence< OUString > aServiceNames
struct _xmlTextWriter * xmlTextWriterPtr
#define LINK(Instance, Class, Member)
Sequence< sal_Int8 > aSeq
OOO_DLLPUBLIC_CHARTTOOLS::basegfx::B2IRectangle makeRectangle(const css::awt::Point &rPosition, const css::awt::Size &rSize)
OOO_DLLPUBLIC_CHARTTOOLS css::awt::Rectangle toAwtRectangle(const basegfx::B2IRectangle &rB2IRectangle)
css::uno::Sequence< OUString > tNameSequence
OUString dumpXmlToString(F f)
css::uno::Sequence< css::uno::Any > tAnySequence
::basegfx::B3DHomMatrix createTransformationSceneToScreen(const ::basegfx::B2IRectangle &rDiagramRectangleWithoutAxes)
OOO_DLLPUBLIC_CHARTTOOLS css::drawing::HomogenMatrix B3DHomMatrixToHomogenMatrix(const ::basegfx::B3DHomMatrix &rM)
diverse methods for class conversions; e.g.
std::unordered_map< OUString, css::uno::Any > tPropertyNameValueMap
IMPL_LINK_NOARG(SplinePropertiesDialog, SplineTypeListBoxHdl, weld::ComboBox &, void)
css::beans::PropertyValue makePropertyValue(const OUString &rName, T &&rValue)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
constexpr OUStringLiteral CHART_VIEW_SERVICE_NAME
constexpr OUStringLiteral CHART_VIEW_SERVICE_IMPLEMENTATION_NAME
constexpr OUStringLiteral CHART2_SERVICE_NAME_CHARTTYPE_PIE
static OUString dump(const css::uno::Reference< css::drawing::XShapes > &xPageShapes, bool bDumpInteropProperties=false)
std::shared_ptr< VTitle > mpVTitleSecondY
rtl::Reference< SvxShapeRect > mxPlotAreaWithAxes
rtl::Reference< SvxShapeGroup > mxDiagramWithAxesShapes
rtl::Reference< SvxShapeRect > mxMarkHandles
bool mbAutoPosSecondTitleY
std::shared_ptr< VTitle > mpVTitleSecondX
std::shared_ptr< VTitle > mpVTitleX
std::shared_ptr< VTitle > mpVTitleZ
std::shared_ptr< SeriesPlotterContainer > mpSeriesPlotterContainer
std::shared_ptr< VTitle > mpVTitleY
bool mbAutoPosSecondTitleX
css::awt::Rectangle maRemainingSpace
describes how tickmarks are positioned on the scale of an axis.
This structure contains the explicit values for a scale like Minimum and Maximum.
bool m_bShiftedCategoryPosition
std::vector< std::vector< VDataSeries * > > m_aDataSeriesList
SVXCORE_DLLPUBLIC css::uno::Reference< css::uno::XInterface > SvxUnoDashTable_createInstance(SdrModel *pModel)
SVXCORE_DLLPUBLIC css::uno::Reference< css::uno::XInterface > SvxUnoGradientTable_createInstance(SdrModel *pModel)
SVXCORE_DLLPUBLIC css::uno::Reference< css::uno::XInterface > SvxUnoBitmapTable_createInstance(SdrModel *pModel)
SVXCORE_DLLPUBLIC css::uno::Reference< css::uno::XInterface > SvxUnoMarkerTable_createInstance(SdrModel *pModel)
SVXCORE_DLLPUBLIC css::uno::Reference< css::uno::XInterface > SvxUnoHatchTable_createInstance(SdrModel *pModel)
SVXCORE_DLLPUBLIC css::uno::Reference< css::uno::XInterface > SvxUnoTransGradientTable_createInstance(SdrModel *pModel)
std::unique_ptr< char[]> aBuffer