37#include <officecfg/Office/Common.hxx>
38#include <svx/strings.hrc>
65 const double fLapLeft(rRange.
getMinX() + fDistance);
66 double fLapRight(rRange.
getMinX() + (rRange.
getWidth() * 0.5) - fDistance);
67 const double fLapTop(rRange.
getMinY() - fDistance);
68 const double fLapBottom(fLapTop + (fDistance * 2.0));
69 const double fExtendedTextWidth(fTextWidth + (fDistance * 3.0));
71 if(0.0 != fExtendedTextWidth && fLapLeft + fExtendedTextWidth < fLapRight)
73 fLapRight = fLapLeft + fExtendedTextWidth;
119 double mfDiscreteDistance;
120 double mfDiscreteGap;
128 OverlayDiagramPrimitive(
130 double fDiscreteDistance,
132 Color const & rColor);
137void OverlayDiagramPrimitive::create2DDecomposition(
145 aRange.transform(maTransformation);
148 const double fInnerDistance(mfDiscreteDistance * getDiscreteUnit());
149 const double fOuterDistance((mfDiscreteDistance + mfDiscreteGap) * getDiscreteUnit());
150 bool bCreateLap(
true);
152 double fTextWidth(0.0);
158 const OUString
aName(
SvxResId(RID_STR_DATANAV_EDIT_ELEMENT));
161 std::vector<double> aDXArray;
174 for (
auto const& elem : aTarget)
176 aTextAsPolyPolygon.
append(elem);
183 aTextTransform.
translate(aTextRange.getMinX(), aTextRange.getMinY());
184 const double fTargetTextHeight((mfDiscreteDistance + mfDiscreteGap - 2.0) * getDiscreteUnit());
185 const double fTextScale(fTargetTextHeight / aTextRange.getHeight());
186 aTextTransform.
scale(fTextScale, fTextScale);
188 aRange.getMinX() + (fInnerDistance * 2.0),
189 aRange.getMinY() + fTargetTextHeight + (fOuterDistance - fInnerDistance) - (2.0 * getDiscreteUnit()));
190 aTextAsPolyPolygon.
transform(aTextTransform);
193 fTextWidth = aTextRange.getWidth() * fTextScale;
194 const double fLapLeft(aRange.getMinX() + fInnerDistance);
195 const double fLapRight(aRange.getMinX() + (aRange.getWidth() * 0.5) - fInnerDistance);
200 if(fTextWidth + (4.0 * getDiscreteUnit()) > fLapRight - fLapLeft)
206 createRoundedPolygon(
214 createRoundedPolygon(
220 Color aFillColor(maColor);
221 Color aLineColor(maColor);
223 aFillColor.IncreaseLuminance(10);
224 aLineColor.DecreaseLuminance(30);
227 aLineColor.getBColor(),
228 1.0 * getDiscreteUnit());
231 rContainer.push_back(
234 aFillColor.getBColor()));
238 rContainer.push_back(
240 std::move(aPolyPolygon),
245 const double fLapLeft(aRange.getMinX() + fInnerDistance);
246 const double fLapRight(aRange.getMinX() + (aRange.getWidth() * 0.5) - fInnerDistance);
247 const double fLapUp(aRange.getMinY() - ((mfDiscreteDistance + mfDiscreteDistance * 0.666) * getDiscreteUnit()));
248 const double fLapDown(aRange.getMinY() - ((mfDiscreteDistance + mfDiscreteDistance * 0.333) * getDiscreteUnit()));
257 rContainer.push_back(
259 std::move(aPolygonLapUp),
263 rContainer.push_back(
265 std::move(aPolygonLapDown),
267 std::move(aStrokeAttribute)));
271 if(bCreateLap && 0 != aTextAsPolyPolygon.
count())
273 rContainer.push_back(
275 std::move(aTextAsPolyPolygon),
276 aLineColor.getBColor()));
280OverlayDiagramPrimitive::OverlayDiagramPrimitive(
282 double fDiscreteDistance,
284 Color const & rColor)
285:
drawinglayer::primitive2d::DiscreteMetricDependentPrimitive2D()
287, mfDiscreteDistance(fDiscreteDistance)
288, mfDiscreteGap(fDiscreteGap)
293sal_uInt32 OverlayDiagramPrimitive::getPrimitive2DID()
const
308 explicit OverlayDiagramFrame(
310 Color const & rColor);
313OverlayDiagramFrame::OverlayDiagramFrame(
316:
sdr::overlay::OverlayObject(rColor)
326 if ( !officecfg::Office::Common::Misc::ExperimentalMode::get() )
327 return aReturnContainer;
329 if (getOverlayManager())
332 new OverlayDiagramPrimitive(
339 return aReturnContainer;
344namespace svx {
namespace diagram {
382 std::unique_ptr<sdr::overlay::OverlayObject> pNewOverlayObject(
383 new OverlayDiagramFrame(
389 std::move(pNewOverlayObject),
404: mbUseDiagramThemeData(false)
405, mbUseDiagramModelData(true)
406, mbForceThemePtrRecreation(false)
414 rTarget.mp_DiagramHelper.reset(
this);
422 rTarget.TRGetBaseGeometry(aTransformation, aPolyPolygon);
425 rHdlList.
AddHdl(std::move(pHdl));
const StyleSettings & GetStyleSettings() const
const AllSettings & GetSettings() const
SdrMarkView * GetView() const
void AddHdl(std::unique_ptr< SdrHdl > pHdl)
void insertNewlyCreatedOverlayObjectForSdrHdl(std::unique_ptr< sdr::overlay::OverlayObject > pOverlayObject, const sdr::contact::ObjectContact &rObjectContact, sdr::overlay::OverlayManager &rOverlayManager)
bool areMarkHandlesHidden() const
sal_uInt32 PageWindowCount() const
SdrPageWindow * GetPageWindow(sal_uInt32 nIndex) const
rtl::Reference< sdr::overlay::OverlayManager > const & GetOverlayManager() const
SdrPaintWindow & GetPaintWindow() const
const sdr::contact::ObjectContact & GetObjectContact() const
SdrPageView * GetSdrPageView() const
OutputDevice & GetOutputDevice() const
bool OutputToWindow() const
const Color & GetHighlightColor() const
void translate(double fX, double fY)
void scale(double fX, double fY)
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
void transform(const basegfx::B2DHomMatrix &rMatrix)
B2DRange getB2DRange() const
void append(const basegfx::B2DPoint &rPoint, sal_uInt32 nCount)
void setClosed(bool bNew)
virtual sal_uInt32 getPrimitive2DID() const=0
virtual void create2DDecomposition(Primitive2DContainer &rContainer, const geometry::ViewInformation2D &rViewInformation) const=0
void getTextOutlines(basegfx::B2DPolyPolygonVector &, const OUString &rText, sal_uInt32 nIndex, sal_uInt32 nLength, const ::std::vector< double > &rDXArray) const
virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence()
virtual void CreateB2dIAObject() override
DiagramFrameHdl(const basegfx::B2DHomMatrix &rTransformation)
static void clicked(const Point &rPnt)
basegfx::B2DHomMatrix maTransformation
void anchorToSdrObjGroup(SdrObjGroup &rTarget)
virtual ~IDiagramHelper()
static void AddAdditionalVisualization(const SdrObjGroup &rTarget, SdrHdlList &rHdlList)
OUString SvxResId(TranslateId aId)
B2DPolygon createPolygonFromEllipseSegment(const B2DPoint &rCenter, double fRadiusX, double fRadiusY, double fStart, double fEnd)
::std::vector< B2DPolyPolygon > B2DPolyPolygonVector
bool dispatchCommand(const OUString &rCommand, const uno::Reference< css::frame::XFrame > &rFrame, const css::uno::Sequence< css::beans::PropertyValue > &rArguments, const uno::Reference< css::frame::XDispatchResultListener > &rListener)
basegfx::B2DHomMatrix maTransformation
#define PRIMITIVE2D_ID_OVERLAYDIAGRAMPRIMITIVE2D