summaryrefslogtreecommitdiff
path: root/writerfilter/source
diff options
context:
space:
mode:
authorPetr Mladek <pmladek@suse.cz>2012-11-05 14:34:27 +0100
committerPetr Mladek <pmladek@suse.cz>2012-11-05 14:34:27 +0100
commitef15a5a4acd3174752484c6aeb570d4d6444b645 (patch)
tree3d1d5b58f85737aa46241aea4c4dabea520cecc2 /writerfilter/source
parenta1b0ce05e851e9724c046888a01869eddf9e9db2 (diff)
parentc309ce0227a14330094191c1ef15fa00899defcb (diff)
Merge remote-tracking branch 'origin/libreoffice-3-6-3' into suse-3.6
Conflicts: desktop/source/app/sofficemain.cxx instsetoo_native/util/openoffice.lst solenv/inc/minor.mk Change-Id: I3e9510067c7173f6c71368e70ba6dfe168c5318e
Diffstat (limited to 'writerfilter/source')
-rw-r--r--writerfilter/source/dmapper/ConversionHelper.cxx69
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx3
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx4
-rw-r--r--writerfilter/source/dmapper/PropertyMap.cxx14
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx13
5 files changed, 30 insertions, 73 deletions
diff --git a/writerfilter/source/dmapper/ConversionHelper.cxx b/writerfilter/source/dmapper/ConversionHelper.cxx
index bb060eb559cd..dfb54a1f7f2b 100644
--- a/writerfilter/source/dmapper/ConversionHelper.cxx
+++ b/writerfilter/source/dmapper/ConversionHelper.cxx
@@ -144,77 +144,16 @@ void MakeBorderLine( sal_Int32 nLineThickness, sal_Int32 nLineType,
if(!bIsOOXML && sal::static_int_cast<sal_uInt32>(nLineColor) < SAL_N_ELEMENTS(aBorderDefColor))
nLineColor = aBorderDefColor[nLineColor];
- sal_Int16 nLineStyle = NONE;
// Map to our border types, we should use of one equal line
// thickness, or one of smaller thickness. If too small we
// can make the defecit up in additional white space or
// object size
- switch(nLineType)
- {
- // First the single lines
- case 1:
- case 2:
- case 5:
- nLineStyle = SOLID;
- break;
- // Dotted and dashed lines
- case 6:
- nLineStyle = DOTTED;
- break;
- case 7:
- case 22:
- nLineStyle = DASHED;
- break;
- // and the unsupported special cases which we map to a single line
- case 8:
- case 9:
- case 20:
- nLineStyle = SOLID;
- break;
- // Double line
- case 3:
- case 10: //Don't have tripple so use double
- case 21:
- case 23:
- nLineStyle = DOUBLE;
- break;
- case 11:
- case 13: //Don't have thin thick thin, so use thick thin
- nLineStyle = THINTHICK_SMALLGAP;
- break;
- case 12:
- nLineStyle = THICKTHIN_SMALLGAP;
- break;
- case 14:
- nLineStyle = THINTHICK_MEDIUMGAP;
- break;
- case 15:
- case 16: //Don't have thin thick thin, so use thick thin
- nLineStyle = THICKTHIN_MEDIUMGAP;
- break;
- case 17:
- nLineStyle = THINTHICK_LARGEGAP;
- break;
- case 18:
- case 19: //Don't have thin thick thin, so use thick thin
- nLineStyle = THICKTHIN_LARGEGAP;
- break;
- // Embossed and engraved lines
- case 24:
- nLineStyle = EMBOSSED;
- break;
- case 25:
- nLineStyle = ENGRAVED;
- break;
- case 0:
- case 255:
- default:
- break;
- }
-
+ ::editeng::SvxBorderStyle const nLineStyle(
+ ::editeng::ConvertBorderStyleFromWord(nLineType));
rToFill.LineStyle = nLineStyle;
double const fConverted( (NONE == nLineStyle) ? 0.0 :
- ::editeng::ConvertBorderWidthFromWord(nLineStyle, nLineThickness));
+ ::editeng::ConvertBorderWidthFromWord(nLineStyle, nLineThickness,
+ nLineType));
rToFill.LineWidth = convertTwipToMM100(fConverted);
rToFill.Color = nLineColor;
}
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 3ce3eb2d0248..3ff8519ce029 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -3617,8 +3617,7 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
{
m_pImpl->getTableManager().utext(data_, len);
- // RTF always uses text() instead of utext() for run break
- if(len == 1 && ((*data_) == 0x0d || (*data_) == 0x07) && !IsRTFImport())
+ if(len == 1 && (sText[0] == 0x0d || sText[0] == 0x07))
{
PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH);
if (pContext && m_pImpl->GetSettingsTable()->GetSplitPgBreakAndParaMark())
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 90d86365d281..925aaa635877 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -925,6 +925,10 @@ void GraphicImport::lcl_attribute(Id nName, Value & val)
uno::makeAny( aSize.Height ) );
xGraphProps->setPropertyValue( rtl::OUString("Width"),
uno::makeAny( aSize.Width ) );
+
+ // We need to drop the shape here somehow
+ uno::Reference< lang::XComponent > xShapeComponent( xShape, uno::UNO_QUERY );
+ xShapeComponent->dispose( );
}
}
catch( const beans::UnknownPropertyException & )
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx
index 3c19e6f28670..10a1749d7a07 100644
--- a/writerfilter/source/dmapper/PropertyMap.cxx
+++ b/writerfilter/source/dmapper/PropertyMap.cxx
@@ -913,14 +913,20 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl )
if( aElement != end())
aElement->second >>= eWritingMode;
-
-
sal_Int32 nTextAreaHeight = eWritingMode == text::WritingMode_LR_TB ?
nHeight - m_nTopMargin - m_nBottomMargin :
nWidth - m_nLeftMargin - m_nRightMargin;
+ sal_Int32 nGridLinePitch = m_nGridLinePitch;
+ //sep.dyaLinePitch
+ if (nGridLinePitch < 1 || nGridLinePitch > 31680)
+ {
+ SAL_WARN("writerfilter", "sep.dyaLinePitch outside legal range: " << nGridLinePitch);
+ nGridLinePitch = 1;
+ }
+
operator[]( PropertyDefinition( PROP_GRID_LINES, false )) =
- uno::makeAny( static_cast<sal_Int16>(nTextAreaHeight/m_nGridLinePitch));
+ uno::makeAny( static_cast<sal_Int16>(nTextAreaHeight/nGridLinePitch));
sal_Int32 nCharWidth = 423; //240 twip/ 12 pt
//todo: is '0' the right index here?
@@ -950,7 +956,7 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl )
nCharWidth += ConversionHelper::convertTwipToMM100( nFraction );
}
operator[]( PropertyDefinition( PROP_GRID_BASE_HEIGHT, false )) = uno::makeAny( nCharWidth );
- sal_Int32 nRubyHeight = m_nGridLinePitch - nCharWidth;
+ sal_Int32 nRubyHeight = nGridLinePitch - nCharWidth;
if(nRubyHeight < 0 )
nRubyHeight = 0;
operator[]( PropertyDefinition( PROP_GRID_RUBY_HEIGHT, false )) = uno::makeAny( nRubyHeight );
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index fb18553ddb58..45e1920c9ea5 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -991,6 +991,14 @@ void RTFDocumentImpl::text(OUString& rString)
return;
}
+ // Are we in the middle of the table definition? (No cell defs yet, but we already have some cell props.)
+ if (m_aStates.top().aTableCellSprms.find(NS_ooxml::LN_CT_TcPrBase_vAlign).get() &&
+ m_aStates.top().nCells == 0)
+ {
+ m_aTableBuffer.push_back(make_pair(BUFFER_UTEXT, RTFValue::Pointer_t(new RTFValue(rString))));
+ return;
+ }
+
checkFirstRun();
checkNeedPap();
@@ -2441,9 +2449,8 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
m_aDefaultState.aCharacterSprms.set(NS_sprm::LN_CLidBi, pIntValue);
break;
case RTF_CHCBPAT:
- if (nParam)
{
- RTFValue::Pointer_t pValue(new RTFValue(getColorTable(nParam)));
+ RTFValue::Pointer_t pValue(new RTFValue(nParam ? getColorTable(nParam) : COL_AUTO));
lcl_putNestedAttribute(m_aStates.top().aCharacterSprms, NS_sprm::LN_CShd, NS_ooxml::LN_CT_Shd_fill, pValue);
}
break;
@@ -3483,6 +3490,8 @@ int RTFDocumentImpl::popState()
// This is the end of the doc, see if we need to close the last section.
if (m_nGroup == 1 && !m_bFirstRun)
{
+ if (m_bNeedCr)
+ dispatchSymbol(RTF_PAR);
m_bDeferredContSectBreak = false;
sectBreak(true);
}