summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-08-09 12:49:24 +0200
committerMiklos Vajna <vmiklos@suse.cz>2013-08-09 16:12:18 +0200
commit03f0cbd354646733977e4dec754c0113a5cbc3c9 (patch)
treeec2513a75b3311011542eab281d52289eee40c2a /writerfilter
parentb3d898c2017a9fd01b5db27c7d00caff311f2127 (diff)
fdo#53556 RTF import of fFilled shape property for drwainglayer shapes
The real change is in RTFSdrImport::applyProperty(), the rest is just refactoring to be able to read the "is textframe" property from that method. With this, the transparent big rectangle in the bugdoc no longer hides the text on the first page. Change-Id: I04cca3ade93a63edf608df047bef3bdccf8d3605
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/rtftok/rtfsdrimport.cxx29
-rw-r--r--writerfilter/source/rtftok/rtfsdrimport.hxx2
2 files changed, 20 insertions, 11 deletions
diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx
index 3286c9d1c939..caa58967dd1e 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.cxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.cxx
@@ -14,6 +14,7 @@
#include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
#include <com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/table/BorderLine2.hpp>
#include <com/sun/star/text/HoriOrientation.hpp>
#include <com/sun/star/text/RelOrientation.hpp>
@@ -44,7 +45,8 @@ namespace rtftok {
RTFSdrImport::RTFSdrImport(RTFDocumentImpl& rDocument,
uno::Reference<lang::XComponent> const& xDstDoc)
- : m_rImport(rDocument)
+ : m_rImport(rDocument),
+ m_bTextFrame(false)
{
uno::Reference<drawing::XDrawPageSupplier> xDrawings(xDstDoc, uno::UNO_QUERY);
if (xDrawings.is())
@@ -193,7 +195,12 @@ void RTFSdrImport::applyProperty(uno::Reference<drawing::XShape> xShape, OUStrin
xPropertySet->setPropertyValue("FrameIsAutomaticHeight", uno::makeAny(*obFitShapeToText));
}
if (!bFilled)
- xPropertySet->setPropertyValue("BackColorTransparency", uno::makeAny(sal_Int32(100)));
+ {
+ if (m_bTextFrame)
+ xPropertySet->setPropertyValue("BackColorTransparency", uno::makeAny(sal_Int32(100)));
+ else
+ xPropertySet->setPropertyValue("FillStyle", uno::makeAny(drawing::FillStyle_NONE));
+ }
}
void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
@@ -201,7 +208,7 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
int nType = -1;
bool bPib = false;
bool bCustom = false;
- bool bTextFrame = false;
+ m_bTextFrame = false;
uno::Reference<drawing::XShape> xShape;
uno::Reference<beans::XPropertySet> xPropertySet;
@@ -241,7 +248,7 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
if (!bClose && m_aParents.size() == 1)
{
createShape("com.sun.star.text.TextFrame", xShape, xPropertySet);
- bTextFrame = true;
+ m_bTextFrame = true;
std::vector<beans::PropertyValue> aDefaults = getTextFrameDefaults(true);
for (size_t j = 0; j < aDefaults.size(); ++j)
xPropertySet->setPropertyValue(aDefaults[j].Name, aDefaults[j].Value);
@@ -256,12 +263,12 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
// Defaults
aAny <<= (sal_uInt32)0xffffff; // White in Word, kind of blue in Writer.
- if (xPropertySet.is() && !bTextFrame)
+ if (xPropertySet.is() && !m_bTextFrame)
xPropertySet->setPropertyValue("FillColor", aAny);
}
else if ( i->first == "wzName" )
{
- if (bTextFrame)
+ if (m_bTextFrame)
{
uno::Reference<container::XNamed> xNamed(xShape, uno::UNO_QUERY);
xNamed->setName(i->second);
@@ -279,7 +286,7 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
else if (i->first == "fillColor" && xPropertySet.is())
{
aAny <<= msfilter::util::BGRToRGB(i->second.toInt32());
- if (bTextFrame)
+ if (m_bTextFrame)
xPropertySet->setPropertyValue("BackColor", aAny);
else
xPropertySet->setPropertyValue("FillColor", aAny);
@@ -524,7 +531,7 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
if (xPropertySet.is())
{
- if (!bTextFrame)
+ if (!m_bTextFrame)
{
xPropertySet->setPropertyValue("LineColor", aLineColor);
xPropertySet->setPropertyValue("LineWidth", aLineWidth);
@@ -544,7 +551,7 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
}
if (rShape.oZ)
resolveDhgt(xPropertySet, *rShape.oZ);
- if (bTextFrame)
+ if (m_bTextFrame)
// Writer textframes implement text::WritingMode2, which is a different data type.
xPropertySet->setPropertyValue("WritingMode", uno::makeAny(sal_Int16(eWritingMode)));
else
@@ -558,7 +565,7 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
return;
}
- if (m_aParents.size() && m_aParents.top().is() && !bTextFrame)
+ if (m_aParents.size() && m_aParents.top().is() && !m_bTextFrame)
m_aParents.top()->add(xShape);
if (bCustom && xShape.is())
{
@@ -616,7 +623,7 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose)
nTop = static_cast< sal_Int32 >( rShape.nTop + fHeightRatio * (*oRelTop - *oGroupTop) );
}
- if (bTextFrame)
+ if (m_bTextFrame)
{
xPropertySet->setPropertyValue("HoriOrientPosition", uno::makeAny(nLeft));
xPropertySet->setPropertyValue("VertOrientPosition", uno::makeAny(nTop));
diff --git a/writerfilter/source/rtftok/rtfsdrimport.hxx b/writerfilter/source/rtftok/rtfsdrimport.hxx
index bb09b0093dde..735f24b7e5cf 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.hxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.hxx
@@ -45,6 +45,8 @@ namespace writerfilter {
RTFDocumentImpl& m_rImport;
std::stack< uno::Reference<drawing::XShapes> > m_aParents;
uno::Reference<drawing::XShape> m_xShape;
+ /// If m_xShape is imported as a Writer text frame (instead of a drawinglayer rectangle).
+ bool m_bTextFrame;
};
} // namespace rtftok
} // namespace writerfilter