diff options
author | Petr Mladek <pmladek@suse.cz> | 2012-11-05 14:34:27 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2012-11-05 14:34:27 +0100 |
commit | ef15a5a4acd3174752484c6aeb570d4d6444b645 (patch) | |
tree | 3d1d5b58f85737aa46241aea4c4dabea520cecc2 /writerfilter/source | |
parent | a1b0ce05e851e9724c046888a01869eddf9e9db2 (diff) | |
parent | c309ce0227a14330094191c1ef15fa00899defcb (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.cxx | 69 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 3 | ||||
-rw-r--r-- | writerfilter/source/dmapper/GraphicImport.cxx | 4 | ||||
-rw-r--r-- | writerfilter/source/dmapper/PropertyMap.cxx | 14 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 13 |
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); } |