oox/source/vml/vmlshape.cxx | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-)
New commits: commit f4483d31f33aca78afbd719e58db5d8a097411dd Author: Miklos Vajna <vmik...@suse.cz> Date: Thu Jan 17 17:37:19 2013 +0100 VML import of TextFrame border width Change-Id: I9c0cf277e17c02c2de564d48ba79e1c25ea23db5 diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index 0fa3a3d..e36d98e 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -18,6 +18,7 @@ */ #include <algorithm> +#include <boost/optional.hpp> #include "oox/vml/vmlshape.hxx" @@ -370,7 +371,10 @@ void ShapeBase::convertShapeProperties( const Reference< XShape >& rxShape ) con aPropMap.setProperty(PROP_BackColor, aPropMap[PROP_FillColor]); aPropMap.erase(PROP_FillColor); } - // And no LineColor property; individual borders can have colors + // And no LineColor property; individual borders can have colors and widths + boost::optional<sal_Int32> oLineWidth; + if (maTypeModel.maStrokeModel.moWeight.has()) + oLineWidth.reset(ConversionHelper::decodeMeasureToHmm(rGraphicHelper, maTypeModel.maStrokeModel.moWeight.get(), 0, false, false)); if (aPropMap.hasProperty(PROP_LineColor)) { uno::Reference<beans::XPropertySet> xPropertySet(rxShape, uno::UNO_QUERY); @@ -381,6 +385,8 @@ void ShapeBase::convertShapeProperties( const Reference< XShape >& rxShape ) con { table::BorderLine2 aBorderLine = xPropertySet->getPropertyValue(PropertyMap::getPropertyName(aBorders[i])).get<table::BorderLine2>(); aBorderLine.Color = aPropMap[PROP_LineColor].get<sal_Int32>(); + if (oLineWidth) + aBorderLine.LineWidth = *oLineWidth; aPropMap.setProperty(aBorders[i], uno::makeAny(aBorderLine)); } aPropMap.erase(PROP_LineColor); commit 88ebaff73533fdbbd7ecbf24a0e892f411c577a0 Author: Miklos Vajna <vmik...@suse.cz> Date: Thu Jan 17 16:56:08 2013 +0100 VML import of TextFrame border color Change-Id: I8c0cf9e3ac17b87cbfdd4e744632c5306e2abfc2 diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx index 72c4ca1..0fa3a3d 100644 --- a/oox/source/vml/vmlshape.cxx +++ b/oox/source/vml/vmlshape.cxx @@ -30,6 +30,7 @@ #include <com/sun/star/drawing/XShapes.hpp> #include <com/sun/star/drawing/XControlShape.hpp> #include <com/sun/star/graphic/XGraphic.hpp> +#include <com/sun/star/table/BorderLine2.hpp> #include <com/sun/star/text/HoriOrientation.hpp> #include <com/sun/star/text/RelOrientation.hpp> #include <com/sun/star/text/SizeType.hpp> @@ -360,12 +361,30 @@ void ShapeBase::convertShapeProperties( const Reference< XShape >& rxShape ) con maTypeModel.maStrokeModel.pushToPropMap( aPropMap, rGraphicHelper ); maTypeModel.maFillModel.pushToPropMap( aPropMap, rGraphicHelper ); - // TextFrames have BackColor, not FillColor uno::Reference<lang::XServiceInfo> xSInfo(rxShape, uno::UNO_QUERY_THROW); - if (xSInfo->supportsService("com.sun.star.text.TextFrame") && aPropMap.hasProperty(PROP_FillColor)) + if (xSInfo->supportsService("com.sun.star.text.TextFrame")) { - aPropMap.setProperty(PROP_BackColor, aPropMap[PROP_FillColor]); - aPropMap.erase(PROP_FillColor); + // TextFrames have BackColor, not FillColor + if (aPropMap.hasProperty(PROP_FillColor)) + { + aPropMap.setProperty(PROP_BackColor, aPropMap[PROP_FillColor]); + aPropMap.erase(PROP_FillColor); + } + // And no LineColor property; individual borders can have colors + if (aPropMap.hasProperty(PROP_LineColor)) + { + uno::Reference<beans::XPropertySet> xPropertySet(rxShape, uno::UNO_QUERY); + static sal_Int32 aBorders[] = { + PROP_TopBorder, PROP_LeftBorder, PROP_BottomBorder, PROP_RightBorder + }; + for (unsigned int i = 0; i < SAL_N_ELEMENTS(aBorders); ++i) + { + table::BorderLine2 aBorderLine = xPropertySet->getPropertyValue(PropertyMap::getPropertyName(aBorders[i])).get<table::BorderLine2>(); + aBorderLine.Color = aPropMap[PROP_LineColor].get<sal_Int32>(); + aPropMap.setProperty(aBorders[i], uno::makeAny(aBorderLine)); + } + aPropMap.erase(PROP_LineColor); + } } PropertySet( rxShape ).setProperties( aPropMap ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits