23 #include <rtl/ustrbuf.hxx>
33 #include <svx/strings.hrc>
68 virtual void Closed()
override;
70 virtual ::sfx2::SvBaseLink::UpdateResult
DataChanged(
71 const OUString& rMimeType,
const css::uno::Any & rValue )
override;
84 const OUString& rMimeType,
const css::uno::Any & rValue )
89 if( pLinkManager && rValue.hasValue() )
94 if (pLinkManager->GetGraphicFromAny(rMimeType, rValue, aGraphic,
nullptr))
113 SvBaseLink::Closed();
118 return std::make_unique<sdr::properties::GraphicProperties>(*this);
126 return std::make_unique<sdr::contact::ViewContactOfGraphic>(*this);
137 auto const & rVectorGraphicDataPtr =
mpGraphicObject->GetGraphic().getVectorGraphicData();
139 if (!rVectorGraphicDataPtr)
145 if (rVectorGraphicDataPtr->getType() == VectorGraphicDataType::Pdf)
148 const std::deque<css::uno::Reference<css::graphic::XPrimitive2D>>& rContainer(rVectorGraphicDataPtr->getPrimitive2DSequence());
150 if (rContainer.empty())
156 aProcessor.
process(rContainer);
164 OUString aTitle = pResult->
getTitle();
165 OUString aDesc = pResult->
getDesc();
172 if(!aTitle.isEmpty())
186 ,pGraphicLink(nullptr)
188 ,mbIsSignatureLine(
false)
189 ,mbIsSignatureLineShowSignDate(true)
190 ,mbIsSignatureLineCanAddComment(
false)
191 ,mbSignatureLineIsSigned(
false)
210 ,pGraphicLink(nullptr)
267 ,pGraphicLink(nullptr)
269 ,mbIsSignatureLine(
false)
270 ,mbIsSignatureLineShowSignDate(true)
271 ,mbIsSignatureLineCanAddComment(
false)
272 ,mbSignatureLineIsSigned(
false)
293 ,pGraphicLink(nullptr)
295 ,mbIsSignatureLine(
false)
296 ,mbIsSignatureLineShowSignDate(true)
297 ,mbIsSignatureLineCanAddComment(
false)
298 ,mbSignatureLineIsSigned(
false)
340 auto const & rVectorGraphicDataPtr =
mpGraphicObject->GetGraphic().getVectorGraphicData();
342 if (rVectorGraphicDataPtr)
346 else if (
mpGraphicObject->GetGraphic().GetType() == GraphicType::GdiMetafile)
415 GraphicType::NONE != eType )
431 bool bHMirr = nMirrorCase == 2 || nMirrorCase == 4;
432 bool bVMirr = nMirrorCase == 3 || nMirrorCase == 4;
434 aActAttr.
SetMirrorFlags( ( bHMirr ? BmpMirrorFlags::Horizontal : BmpMirrorFlags::NONE ) | ( bVMirr ? BmpMirrorFlags::Vertical : BmpMirrorFlags::NONE ) );
466 if( rGraphicStreamURL.isEmpty() )
494 aSize =
Size ( aCroppedWidth, aCroppedHeight);
519 if( pLinkManager !=
nullptr &&
pGraphicLink ==
nullptr )
557 aGraphic.setOriginURL(
"");
612 auto const & rVectorGraphicDataPtr =
mpGraphicObject->GetGraphic().getVectorGraphicData();
614 OUStringBuffer
sName;
616 if (rVectorGraphicDataPtr)
618 switch (rVectorGraphicDataPtr->getType())
620 case VectorGraphicDataType::Svg:
622 sName.append(
SvxResId(STR_ObjNameSingulGRAFSVG));
625 case VectorGraphicDataType::Wmf:
627 sName.append(
SvxResId(STR_ObjNameSingulGRAFWMF));
630 case VectorGraphicDataType::Emf:
632 sName.append(
SvxResId(STR_ObjNameSingulGRAFEMF));
635 case VectorGraphicDataType::Pdf:
637 sName.append(
SvxResId(STR_ObjNameSingulGRAFPDF));
646 case GraphicType::Bitmap:
649 (
IsLinkedGraphic() ? STR_ObjNameSingulGRAFBMPTRANSLNK : STR_ObjNameSingulGRAFBMPTRANS ) :
650 (
IsLinkedGraphic() ? STR_ObjNameSingulGRAFBMPLNK : STR_ObjNameSingulGRAFBMP ) );
656 case GraphicType::GdiMetafile:
660 case GraphicType::NONE:
672 if (!aName.isEmpty())
679 return sName.makeStringAndClear();
687 auto const & rVectorGraphicDataPtr =
mpGraphicObject->GetGraphic().getVectorGraphicData();
689 OUStringBuffer
sName;
691 if (rVectorGraphicDataPtr)
693 switch (rVectorGraphicDataPtr->getType())
695 case VectorGraphicDataType::Svg:
697 sName.append(
SvxResId(STR_ObjNamePluralGRAFSVG));
700 case VectorGraphicDataType::Wmf:
702 sName.append(
SvxResId(STR_ObjNamePluralGRAFWMF));
705 case VectorGraphicDataType::Emf:
707 sName.append(
SvxResId(STR_ObjNamePluralGRAFEMF));
710 case VectorGraphicDataType::Pdf:
712 sName.append(
SvxResId(STR_ObjNamePluralGRAFPDF));
721 case GraphicType::Bitmap:
724 (
IsLinkedGraphic() ? STR_ObjNamePluralGRAFBMPTRANSLNK : STR_ObjNamePluralGRAFBMPTRANS ) :
725 (
IsLinkedGraphic() ? STR_ObjNamePluralGRAFBMPLNK : STR_ObjNamePluralGRAFBMP ) );
731 case GraphicType::GdiMetafile:
735 case GraphicType::NONE:
747 if (!aName.isEmpty())
754 return sName.makeStringAndClear();
788 tempList.
MoveTo(rHdlList);
798 if( bMirrX != bMirrY )
810 return std::make_unique<SdrGrafObjGeoData>();
829 const bool bRemove(pNewPage ==
nullptr && pOldPage !=
nullptr);
830 const bool bInsert(pNewPage !=
nullptr && pOldPage ==
nullptr);
880 pOut->EnableOutput(
false);
881 pOut->SetMapMode(aMap);
886 aRetval.
Move(-aBoundRect.
Left(), -aBoundRect.
Top());
903 rGraphicType = GraphicType::GdiMetafile;
906 else if (GraphicType::GdiMetafile == rGraphicType)
920 case GraphicType::GdiMetafile:
1002 pRetval = pLineFill.release();
1008 case GraphicType::Bitmap:
1028 case GraphicType::NONE:
1029 case GraphicType::Default:
1067 aGrafInfo.
SetCrop( rCrop.GetLeft(), rCrop.GetTop(), rCrop.GetRight(), rCrop.GetBottom() );
1077 if (
mpGraphicObject->GetPrefMapMode().GetMapUnit() == MapUnit::MapPixel)
1082 MapMode( MapUnit::Map100thMM ) );
1090 if ( (!bShrinkOnly ||
1091 ( aSize.
Height() > aMaxSize.Height() ) ||
1092 ( aSize.
Width() > aMaxSize.Width() ) )&&
1093 aSize.
Height() && aMaxSize.Height() )
1095 float fGrfWH =
static_cast<float>(aSize.
Width()) /
1096 static_cast<float>(aSize.
Height());
1097 float fWinWH =
static_cast<float>(aMaxSize.Width()) /
1098 static_cast<float>(aMaxSize.Height());
1101 if ( fGrfWH < fWinWH )
1103 aSize.
setWidth( static_cast<tools::Long>(aMaxSize.Height() * fGrfWH) );
1106 else if ( fGrfWH > 0.
F )
1108 aSize.
setWidth( aMaxSize.Width() );
1109 aSize.
setHeight( static_cast<tools::Long>(aMaxSize.Width() / fGrfWH) );
1112 aPos = rMaxRect.
Center();
1118 aPos.AdjustX( -(aSize.
Width() / 2) );
1119 aPos.AdjustY( -(aSize.
Height() / 2) );
1141 const void* pSourceData =
static_cast<const void*
>(aLink.GetData());
1142 if( nSize && pSourceData )
1145 memcpy( pBuffer, pSourceData, nSize );
1153 if (!xStream.is() && !
aFileName.isEmpty())
1172 double fShearX(0.0), fRotate(0.0);
1178 aMatrix.
decompose(aScale, aTranslate, fRotate, fShearX);
1196 if(rCrop.GetLeft() || rCrop.GetTop() || rCrop.GetRight() ||rCrop.GetBottom())
1200 double fLclRotate, fLclShearX;
1202 aMatrix.
decompose(aScale, aTranslate, fLclRotate, fLclShearX);
1214 rCrop.GetBottom()));
1217 const double fCropLeft(rCrop.GetLeft() * aCropScaleFactor.
getX());
1218 const double fCropTop(rCrop.GetTop() * aCropScaleFactor.
getY());
1219 const double fCropRight(rCrop.GetRight() * aCropScaleFactor.
getX());
1220 const double fCropBottom(rCrop.GetBottom() * aCropScaleFactor.
getY());
1237 aPreMultiply.
scale(-1.0, 1.0);
1240 aMatrixForCropViewHdl = aMatrixForCropViewHdl * aPreMultiply;
1244 std::make_unique<SdrCropViewHdl>(
1245 aMatrixForCropViewHdl,
1258 aPos = aMatrix * basegfx::B2DPoint(0.5, 0.0);
1260 aPos = aMatrix * basegfx::B2DPoint(1.0, 0.0);
1262 aPos = aMatrix * basegfx::B2DPoint(0.0, 0.5);
1264 aPos = aMatrix * basegfx::B2DPoint(1.0, 0.5);
1266 aPos = aMatrix * basegfx::B2DPoint(0.0, 1.0);
1268 aPos = aMatrix * basegfx::B2DPoint(0.5, 1.0);
1270 aPos = aMatrix * basegfx::B2DPoint(1.0, 1.0);
std::unique_ptr< SdrHdl > RemoveHdl(size_t nNum)
BitmapEx GetBitmapEx(BitmapEx const &rBitmapEx, DrawModeFlags nDrawMode)
virtual void AdjustToMaxRect(const tools::Rectangle &rMaxRect, bool bShrinkOnly=false) override
tools::Long GetBottomCrop() const
virtual SdrObjectUniquePtr DoConvertToPolyObj(bool bBezier, bool bAddText) const override
const OUString & getTitle() const
void SetGamma(double fGamma)
bool mbIsSignatureLineCanAddComment
constexpr TypedWhichId< SdrGrafGamma100Item > SDRATTR_GRAFGAMMA(SDRATTR_GRAF_FIRST+5)
GDIMetaFile getMetafileFromEmbeddedVectorGraphicData() const
OUString maSignatureLineId
virtual void addCropHandles(SdrHdlList &rTarget) const override
virtual void RestoreGeoData(const SdrObjGeoData &rGeo) override
virtual void NbcShear(const Point &rRef, Degree100 nAngle, double tn, bool bVShear) override
void NbcSetGraphic(const Graphic &rGrf)
virtual const tools::Rectangle & GetCurrentBoundRect() const
void setWidth(tools::Long nWidth)
virtual void NbcMirror(const Point &rRef1, const Point &rRef2) override
friend class SdrGraphicLink
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
void SetName(const OUString &rStr, const bool bSetChanged=true)
virtual void NbcResize(const Point &rRef, const Fraction &xFact, const Fraction &yFact) override
GDIMetaFile GetMetaFile(GraphicType &rGraphicType) const
void SetMirrored(bool _bMirrored)
void InsertFileLink(sfx2::SvBaseLink &, SvBaseLinkObjectType nFileType, std::u16string_view rFileNm, const OUString *pFilterNm=nullptr, const OUString *pRange=nullptr)
void SetInvert(bool bInvert)
virtual void NbcInsertObject(SdrObject *pObj, size_t nPos=SAL_MAX_SIZE)
virtual void NbcSetLayer(SdrLayerID nLayer) override
virtual SdrObjectUniquePtr DoConvertToPolyObj(bool bBezier, bool bAddText) const
double mfSinRotationAngle
Size getOriginalSize() const
void SetMirrorFlags(BmpMirrorFlags nMirrFlags)
void setOriginURL(OUString const &rOriginURL)
constexpr TypedWhichId< SdrGrafRedItem > SDRATTR_GRAFRED(SDRATTR_GRAF_FIRST+0)
SdrObjectUniquePtr ImpConvertAddText(SdrObjectUniquePtr pObj, bool bBezier) const
tools::Long GetTopCrop() const
virtual void AddToHdlList(SdrHdlList &rHdlList) const override
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage) override
const GraphicObject & GetGraphicObject(bool bForceSwapIn=false) const
std::unique_ptr< GraphicObject > mpGraphicObject
static void Free(SdrObject *&_rpObject)
OUString maSignatureLineSuggestedSignerEmail
virtual SdrObjectUniquePtr getFullDragClone() const override
GraphicType GetGraphicType() const
All geometrical data of an arbitrary object for use in undo/redo.
void SetDrawMode(GraphicDrawMode eDrawMode)
virtual SdrObjList * GetSubList() const
const OUString & getName() const
Graphic GetTransformedGraphic(const Size &rDestSize, const MapMode &rDestMap, const GraphicAttr &rAttr) const
Size GetGrafPrefSize() const
virtual SdrObjectUniquePtr getFullDragClone() const override
void ImpSetLinkedGraphic(const Graphic &rGraphic)
Rectangle objects (rectangle, circle, ...)
static OutputDevice * GetDefaultDevice()
constexpr tools::Long Width() const
HashMap_OWString_Interface aMap
MapUnit GetScaleUnit() const
std::unique_ptr< css::drawing::BarCode > mpBarCode
virtual void SaveGeoData(SdrObjGeoData &rGeo) const override
B2DHomMatrix createScaleShearXRotateTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fShearX, double fRadiant, double fTranslateX, double fTranslateY)
virtual std::unique_ptr< sdr::contact::ViewContact > CreateObjectSpecificViewContact() override
The transformation of a rectangle into a polygon, by using angle parameters from GeoStat.
OUString SvxResId(TranslateId aId)
void SetGraphic(const Graphic &rGrf)
virtual SdrObjectUniquePtr DoConvertToPolyObj(bool bBezier, bool bAddText) const override
void SetGraphicObject(const GraphicObject &rGrfObj)
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
Detects when a stylesheet is changed.
const SfxItemSet & GetObjectItemSet() const
virtual OUString TakeObjNameSingul() const override
const GDIMetaFile & GetGDIMetaFile() const
void SetMergedItemSet(const SfxItemSet &rSet, bool bClearAllItems=false)
void SetGrafStreamURL(const OUString &rGraphicStreamURL)
constexpr tools::Long getHeight() const
const GeoStat & GetGeoStat() const
bool mbSignatureLineIsSigned
virtual void SetChanged(bool bFlg=true)
virtual void RestoreGeoData(const SdrObjGeoData &rGeo) override
B2IRange fround(const B2DRange &rRange)
virtual void SetBoundAndSnapRectsDirty(bool bNotMyself=false, bool bRecursive=true)
OUString maSignatureLineSigningInstructions
const SfxPoolItem & GetObjectItem(const sal_uInt16 nWhich) const
SdrGraphicLink(SdrGrafObj &rObj)
virtual void SaveGeoData(SdrObjGeoData &rGeo) const override
constexpr TypedWhichId< SdrGrafTransparenceItem > SDRATTR_GRAFTRANSPARENCE(SDRATTR_GRAF_FIRST+6)
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage) override
UNDERLYING_TYPE get() const
Graphic GetTransformedGraphic(SdrGrafObjTransformsAttrs nTransformFlags=SdrGrafObjTransformsAttrs::ALL) const
bool mbSupportTextIndentingOnLineWidthChange
OUString maSignatureLineSuggestedSignerName
virtual void NbcRotate(const Point &rRef, Degree100 nAngle, double sn, double cs) override
css::uno::Reference< css::graphic::XGraphic > mpSignatureLineUnsignedGraphic
constexpr TypedWhichId< SdrGrafLuminanceItem > SDRATTR_GRAFLUMINANCE(SDRATTR_GRAF_FIRST+3)
void SetAlpha(sal_uInt8 cAlpha)
void MoveTo(SdrHdlList &rOther)
void Remove(SvBaseLink const *pLink)
void SetContrast(short nContrastPercent)
void SingleObjectPainter(OutputDevice &rOut) const
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
tools::Long FRound(double fVal)
const GraphicObject * GetReplacementGraphicObject() const
const Graphic & GetGraphic() const
void SetRotation(Degree10 nRotate10)
void BroadcastObjectChange() const
constexpr TypedWhichId< SdrGrafBlueItem > SDRATTR_GRAFBLUE(SDRATTR_GRAF_FIRST+2)
tools::Long GetRightCrop() const
virtual std::unique_ptr< SdrObjGeoData > NewGeoData() const override
A derived class must override these 3 methods if it has own geometric data that must be saved for Und...
void ActionChanged() const
virtual std::unique_ptr< sdr::properties::BaseProperties > CreateObjectSpecificProperties() override
void SetChannelG(short nChannelGPercent)
virtual ~SdrGrafObj() override
SvLinkSource * GetRealObject()
SdrGraphicLink * pGraphicLink
constexpr TypedWhichId< SdrGrafModeItem > SDRATTR_GRAFMODE(SDRATTR_GRAF_FIRST+8)
void scale(double fX, double fY)
SdrModel & getSdrModelFromSdrObject() const
void process(const primitive2d::Primitive2DContainer &rSource)
virtual void SetLogicRect(const tools::Rectangle &rRect)
virtual SdrObjList * GetSubList() const override
OUString getOriginURL() const
MapUnit GetMapUnit() const
virtual void TakeObjInfo(SdrObjTransformInfoRec &rInfo) const override
virtual SdrObjKind GetObjIdentifier() const override
const SfxPoolItem & GetMergedItem(const sal_uInt16 nWhich) const
void SetChannelR(short nChannelRPercent)
This class represents an embedded or linked bitmap graphic object.
GfxLink GetGfxLink() const
SdrGrafObjTransformsAttrs
Options for GetTransformedGraphic()
constexpr TypedWhichId< SdrGrafCropItem > SDRATTR_GRAFCROP(SDRATTR_GRAF_FIRST+9)
void SetGrafAnimationAllowed(bool bNew)
void SetGraphicLink(const OUString &rFileName)
void SetChannelB(short nChannelBPercent)
virtual SdrLayerID GetLayer() const
constexpr TypedWhichId< SdrGrafGreenItem > SDRATTR_GRAFGREEN(SDRATTR_GRAF_FIRST+1)
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
css::uno::Reference< css::io::XInputStream > getInputStream() const
bool IsLinkedGraphic() const
static bool GetDisplayNames(const SvBaseLink *, OUString *pType, OUString *pFile=nullptr, OUString *pLink=nullptr, OUString *pFilter=nullptr)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
constexpr tools::Long Height() const
virtual void NbcResize(const Point &rRef, const Fraction &xFact, const Fraction &yFact) override
virtual OUString TakeObjNamePlural() const override
static SotClipboardFormatId GetFormatIdFromMimeType(const OUString &rMimeType)
void SetLuminance(short nLuminancePercent)
std::unique_ptr< GraphicObject > mpReplacementGraphicObject
void ObjectOwnsMemory(bool bOwn)
bool HasGDIMetaFile() const
tools::Long GetLeftCrop() const
const OUString & getDesc() const
virtual SdrGrafObj * CloneSdrObject(SdrModel &rTargetModel) const override
double mfCosRotationAngle
void SetDescription(const OUString &rStr)
SdrGrafObj(SdrModel &rSdrModel)
sal_Int32 GetNumerator() const
std::unique_ptr< SdrObject, SdrObjectFreeOp > SdrObjectUniquePtr
void ReleaseGraphicLink()
void translate(double fX, double fY)
virtual void NbcMirror(const Point &rRef1, const Point &rRef2) override
virtual void AddToHdlList(SdrHdlList &rHdlList) const override
void setHeight(tools::Long nHeight)
virtual ::sfx2::SvBaseLink::UpdateResult DataChanged(const OUString &rMimeType, const css::uno::Any &rValue) override
sal_uInt32 GetDataSize() const
constexpr TypedWhichId< SdrGrafContrastItem > SDRATTR_GRAFCONTRAST(SDRATTR_GRAF_FIRST+4)
constexpr TypedWhichId< SdrGrafInvertItem > SDRATTR_GRAFINVERT(SDRATTR_GRAF_FIRST+7)
virtual bool TRGetBaseGeometry(basegfx::B2DHomMatrix &rMatrix, basegfx::B2DPolyPolygon &rPolyPolygon) const override
bool LineGeometryUsageIsNecessary() const
bool mbGrafAnimationAllowed
constexpr tools::Long getWidth() const
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
void ImpSetAttrToGrafInfo()
void SetSynchron(bool bFlag)
void SetCrop(tools::Long nLeft_100TH_MM, tools::Long nTop_100TH_MM, tools::Long nRight_100TH_MM, tools::Long nBottom_100TH_MM)
static SotClipboardFormatId RegisterStatusInfoId()
const std::shared_ptr< VectorGraphicData > & getVectorGraphicData() const
GraphicAttr GetGraphicAttr(SdrGrafObjTransformsAttrs nTransformFlags=SdrGrafObjTransformsAttrs::ALL) const
virtual void SetChanged()
bool isEmbeddedVectorGraphicData() const
const OUString & GetName() const
void SetTitle(const OUString &rStr)
bool mbLineIsOutsideGeometry
virtual void Closed() override
OUString const & GetGrafStreamURL() const
OUString maSignatureLineSuggestedSignerTitle
MapMode GetGrafPrefMapMode() const
bool mbIsSignatureLineShowSignDate
void AddHdl(std::unique_ptr< SdrHdl > pHdl)
void FlattenGroups()
Makes the object list flat, i.e.
virtual sal_uInt32 GetHdlCount() const override
Via GetHdlCount the number of Handles can be retrieved.
OutlineText, special text object for StarDraw.
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
Detects when a stylesheet is changed.
bool m_bDetectedRangeSegmentation false
virtual const tools::Rectangle & GetLogicRect() const override