summaryrefslogtreecommitdiff
path: root/svx/source/svdraw
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/svdraw')
-rw-r--r--svx/source/svdraw/charthelper.cxx137
-rw-r--r--svx/source/svdraw/svddrgmt.cxx51
-rw-r--r--svx/source/svdraw/svdedtv.cxx61
-rw-r--r--svx/source/svdraw/svdedtv2.cxx100
-rw-r--r--svx/source/svdraw/svdfmtf.cxx74
-rw-r--r--svx/source/svdraw/svdfmtf.hxx39
-rw-r--r--svx/source/svdraw/svdobj.cxx52
-rw-r--r--svx/source/svdraw/svdograf.cxx358
-rw-r--r--svx/source/svdraw/svdoole2.cxx6
-rw-r--r--svx/source/svdraw/svdorect.cxx54
-rw-r--r--svx/source/svdraw/svdstr.src56
-rw-r--r--svx/source/svdraw/svdxcgv.cxx90
12 files changed, 678 insertions, 400 deletions
diff --git a/svx/source/svdraw/charthelper.cxx b/svx/source/svdraw/charthelper.cxx
new file mode 100644
index 000000000000..c4cb613279ed
--- /dev/null
+++ b/svx/source/svdraw/charthelper.cxx
@@ -0,0 +1,137 @@
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#include <svx/charthelper.hxx>
+#include <svtools/embedhlp.hxx>
+#include <tools/globname.hxx>
+#include <sot/clsids.hxx>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/util/XUpdatable.hpp>
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/graphic/XPrimitiveFactory2D.hpp>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+
+//// header for function rtl_createUuid
+//#include <rtl/uuid.h>
+//#include <vcl/pdfextoutdevdata.hxx>
+//
+//#include <com/sun/star/lang/XUnoTunnel.hpp>
+//#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+//#include <svtools/embedhlp.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+using namespace ::com::sun::star;
+
+//////////////////////////////////////////////////////////////////////////////
+
+bool ChartHelper::IsChart(const svt::EmbeddedObjectRef& xObjRef)
+{
+ if(!xObjRef.is())
+ {
+ return false;
+ }
+
+ const SvGlobalName aObjClsId(xObjRef->getClassID());
+
+ if(SvGlobalName(SO3_SCH_CLASSID_30) == aObjClsId
+ || SvGlobalName(SO3_SCH_CLASSID_40) == aObjClsId
+ || SvGlobalName(SO3_SCH_CLASSID_50) == aObjClsId
+ || SvGlobalName(SO3_SCH_CLASSID_60) == aObjClsId)
+ {
+ return true;
+ }
+
+ return false;
+}
+
+drawinglayer::primitive2d::Primitive2DSequence ChartHelper::tryToGetChartContentAsPrimitive2DSequence(
+ const uno::Reference< ::frame::XModel >& rXModel,
+ basegfx::B2DRange& rRange)
+{
+ drawinglayer::primitive2d::Primitive2DSequence aRetval;
+
+ if(rXModel.is())
+ {
+ try
+ {
+ const uno::Reference< lang::XMultiServiceFactory > xChartFact(rXModel, uno::UNO_QUERY_THROW);
+ const uno::Reference< lang::XUnoTunnel > xChartView(xChartFact->createInstance(::rtl::OUString::createFromAscii("com.sun.star.chart2.ChartView")), uno::UNO_QUERY_THROW);
+ const uno::Reference< util::XUpdatable > xUpdatable(xChartView, uno::UNO_QUERY_THROW);
+
+ if(xUpdatable.is())
+ {
+ xUpdatable->update();
+
+ const uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier(rXModel, uno::UNO_QUERY_THROW);
+ const uno::Reference< container::XIndexAccess > xShapeAccess(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW);
+
+ if(xShapeAccess.is() && xShapeAccess->getCount())
+ {
+ const sal_Int32 nShapeCount(xShapeAccess->getCount());
+ const uno::Reference< lang::XMultiServiceFactory > xMgr(::comphelper::getProcessServiceFactory());
+ const uno::Reference< graphic::XPrimitiveFactory2D > xPrimitiveFactory(
+ xMgr->createInstance(
+ String(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.graphic.PrimitiveFactory2D" ))),
+ uno::UNO_QUERY);
+
+ if(xPrimitiveFactory.is())
+ {
+ const uno::Sequence< beans::PropertyValue > aParams;
+ uno::Reference< drawing::XShape > xShape;
+
+ for(sal_Int32 a(0); a < nShapeCount; a++)
+ {
+ xShapeAccess->getByIndex(a) >>= xShape;
+
+ if(xShape.is())
+ {
+ const drawinglayer::primitive2d::Primitive2DSequence aNew(
+ xPrimitiveFactory->createPrimitivesFromXShape(
+ xShape,
+ aParams));
+
+ drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(
+ aRetval,
+ aNew);
+ }
+ }
+ }
+ }
+ }
+ }
+ catch(uno::Exception&)
+ {
+ OSL_ENSURE(false, "Unexpected exception!");
+ }
+
+ if(aRetval.hasElements())
+ {
+ const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+
+ rRange = drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence(aRetval, aViewInformation2D);
+ }
+ }
+
+ return aRetval;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/svx/source/svdraw/svddrgmt.cxx b/svx/source/svdraw/svddrgmt.cxx
index 8c7762ffcf24..c16bbdba6721 100644
--- a/svx/source/svdraw/svddrgmt.cxx
+++ b/svx/source/svdraw/svddrgmt.cxx
@@ -1,31 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include "svddrgm1.hxx"
#include <math.h>
@@ -3610,6 +3600,19 @@ bool SdrDragCrop::EndSdrDrag(bool bCopy)
double fScaleX = ( aGraphicSize.Width() - rOldCrop.GetLeft() - rOldCrop.GetRight() ) / (double)aOldRect.GetWidth();
double fScaleY = ( aGraphicSize.Height() - rOldCrop.GetTop() - rOldCrop.GetBottom() ) / (double)aOldRect.GetHeight();
+ // to correct the never working combination of cropped images and mirroring
+ // I have to correct the rectangles the calculation is based on here. In the current
+ // core geometry stuff a vertical mirror is expressed as 180 degree rotation. All
+ // this can be removed again when aw080 will have cleaned up the old
+ // (non-)transformation mess in the core.
+ if(18000 == pObj->GetGeoStat().nDrehWink)
+ {
+ // old notation of vertical mirror, need to correct diffs since both rects
+ // are rotated by 180 degrees
+ aOldRect = Rectangle(aOldRect.TopLeft() - (aOldRect.BottomRight() - aOldRect.TopLeft()), aOldRect.TopLeft());
+ aNewRect = Rectangle(aNewRect.TopLeft() - (aNewRect.BottomRight() - aNewRect.TopLeft()), aNewRect.TopLeft());
+ }
+
sal_Int32 nDiffLeft = aNewRect.nLeft - aOldRect.nLeft;
sal_Int32 nDiffTop = aNewRect.nTop - aOldRect.nTop;
sal_Int32 nDiffRight = aNewRect.nRight - aOldRect.nRight;
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx
index dfdf7efedddc..4914b98fb689 100644
--- a/svx/source/svdraw/svdedtv.cxx
+++ b/svx/source/svdraw/svdedtv.cxx
@@ -1,31 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include <vcl/metaact.hxx>
#include <svx/svdedtv.hxx>
@@ -47,12 +37,6 @@
// #i13033#
#include <clonelist.hxx>
-////////////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// EditView
-////////////////////////////////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
void SdrEditView::ImpResetPossibilityFlags()
{
bReadOnly =sal_False;
@@ -618,19 +602,20 @@ void SdrEditView::CheckPossibilities()
if (!bOrthoDesiredOnMarked && !aInfo.bNoOrthoDesired) bOrthoDesiredOnMarked=sal_True;
// check ImportMtf
- if (!bImportMtfPossible) {
- sal_Bool bGraf=HAS_BASE(SdrGrafObj,pObj);
- sal_Bool bOle2=HAS_BASE(SdrOle2Obj,pObj);
+ if (!bImportMtfPossible)
+ {
+ const SdrGrafObj* pSdrGrafObj = dynamic_cast< const SdrGrafObj* >(pObj);
+ const SdrOle2Obj* pSdrOle2Obj = dynamic_cast< const SdrOle2Obj* >(pObj);
- if( bGraf &&
- ((SdrGrafObj*)pObj)->HasGDIMetaFile() &&
- !( ((SdrGrafObj*)pObj)->IsEPS() || ((SdrGrafObj*)pObj)->IsRenderGraphic() ) )
+ if(pSdrGrafObj && ((pSdrGrafObj->HasGDIMetaFile() && !pSdrGrafObj->IsEPS()) || pSdrGrafObj->isEmbeddedSvg()))
{
bImportMtfPossible = sal_True;
}
- if (bOle2)
- bImportMtfPossible=((SdrOle2Obj*)pObj)->GetObjRef().is();
+ if(pSdrOle2Obj)
+ {
+ bImportMtfPossible = pSdrOle2Obj->GetObjRef().is();
+ }
}
}
diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx
index 4fd186a518e5..d97a83275d71 100644
--- a/svx/source/svdraw/svdedtv2.cxx
+++ b/svx/source/svdraw/svdedtv2.cxx
@@ -1,31 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include <svx/svdedtv.hxx>
#include <editeng/outliner.hxx>
@@ -2016,30 +2006,78 @@ void SdrEditView::DoImportMarkedMtf(SvdProgressInfo *pProgrInfo)
SdrGrafObj* pGraf=PTR_CAST(SdrGrafObj,pObj);
SdrOle2Obj* pOle2=PTR_CAST(SdrOle2Obj,pObj);
sal_uIntPtr nInsAnz=0;
- if (pGraf!=NULL && pGraf->HasGDIMetaFile())
+ Rectangle aLogicRect;
+
+ if(pGraf && (pGraf->HasGDIMetaFile() || pGraf->isEmbeddedSvg()))
{
- ImpSdrGDIMetaFileImport aFilter(*pMod);
- aFilter.SetScaleRect(pGraf->GetSnapRect());
- aFilter.SetLayer(pObj->GetLayer());
- nInsAnz=aFilter.DoImport(pGraf->GetTransformedGraphic().GetGDIMetaFile(),*pOL,nInsPos,pProgrInfo);
+ GDIMetaFile aMetaFile;
+
+ if(pGraf->HasGDIMetaFile())
+ {
+ aMetaFile = pGraf->GetTransformedGraphic(
+ SDRGRAFOBJ_TRANSFORMATTR_COLOR|SDRGRAFOBJ_TRANSFORMATTR_MIRROR).GetGDIMetaFile();
+ }
+ else if(pGraf->isEmbeddedSvg())
+ {
+ aMetaFile = pGraf->getMetafileFromEmbeddedSvg();
+ }
+
+ if(aMetaFile.GetActionSize())
+ {
+ ImpSdrGDIMetaFileImport aFilter(*pMod);
+
+ aLogicRect = pGraf->GetLogicRect();
+ aFilter.SetScaleRect(aLogicRect);
+ aFilter.SetLayer(pObj->GetLayer());
+
+ nInsAnz = aFilter.DoImport(aMetaFile, *pOL, nInsPos, pProgrInfo);
+ }
}
if ( pOle2!=NULL && pOle2->GetGraphic() )
{
ImpSdrGDIMetaFileImport aFilter(*pMod);
- aFilter.SetScaleRect(pOle2->GetLogicRect());
+
+ aLogicRect = pOle2->GetLogicRect();
+ aFilter.SetScaleRect(aLogicRect);
aFilter.SetLayer(pObj->GetLayer());
nInsAnz=aFilter.DoImport(pOle2->GetGraphic()->GetGDIMetaFile(),*pOL,nInsPos,pProgrInfo);
}
if (nInsAnz!=0)
{
+ // transformation
+ GeoStat aGeoStat(pGraf ? pGraf->GetGeoStat() : pOle2->GetGeoStat());
sal_uIntPtr nObj=nInsPos;
+
+ if(aGeoStat.nShearWink)
+ {
+ aGeoStat.RecalcTan();
+ }
+
+ if(aGeoStat.nDrehWink)
+ {
+ aGeoStat.RecalcSinCos();
+ }
+
for (sal_uIntPtr i=0; i<nInsAnz; i++)
{
if( bUndo )
AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoNewObject(*pOL->GetObj(nObj)));
// update new MarkList
- SdrMark aNewMark(pOL->GetObj(nObj), pPV);
+ SdrObject* pCandidate = pOL->GetObj(nObj);
+
+ // apply original transformation
+ if(aGeoStat.nShearWink)
+ {
+ pCandidate->NbcShear(aLogicRect.TopLeft(), aGeoStat.nShearWink, aGeoStat.nTan, false);
+ }
+
+ if(aGeoStat.nDrehWink)
+ {
+ pCandidate->NbcRotate(aLogicRect.TopLeft(), aGeoStat.nDrehWink, aGeoStat.nSin, aGeoStat.nCos);
+ }
+
+ SdrMark aNewMark(pCandidate, pPV);
aNewMarked.InsertEntry(aNewMark);
nObj++;
diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx
index b8c007ea97fb..1fd41d246214 100644
--- a/svx/source/svdraw/svdfmtf.cxx
+++ b/svx/source/svdraw/svdfmtf.cxx
@@ -1,31 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include "svdfmtf.hxx"
#include <editeng/editdata.hxx>
@@ -40,6 +30,7 @@
#include <editeng/crsditem.hxx>
#include <editeng/shdditem.hxx>
#include <svx/xlnclit.hxx>
+#include <svx/xlncapit.hxx>
#include <svx/xlnwtit.hxx>
#include <svx/xflclit.hxx>
#include <svx/xgrad.hxx>
@@ -79,6 +70,7 @@ ImpSdrGDIMetaFileImport::ImpSdrGDIMetaFileImport(SdrModel& rModel):
pPage(NULL),pModel(NULL),nLayer(0),
nLineWidth(0),
maLineJoin(basegfx::B2DLINEJOIN_NONE),
+ maLineCap(com::sun::star::drawing::LineCap_BUTT),
maDash(XDASH_RECT, 0, 0, 0, 0, 0),
fScaleX(0.0),fScaleY(0.0),
bFntDirty(sal_True),
@@ -195,7 +187,6 @@ sal_uIntPtr ImpSdrGDIMetaFileImport::DoImport(const GDIMetaFile& rMtf,
case META_POP_ACTION : DoAction((MetaPopAction &)*pAct); break;
case META_HATCH_ACTION : DoAction((MetaHatchAction &)*pAct); break;
case META_COMMENT_ACTION : DoAction((MetaCommentAction &)*pAct, pMtf); break;
- case META_RENDERGRAPHIC_ACTION : DoAction((MetaRenderGraphicAction &)*pAct); break;
}
if(pProgrInfo != NULL)
@@ -309,6 +300,9 @@ void ImpSdrGDIMetaFileImport::SetAttributes(SdrObject* pObj, bool bForceTextAttr
break;
}
+ // Add LineCap support
+ pLineAttr->Put(XLineCapItem(maLineCap));
+
if(((maDash.GetDots() && maDash.GetDotLen()) || (maDash.GetDashes() && maDash.GetDashLen())) && maDash.GetDistance())
{
pLineAttr->Put(XLineDashItem(String(), maDash));
@@ -354,10 +348,13 @@ void ImpSdrGDIMetaFileImport::SetAttributes(SdrObject* pObj, bool bForceTextAttr
pTextAttr->Put(SvxOverlineItem(aFnt.GetOverline(), EE_CHAR_OVERLINE));
pTextAttr->Put(SvxCrossedOutItem(aFnt.GetStrikeout(), EE_CHAR_STRIKEOUT));
pTextAttr->Put(SvxShadowedItem(aFnt.IsShadow(), EE_CHAR_SHADOW));
- pTextAttr->Put(SvxAutoKernItem(aFnt.IsKerning(), EE_CHAR_KERNING));
+
+ // #i118485# Setting this item leads to problems (written #i118498# for this)
+ // pTextAttr->Put(SvxAutoKernItem(aFnt.IsKerning(), EE_CHAR_KERNING));
+
pTextAttr->Put(SvxWordLineModeItem(aFnt.IsWordLineMode(), EE_CHAR_WLM));
pTextAttr->Put(SvxContourItem(aFnt.IsOutline(), EE_CHAR_OUTLINE));
- pTextAttr->Put(SvxColorItem(aFnt.GetColor(), EE_CHAR_COLOR));
+ pTextAttr->Put(SvxColorItem(aVD.GetTextColor(), EE_CHAR_COLOR));
//... svxfont textitem svditext
bFntDirty=sal_False;
}
@@ -480,6 +477,7 @@ void ImpSdrGDIMetaFileImport::DoAction(MetaLineAction& rAct)
SdrPathObj* pPath = new SdrPathObj(OBJ_LINE, basegfx::B2DPolyPolygon(aLine));
nLineWidth = nNewLineWidth;
maLineJoin = rLineInfo.GetLineJoin();
+ maLineCap = rLineInfo.GetLineCap();
maDash = XDash(XDASH_RECT,
rLineInfo.GetDotCount(), rLineInfo.GetDotLen(),
rLineInfo.GetDashCount(), rLineInfo.GetDashLen(),
@@ -685,6 +683,7 @@ void ImpSdrGDIMetaFileImport::DoAction( MetaPolyLineAction& rAct )
basegfx::B2DPolyPolygon(aSource));
nLineWidth = nNewLineWidth;
maLineJoin = rLineInfo.GetLineJoin();
+ maLineCap = rLineInfo.GetLineCap();
maDash = XDash(XDASH_RECT,
rLineInfo.GetDotCount(), rLineInfo.GetDotLen(),
rLineInfo.GetDashCount(), rLineInfo.GetDashLen(),
@@ -1021,25 +1020,4 @@ void ImpSdrGDIMetaFileImport::DoAction( MetaCommentAction& rAct, GDIMetaFile* pM
}
}
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-void ImpSdrGDIMetaFileImport::DoAction(MetaRenderGraphicAction& rAct)
-{
- GDIMetaFile aMtf;
- const ::vcl::RenderGraphic& rRenderGraphic = rAct.GetRenderGraphic();
- Rectangle aRect( rAct.GetPoint(), rAct.GetSize() );
- const Point aPos;
- const Size aPrefSize( rRenderGraphic.GetPrefSize() );
-
- aRect.Right()++; aRect.Bottom()++;
-
- aMtf.SetPrefMapMode( rRenderGraphic.GetPrefMapMode() );
- aMtf.SetPrefSize( aPrefSize );
- aMtf.AddAction( new MetaRenderGraphicAction( aPos, aPrefSize, rRenderGraphic ) );
- aMtf.WindStart();
-
- SdrGrafObj* pGraf=new SdrGrafObj( aMtf, aRect );
- InsertObj( pGraf );
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/svdraw/svdfmtf.hxx b/svx/source/svdraw/svdfmtf.hxx
index f0fc89ec4f09..5f31f583e45e 100644
--- a/svx/source/svdraw/svdfmtf.hxx
+++ b/svx/source/svdraw/svdfmtf.hxx
@@ -1,30 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#ifndef _SVDFMTF_HXX
#define _SVDFMTF_HXX
@@ -65,6 +56,7 @@ protected:
Color aOldLineColor;
sal_Int32 nLineWidth;
basegfx::B2DLineJoin maLineJoin;
+ com::sun::star::drawing::LineCap maLineCap;
XDash maDash;
sal_Bool bMov;
@@ -121,7 +113,6 @@ protected:
void DoAction(MetaISectRectClipRegionAction& rAct) { rAct.Execute(&aVD); }
void DoAction(MetaISectRegionClipRegionAction& rAct) { rAct.Execute(&aVD); }
void DoAction(MetaCommentAction& rAct, GDIMetaFile* pMtf);
- void DoAction(MetaRenderGraphicAction& rAct);
void ImportText( const Point& rPos, const XubString& rStr, const MetaAction& rAct );
void SetAttributes(SdrObject* pObj, bool bForceTextAttr = false);
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index 1bff49d54bc7..51b908955bbf 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -1,30 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include <com/sun/star/lang/XComponent.hpp>
@@ -1201,10 +1192,10 @@ basegfx::B2DPolyPolygon SdrObject::TakeContour() const
// use neutral ViewInformation
const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
- // create extractor, process and get result
- drawinglayer::processor2d::ContourExtractor2D aExtractor(aViewInformation2D);
+ // create extractor, process and get result (with hairlines as opened polygons)
+ drawinglayer::processor2d::ContourExtractor2D aExtractor(aViewInformation2D, false);
aExtractor.process(xSequence);
- const std::vector< basegfx::B2DPolyPolygon >& rResult(aExtractor.getExtractedContour());
+ const basegfx::B2DPolyPolygonVector& rResult(aExtractor.getExtractedContour());
const sal_uInt32 nSize(rResult.size());
// when count is one, it is implied that the object has only its normal
@@ -2411,7 +2402,7 @@ SdrObject* SdrObject::ImpConvertToContourObj(SdrObject* pRet, bool bForceLineDas
aExtractor.process(xSequence);
// #i102241# check for line results
- const std::vector< basegfx::B2DPolygon >& rHairlineVector = aExtractor.getExtractedHairlines();
+ const basegfx::B2DPolygonVector& rHairlineVector = aExtractor.getExtractedHairlines();
if(!rHairlineVector.empty())
{
@@ -2423,7 +2414,7 @@ SdrObject* SdrObject::ImpConvertToContourObj(SdrObject* pRet, bool bForceLineDas
}
// #i102241# check for fill rsults
- const std::vector< basegfx::B2DPolyPolygon >& rLineFillVector(aExtractor.getExtractedLineFills());
+ const basegfx::B2DPolyPolygonVector& rLineFillVector(aExtractor.getExtractedLineFills());
if(!rLineFillVector.empty())
{
@@ -2698,7 +2689,7 @@ SdrObject* SdrObject::ConvertToContourObj(SdrObject* pRet, bool bForceLineDash)
SdrObject* SdrObject::ConvertToPolyObj(bool bBezier, bool bLineToArea) const
{
- SdrObject* pRet = DoConvertToPolyObj(bBezier);
+ SdrObject* pRet = DoConvertToPolyObj(bBezier /*, true */); // FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
if(pRet && bLineToArea)
{
@@ -2718,7 +2709,8 @@ SdrObject* SdrObject::ConvertToPolyObj(bool bBezier, bool bLineToArea) const
////////////////////////////////////////////////////////////////////////////////////////////////////
-SdrObject* SdrObject::DoConvertToPolyObj(sal_Bool /*bBezier*/) const
+// FIXME_REMOVE_WHEN_RE_BASE_COMPLETE comment ..
+SdrObject* SdrObject::DoConvertToPolyObj(sal_Bool /*bBezier*/ /*, bool */ /*bAddText*/) const
{
return NULL;
}
diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
index bc9d0f7f2fa4..f3d0f22a7403 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -1,30 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include <unotools/streamwrap.hxx>
@@ -324,8 +315,11 @@ SdrGrafObj::SdrGrafObj()
bMirrored ( false )
{
pGraphic = new GraphicObject;
+ mpReplacementGraphic = 0;
pGraphic->SetSwapStreamHdl( LINK( this, SdrGrafObj, ImpSwapHdl ), SWAPGRAPHIC_TIMEOUT );
- bNoShear = true;
+
+ // #i118485# Shear allowed and possible now
+ bNoShear = false;
mbGrafAnimationAllowed = true;
@@ -346,8 +340,11 @@ SdrGrafObj::SdrGrafObj(const Graphic& rGrf, const Rectangle& rRect)
bMirrored ( false )
{
pGraphic = new GraphicObject( rGrf );
+ mpReplacementGraphic = 0;
pGraphic->SetSwapStreamHdl( LINK( this, SdrGrafObj, ImpSwapHdl ), SWAPGRAPHIC_TIMEOUT );
- bNoShear = true;
+
+ // #i118485# Shear allowed and possible now
+ bNoShear = false;
mbGrafAnimationAllowed = true;
@@ -368,8 +365,11 @@ SdrGrafObj::SdrGrafObj( const Graphic& rGrf )
bMirrored ( false )
{
pGraphic = new GraphicObject( rGrf );
+ mpReplacementGraphic = 0;
pGraphic->SetSwapStreamHdl( LINK( this, SdrGrafObj, ImpSwapHdl ), SWAPGRAPHIC_TIMEOUT );
- bNoShear = true;
+
+ // #i118485# Shear allowed and possible now
+ bNoShear = false;
mbGrafAnimationAllowed = true;
@@ -387,6 +387,7 @@ SdrGrafObj::SdrGrafObj( const Graphic& rGrf )
SdrGrafObj::~SdrGrafObj()
{
delete pGraphic;
+ delete mpReplacementGraphic;
ImpLinkAbmeldung();
}
@@ -395,6 +396,8 @@ SdrGrafObj::~SdrGrafObj()
void SdrGrafObj::SetGraphicObject( const GraphicObject& rGrfObj )
{
*pGraphic = rGrfObj;
+ delete mpReplacementGraphic;
+ mpReplacementGraphic = 0;
pGraphic->SetSwapStreamHdl( LINK( this, SdrGrafObj, ImpSwapHdl ), SWAPGRAPHIC_TIMEOUT );
pGraphic->SetUserData();
mbIsPreview = false;
@@ -414,11 +417,28 @@ const GraphicObject& SdrGrafObj::GetGraphicObject(bool bForceSwapIn) const
return *pGraphic;
}
+const GraphicObject* SdrGrafObj::GetReplacementGraphicObject() const
+{
+ if(!mpReplacementGraphic && pGraphic)
+ {
+ const SvgDataPtr& rSvgDataPtr = pGraphic->GetGraphic().getSvgData();
+
+ if(rSvgDataPtr.get())
+ {
+ const_cast< SdrGrafObj* >(this)->mpReplacementGraphic = new GraphicObject(rSvgDataPtr->getReplacement());
+ }
+ }
+
+ return mpReplacementGraphic;
+}
+
// -----------------------------------------------------------------------------
void SdrGrafObj::NbcSetGraphic( const Graphic& rGrf )
{
pGraphic->SetGraphic( rGrf );
+ delete mpReplacementGraphic;
+ mpReplacementGraphic = 0;
pGraphic->SetUserData();
mbIsPreview = false;
}
@@ -497,16 +517,6 @@ bool SdrGrafObj::IsEPS() const
return pGraphic->IsEPS();
}
-bool SdrGrafObj::IsRenderGraphic() const
-{
- return pGraphic->IsRenderGraphic();
-}
-
-bool SdrGrafObj::HasRenderGraphic() const
-{
- return pGraphic->HasRenderGraphic();
-}
-
bool SdrGrafObj::IsSwappedOut() const
{
return mbIsPreview ? true : pGraphic->IsSwappedOut();
@@ -661,7 +671,6 @@ const rtl::OUString& SdrGrafObj::GetFilterName() const
void SdrGrafObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
{
bool bAnim = pGraphic->IsAnimated();
- bool bRenderGraphic = pGraphic->HasRenderGraphic();
bool bNoPresGrf = ( pGraphic->GetType() != GRAPHIC_NONE ) && !bEmptyPresObj;
rInfo.bResizeFreeAllowed = aGeo.nDrehWink % 9000 == 0 ||
@@ -669,19 +678,22 @@ void SdrGrafObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
aGeo.nDrehWink % 27000 == 0;
rInfo.bResizePropAllowed = true;
- rInfo.bRotateFreeAllowed = bNoPresGrf && !bAnim && !bRenderGraphic;
- rInfo.bRotate90Allowed = bNoPresGrf && !bAnim && !bRenderGraphic;
- rInfo.bMirrorFreeAllowed = bNoPresGrf && !bAnim && !bRenderGraphic;
- rInfo.bMirror45Allowed = bNoPresGrf && !bAnim && !bRenderGraphic;
- rInfo.bMirror90Allowed = !bEmptyPresObj && !bRenderGraphic;
+ rInfo.bRotateFreeAllowed = bNoPresGrf && !bAnim;
+ rInfo.bRotate90Allowed = bNoPresGrf && !bAnim;
+ rInfo.bMirrorFreeAllowed = bNoPresGrf && !bAnim;
+ rInfo.bMirror45Allowed = bNoPresGrf && !bAnim;
+ rInfo.bMirror90Allowed = !bEmptyPresObj;
rInfo.bTransparenceAllowed = false;
rInfo.bGradientAllowed = false;
- rInfo.bShearAllowed = false;
+
+ // #i118485# Shear allowed and possible now
+ rInfo.bShearAllowed = true;
+
rInfo.bEdgeRadiusAllowed=false;
- rInfo.bCanConvToPath = false;
+ rInfo.bCanConvToPath = !IsEPS();
rInfo.bCanConvToPathLineToArea = false;
rInfo.bCanConvToPolyLineToArea = false;
- rInfo.bCanConvToPoly = !IsEPS() && !bRenderGraphic;
+ rInfo.bCanConvToPoly = !IsEPS();
rInfo.bCanConvToContour = (rInfo.bCanConvToPoly || LineGeometryUsageIsNecessary());
}
@@ -726,38 +738,50 @@ void SdrGrafObj::ImpSetLinkedGraphic( const Graphic& rGraphic )
void SdrGrafObj::TakeObjNameSingul(XubString& rName) const
{
- switch( pGraphic->GetType() )
+ if(pGraphic)
{
- case GRAPHIC_BITMAP:
- {
- const sal_uInt16 nId = ( ( pGraphic->IsTransparent() || ( (const SdrGrafTransparenceItem&) GetObjectItem( SDRATTR_GRAFTRANSPARENCE ) ).GetValue() ) ?
- ( IsLinkedGraphic() ? STR_ObjNameSingulGRAFBMPTRANSLNK : STR_ObjNameSingulGRAFBMPTRANS ) :
- ( IsLinkedGraphic() ? STR_ObjNameSingulGRAFBMPLNK : STR_ObjNameSingulGRAFBMP ) );
+ const SvgDataPtr& rSvgDataPtr = pGraphic->GetGraphic().getSvgData();
- rName=ImpGetResStr( nId );
+ if(rSvgDataPtr.get())
+ {
+ rName = ImpGetResStr(STR_ObjNameSingulGRAFSVG);
}
- break;
+ else
+ {
+ switch( pGraphic->GetType() )
+ {
+ case GRAPHIC_BITMAP:
+ {
+ const sal_uInt16 nId = ( ( pGraphic->IsTransparent() || ( (const SdrGrafTransparenceItem&) GetObjectItem( SDRATTR_GRAFTRANSPARENCE ) ).GetValue() ) ?
+ ( IsLinkedGraphic() ? STR_ObjNameSingulGRAFBMPTRANSLNK : STR_ObjNameSingulGRAFBMPTRANS ) :
+ ( IsLinkedGraphic() ? STR_ObjNameSingulGRAFBMPLNK : STR_ObjNameSingulGRAFBMP ) );
- case GRAPHIC_GDIMETAFILE:
- rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNameSingulGRAFMTFLNK : STR_ObjNameSingulGRAFMTF );
- break;
+ rName=ImpGetResStr( nId );
+ }
+ break;
- case GRAPHIC_NONE:
- rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNameSingulGRAFNONELNK : STR_ObjNameSingulGRAFNONE );
- break;
+ case GRAPHIC_GDIMETAFILE:
+ rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNameSingulGRAFMTFLNK : STR_ObjNameSingulGRAFMTF );
+ break;
- default:
- rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNameSingulGRAFLNK : STR_ObjNameSingulGRAF );
- break;
- }
+ case GRAPHIC_NONE:
+ rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNameSingulGRAFNONELNK : STR_ObjNameSingulGRAFNONE );
+ break;
- const String aName(GetName());
+ default:
+ rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNameSingulGRAFLNK : STR_ObjNameSingulGRAF );
+ break;
+ }
+ }
- if( aName.Len() )
- {
- rName.AppendAscii( " '" );
- rName += aName;
- rName += sal_Unicode( '\'' );
+ const String aName(GetName());
+
+ if( aName.Len() )
+ {
+ rName.AppendAscii( " '" );
+ rName += aName;
+ rName += sal_Unicode( '\'' );
+ }
}
}
@@ -765,38 +789,50 @@ void SdrGrafObj::TakeObjNameSingul(XubString& rName) const
void SdrGrafObj::TakeObjNamePlural( XubString& rName ) const
{
- switch( pGraphic->GetType() )
+ if(pGraphic)
{
- case GRAPHIC_BITMAP:
- {
- const sal_uInt16 nId = ( ( pGraphic->IsTransparent() || ( (const SdrGrafTransparenceItem&) GetObjectItem( SDRATTR_GRAFTRANSPARENCE ) ).GetValue() ) ?
- ( IsLinkedGraphic() ? STR_ObjNamePluralGRAFBMPTRANSLNK : STR_ObjNamePluralGRAFBMPTRANS ) :
- ( IsLinkedGraphic() ? STR_ObjNamePluralGRAFBMPLNK : STR_ObjNamePluralGRAFBMP ) );
+ const SvgDataPtr& rSvgDataPtr = pGraphic->GetGraphic().getSvgData();
- rName=ImpGetResStr( nId );
+ if(rSvgDataPtr.get())
+ {
+ rName = ImpGetResStr(STR_ObjNamePluralGRAFSVG);
}
- break;
+ else
+ {
+ switch( pGraphic->GetType() )
+ {
+ case GRAPHIC_BITMAP:
+ {
+ const sal_uInt16 nId = ( ( pGraphic->IsTransparent() || ( (const SdrGrafTransparenceItem&) GetObjectItem( SDRATTR_GRAFTRANSPARENCE ) ).GetValue() ) ?
+ ( IsLinkedGraphic() ? STR_ObjNamePluralGRAFBMPTRANSLNK : STR_ObjNamePluralGRAFBMPTRANS ) :
+ ( IsLinkedGraphic() ? STR_ObjNamePluralGRAFBMPLNK : STR_ObjNamePluralGRAFBMP ) );
- case GRAPHIC_GDIMETAFILE:
- rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNamePluralGRAFMTFLNK : STR_ObjNamePluralGRAFMTF );
- break;
+ rName=ImpGetResStr( nId );
+ }
+ break;
- case GRAPHIC_NONE:
- rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNamePluralGRAFNONELNK : STR_ObjNamePluralGRAFNONE );
- break;
+ case GRAPHIC_GDIMETAFILE:
+ rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNamePluralGRAFMTFLNK : STR_ObjNamePluralGRAFMTF );
+ break;
- default:
- rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNamePluralGRAFLNK : STR_ObjNamePluralGRAF );
- break;
- }
+ case GRAPHIC_NONE:
+ rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNamePluralGRAFNONELNK : STR_ObjNamePluralGRAFNONE );
+ break;
- const String aName(GetName());
+ default:
+ rName=ImpGetResStr( IsLinkedGraphic() ? STR_ObjNamePluralGRAFLNK : STR_ObjNamePluralGRAF );
+ break;
+ }
+ }
- if( aName.Len() )
- {
- rName.AppendAscii( " '" );
- rName += aName;
- rName += sal_Unicode( '\'' );
+ const String aName(GetName());
+
+ if( aName.Len() )
+ {
+ rName.AppendAscii( " '" );
+ rName += aName;
+ rName += sal_Unicode( '\'' );
+ }
}
}
@@ -919,7 +955,8 @@ void SdrGrafObj::NbcMirror(const Point& rRef1, const Point& rRef2)
void SdrGrafObj::NbcShear(const Point& rRef, long nWink, double tn, bool bVShear)
{
- SdrRectObj::NbcRotate( rRef, nWink, tn, bVShear );
+ // #i118485# Call Shear now, old version redirected to rotate
+ SdrRectObj::NbcShear(rRef, nWink, tn, bVShear);
}
// -----------------------------------------------------------------------------
@@ -1025,34 +1062,104 @@ bool SdrGrafObj::HasGDIMetaFile() const
// -----------------------------------------------------------------------------
-SdrObject* SdrGrafObj::DoConvertToPolyObj(sal_Bool bBezier) const
+bool SdrGrafObj::isEmbeddedSvg() const
+{
+ return GRAPHIC_BITMAP == GetGraphicType() && GetGraphic().getSvgData().get();
+}
+
+GDIMetaFile SdrGrafObj::getMetafileFromEmbeddedSvg() const
+{
+ GDIMetaFile aRetval;
+
+ if(isEmbeddedSvg() && GetModel())
+ {
+ VirtualDevice aOut;
+ const Rectangle aBoundRect(GetCurrentBoundRect());
+ const MapMode aMap(GetModel()->GetScaleUnit(), Point(), GetModel()->GetScaleFraction(), GetModel()->GetScaleFraction());
+
+ aOut.EnableOutput(false);
+ aOut.SetMapMode(aMap);
+ aRetval.Record(&aOut);
+ SingleObjectPainter(aOut);
+ aRetval.Stop();
+ aRetval.WindStart();
+ aRetval.Move(-aBoundRect.Left(), -aBoundRect.Top());
+ aRetval.SetPrefMapMode(aMap);
+ aRetval.SetPrefSize(aBoundRect.GetSize());
+ }
+
+ return aRetval;
+}
+
+SdrObject* SdrGrafObj::DoConvertToPolyObj(sal_Bool bBezier /*, bool bAddText */ ) const
{
+ bool bAddText = true; // FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
SdrObject* pRetval = NULL;
+ GraphicType aGraphicType(GetGraphicType());
+ GDIMetaFile aMtf;
- switch( GetGraphicType() )
+ if(isEmbeddedSvg())
+ {
+ // Embedded Svg
+ // There is currently no helper to create SdrObjects from primitives (even if I'm thinking
+ // about writing one for some time). To get the roundtrip to SdrObjects it is necessary to
+ // use the old converter path over the MetaFile mechanism. Create Metafile from Svg
+ // primitives here pretty directly
+ aMtf = getMetafileFromEmbeddedSvg();
+ aGraphicType = GRAPHIC_GDIMETAFILE;
+ }
+ else if(GRAPHIC_GDIMETAFILE == aGraphicType)
+ {
+ aMtf = GetTransformedGraphic(SDRGRAFOBJ_TRANSFORMATTR_COLOR|SDRGRAFOBJ_TRANSFORMATTR_MIRROR).GetGDIMetaFile();
+ }
+
+ switch(aGraphicType)
{
case GRAPHIC_GDIMETAFILE:
{
// Sort into group and return ONLY those objects that can be created from the MetaFile.
- SdrObjGroup* pGrp = new SdrObjGroup();
ImpSdrGDIMetaFileImport aFilter(*GetModel());
- aFilter.SetScaleRect(GetSnapRect());
+ aFilter.SetScaleRect(aRect);
aFilter.SetLayer(GetLayer());
- sal_uInt32 nInsAnz = aFilter.DoImport(GetTransformedGraphic().GetGDIMetaFile(), *pGrp->GetSubList(), 0);
+ SdrObjGroup* pGrp = new SdrObjGroup();
+ sal_uInt32 nInsAnz = aFilter.DoImport(aMtf, *pGrp->GetSubList(), 0);
+
if(nInsAnz)
{
+ {
+ // copy transformation
+ GeoStat aGeoStat(GetGeoStat());
+
+ if(aGeoStat.nShearWink)
+ {
+ aGeoStat.RecalcTan();
+ pGrp->NbcShear(aRect.TopLeft(), aGeoStat.nShearWink, aGeoStat.nTan, false);
+ }
+
+ if(aGeoStat.nDrehWink)
+ {
+ aGeoStat.RecalcSinCos();
+ pGrp->NbcRotate(aRect.TopLeft(), aGeoStat.nDrehWink, aGeoStat.nSin, aGeoStat.nCos);
+ }
+ }
+
pRetval = pGrp;
pGrp->NbcSetLayer(GetLayer());
pGrp->SetModel(GetModel());
- pRetval = ImpConvertAddText(pRetval, bBezier);
+
+ if(bAddText)
+ {
+ pRetval = ImpConvertAddText(pRetval, bBezier);
+ }
// convert all children
if( pRetval )
{
SdrObject* pHalfDone = pRetval;
- pRetval = pHalfDone->DoConvertToPolyObj(bBezier);
+ pRetval = pHalfDone->DoConvertToPolyObj(bBezier
+ /*, bAddText */ ); // FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
SdrObject::Free( pHalfDone ); // resulting object is newly created
if( pRetval )
@@ -1068,13 +1175,43 @@ SdrObject* SdrGrafObj::DoConvertToPolyObj(sal_Bool bBezier) const
}
}
else
+ {
delete pGrp;
+ }
+
+ // #i118485# convert line and fill
+ // FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
+ SdrObject* pLineFill = SdrRectObj::DoConvertToPolyObj(bBezier /*, false */);
+
+ if(pLineFill)
+ {
+ if(pRetval)
+ {
+ pGrp = dynamic_cast< SdrObjGroup* >(pRetval);
+
+ if(!pGrp)
+ {
+ pGrp = new SdrObjGroup();
+
+ pGrp->NbcSetLayer(GetLayer());
+ pGrp->SetModel(GetModel());
+ pGrp->GetSubList()->NbcInsertObject(pRetval);
+ }
+
+ pGrp->GetSubList()->NbcInsertObject(pLineFill, 0);
+ }
+ else
+ {
+ pRetval = pLineFill;
+ }
+ }
+
break;
}
case GRAPHIC_BITMAP:
{
// create basic object and add fill
- pRetval = SdrRectObj::DoConvertToPolyObj(bBezier);
+ pRetval = SdrRectObj::DoConvertToPolyObj(bBezier /*, bAddText */); // FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
// save bitmap as an attribute
if(pRetval)
@@ -1095,7 +1232,7 @@ SdrObject* SdrGrafObj::DoConvertToPolyObj(sal_Bool bBezier) const
case GRAPHIC_NONE:
case GRAPHIC_DEFAULT:
{
- pRetval = SdrRectObj::DoConvertToPolyObj(bBezier);
+ pRetval = SdrRectObj::DoConvertToPolyObj(bBezier /*, bAddText */); // FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
break;
}
}
@@ -1240,8 +1377,9 @@ IMPL_LINK( SdrGrafObj, ImpSwapHdl, GraphicObject*, pO )
if( pGraphic->HasUserData() )
{
::comphelper::LifecycleProxy proxy;
+ OUString aUserData = pGraphic->GetUserData();
uno::Reference<io::XInputStream> const xStream(
- pModel->GetDocumentStream(pGraphic->GetUserData(), proxy));
+ pModel->GetDocumentStream(aUserData, proxy));
::boost::scoped_ptr<SvStream> const pStream( (xStream.is())
? ::utl::UcbStreamHelper::CreateStream(xStream)
@@ -1270,16 +1408,14 @@ IMPL_LINK( SdrGrafObj, ImpSwapHdl, GraphicObject*, pO )
mbIsPreview = true;
}
- if( !GraphicFilter::GetGraphicFilter().ImportGraphic( aGraphic,
- pGraphic->GetUserData(),
- *pStream,
- GRFILTER_FORMAT_DONTKNOW,
- NULL, 0, pFilterData ) )
+ if(!GraphicFilter::GetGraphicFilter().ImportGraphic(
+ aGraphic, aUserData, *pStream,
+ GRFILTER_FORMAT_DONTKNOW, NULL, 0, pFilterData))
{
- const String aUserData( pGraphic->GetUserData() );
+ const String aNewUserData( pGraphic->GetUserData() );
pGraphic->SetGraphic( aGraphic );
- pGraphic->SetUserData( aUserData );
+ pGraphic->SetUserData( aNewUserData );
// Graphic successfully swapped in.
pRet = GRFMGR_AUTOSWAPSTREAM_LOADED;
diff --git a/svx/source/svdraw/svdoole2.cxx b/svx/source/svdraw/svdoole2.cxx
index 06b7caa2d964..25db389488a2 100644
--- a/svx/source/svdraw/svdoole2.cxx
+++ b/svx/source/svdraw/svdoole2.cxx
@@ -1,5 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*h************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -80,7 +80,7 @@
#include <svx/svdetc.hxx>
#include <svx/svdview.hxx>
#include "unomlstr.hxx"
-#include <svtools/chartprettypainter.hxx>
+#include <svx/charthelper.hxx>
#include <svx/sdr/contact/viewcontactofsdrole2obj.hxx>
#include <svx/svdograf.hxx>
#include <svx/sdr/properties/oleproperties.hxx>
@@ -2030,7 +2030,7 @@ sal_Bool SdrOle2Obj::IsChart() const
{
if ( !m_bTypeAsked )
{
- m_bChart = ChartPrettyPainter::IsChart(xObjRef);
+ m_bChart = ChartHelper::IsChart(xObjRef);
m_bTypeAsked = true;
}
return m_bChart;
diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx
index 01bc247a8651..a22a33deaaf5 100644
--- a/svx/source/svdraw/svdorect.cxx
+++ b/svx/source/svdraw/svdorect.cxx
@@ -1,31 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include <svx/svdorect.hxx>
#include <math.h>
@@ -575,8 +565,12 @@ SdrGluePoint SdrRectObj::GetCornerGluePoint(sal_uInt16 nPosNum) const
return aGP;
}
-SdrObject* SdrRectObj::DoConvertToPolyObj(sal_Bool bBezier) const
+// FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
+SdrObject* SdrRectObj::DoConvertToPolyObj(sal_Bool bBezier /*, bool bAddText */) const
{
+ // FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
+ bool bAddText = true;
+
XPolygon aXP(ImpCalcXPoly(aRect,GetEckenradius()));
{ // TODO: this is only for the moment, until we have the new TakeContour()
aXP.Remove(0,1);
@@ -587,12 +581,18 @@ SdrObject* SdrRectObj::DoConvertToPolyObj(sal_Bool bBezier) const
aPolyPolygon.removeDoublePoints();
SdrObject* pRet = 0L;
- if(!IsTextFrame() || HasFill() || HasLine())
+ // small correction: Do not create something when no fill and no line. To
+ // be sure to not damage something with non-text frames, do this only
+ // when used with bAddText==false from other converters
+ if((bAddText && !IsTextFrame()) || HasFill() || HasLine())
{
pRet = ImpConvertMakeObj(aPolyPolygon, sal_True, bBezier);
}
- pRet = ImpConvertAddText(pRet, bBezier);
+ if(bAddText)
+ {
+ pRet = ImpConvertAddText(pRet, bBezier);
+ }
return pRet;
}
diff --git a/svx/source/svdraw/svdstr.src b/svx/source/svdraw/svdstr.src
index 6dfe076d0ef6..d7c03823b6ba 100644
--- a/svx/source/svdraw/svdstr.src
+++ b/svx/source/svdraw/svdstr.src
@@ -1,30 +1,21 @@
-/*************************************************************************
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-/* StarView resource file */
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include "svx/svdstr.hrc"
// Ab hier gecachte Strings
@@ -448,7 +439,21 @@ String STR_ObjNamePluralGRAFMACLNK
{
Text [ en-US ] = "Linked Mac graphics" ;
};
- ////////////////////////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Svg support
+
+String STR_ObjNameSingulGRAFSVG
+{
+ Text [ en-US ] = "SVG" ;
+};
+String STR_ObjNamePluralGRAFSVG
+{
+ Text [ en-US ] = "SVGs" ;
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
String STR_ObjNameSingulOLE2
{
Text [ en-US ] = "embedded object (OLE)" ;
@@ -2821,3 +2826,4 @@ String STR_ObjNamePluralFONTWORK
Text [ en-US ] = "font works" ;
};
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx
index 275f57087092..df282db62db8 100644
--- a/svx/source/svdraw/svdxcgv.cxx
+++ b/svx/source/svdraw/svdxcgv.cxx
@@ -1,31 +1,21 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*
+ * This file is part of the LibreOffice project.
*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
- * Copyright 2000, 2010 Oracle and/or its affiliates.
+ * This file incorporates work covered by the following license notice:
*
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
#include <vector>
#include <editeng/editeng.hxx>
@@ -454,24 +444,38 @@ void SdrExchangeView::ImpPasteObject(SdrObject* pObj, SdrObjList& rLst, const Po
////////////////////////////////////////////////////////////////////////////////////////////////////
-Bitmap SdrExchangeView::GetMarkedObjBitmap( sal_Bool bNoVDevIfOneBmpMarked ) const
+BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked) const
{
- Bitmap aBmp;
+ BitmapEx aBmp;
if( AreObjectsMarked() )
{
- if( bNoVDevIfOneBmpMarked )
+ if(1 == GetMarkedObjectCount())
{
- SdrObject* pGrafObjTmp = GetMarkedObjectByIndex( 0 );
- SdrGrafObj* pGrafObj = ( GetMarkedObjectCount() == 1 ) ? PTR_CAST( SdrGrafObj, pGrafObjTmp ) : NULL;
+ if(bNoVDevIfOneBmpMarked)
+ {
+ SdrObject* pGrafObjTmp = GetMarkedObjectByIndex( 0 );
+ SdrGrafObj* pGrafObj = ( GetMarkedObjectCount() == 1 ) ? PTR_CAST( SdrGrafObj, pGrafObjTmp ) : NULL;
+
+ if( pGrafObj && ( pGrafObj->GetGraphicType() == GRAPHIC_BITMAP ) )
+ {
+ aBmp = pGrafObj->GetTransformedGraphic().GetBitmapEx();
+ }
+ }
+ else
+ {
+ const SdrGrafObj* pSdrGrafObj = dynamic_cast< const SdrGrafObj* >(GetMarkedObjectByIndex(0));
- if( pGrafObj && ( pGrafObj->GetGraphicType() == GRAPHIC_BITMAP ) )
- aBmp = pGrafObj->GetTransformedGraphic().GetBitmap();
+ if(pSdrGrafObj && pSdrGrafObj->isEmbeddedSvg())
+ {
+ aBmp = pSdrGrafObj->GetGraphic().getSvgData()->getReplacement();
+ }
+ }
}
if( !aBmp )
{
- const Graphic aGraphic( GetMarkedObjMetaFile( bNoVDevIfOneBmpMarked ) );
+ const Graphic aGraphic(GetMarkedObjMetaFile(bNoVDevIfOneBmpMarked));
// #i102089# support user's settings of AA and LineSnap when the MetaFile gets
// raster-converted to a bitmap
@@ -482,7 +486,7 @@ Bitmap SdrExchangeView::GetMarkedObjBitmap( sal_Bool bNoVDevIfOneBmpMarked ) con
aDrawinglayerOpt.IsAntiAliasing(),
aDrawinglayerOpt.IsSnapHorVerLinesToDiscrete());
- aBmp = aGraphic.GetBitmap(aParameters);
+ aBmp = aGraphic.GetBitmapEx(aParameters);
}
}
@@ -491,7 +495,7 @@ Bitmap SdrExchangeView::GetMarkedObjBitmap( sal_Bool bNoVDevIfOneBmpMarked ) con
// -----------------------------------------------------------------------------
-GDIMetaFile SdrExchangeView::GetMarkedObjMetaFile( sal_Bool bNoVDevIfOneMtfMarked ) const
+GDIMetaFile SdrExchangeView::GetMarkedObjMetaFile(bool bNoVDevIfOneMtfMarked) const
{
GDIMetaFile aMtf;
@@ -570,7 +574,7 @@ Graphic SdrExchangeView::GetAllMarkedGraphic() const
if( ( 1 == GetMarkedObjectCount() ) && GetSdrMarkByIndex( 0 ) )
aRet = SdrExchangeView::GetObjGraphic( pMod, GetMarkedObjectByIndex( 0 ) );
else
- aRet = GetMarkedObjMetaFile( sal_False );
+ aRet = GetMarkedObjMetaFile(false);
}
return aRet;
@@ -590,10 +594,18 @@ Graphic SdrExchangeView::GetObjGraphic( const SdrModel* pModel, const SdrObject*
if(pSdrGrafObj)
{
- // Make behaviour coherent with metafile
- // recording below (which of course also takes
- // view-transformed objects)
- aRet = pSdrGrafObj->GetTransformedGraphic();
+ if(pSdrGrafObj->isEmbeddedSvg())
+ {
+ // get Metafile for Svg content
+ aRet = pSdrGrafObj->getMetafileFromEmbeddedSvg();
+ }
+ else
+ {
+ // Make behaviour coherent with metafile
+ // recording below (which of course also takes
+ // view-transformed objects)
+ aRet = pSdrGrafObj->GetTransformedGraphic();
+ }
}
else if(pSdrOle2Obj)
{