in main/writerfilter/source/dmapper/DomainMapper.cxx [2204:4294]
void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType eSprmType )
{
OSL_ENSURE(rContext.get(), "PropertyMap has to be valid!");
if(!rContext.get())
return ;
sal_uInt32 nSprmId = rSprm.getId();
//needed for page properties
SectionPropertyMap * pSectionContext = m_pImpl->GetSectionContext();
//TODO: In rtl-paragraphs the meaning of left/right are to be exchanged
bool bExchangeLeftRight = false;
// if( nSprmId == NS_sprm::LN_PJcExtra && AlreadyInRTLPara() )
// bExchangeLeftRight = true;
Value::Pointer_t pValue = rSprm.getValue();
sal_Int32 nIntValue = pValue->getInt();
const rtl::OUString sStringValue = pValue->getString();
/* WRITERFILTERSTATUS: table: sprmdata */
switch(nSprmId)
{
case 2: // sprmPIstd
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
case 0x4600:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPIstd - style code
case 3: // "sprmPIstdPermute
case NS_sprm::LN_PIstdPermute:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPIstdPermute
case NS_sprm::LN_PIncLvl:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPIncLvl
case NS_sprm::LN_PJcExtra: // sprmPJc Asian (undocumented)
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
case NS_sprm::LN_PJc: // sprmPJc
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
handleParaJustification(nIntValue, rContext, bExchangeLeftRight);
break;
case NS_sprm::LN_PFSideBySide:
/* WRITERFILTERSTATUS: done: 0, planned: 3, spent: 0 */
/* WRITERFILTERSTATUS: comment: */
break; // sprmPFSideBySide
case NS_sprm::LN_PFKeep: // sprmPFKeep
/* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
/* WRITERFILTERSTATUS: comment: */
rContext->Insert(PROP_PARA_SPLIT, true, uno::makeAny(nIntValue ? false : true));
break;
case NS_sprm::LN_PFKeepFollow: // sprmPFKeepFollow
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
/* WRITERFILTERSTATUS: comment: */
rContext->Insert(PROP_PARA_KEEP_TOGETHER, true, uno::makeAny( nIntValue ? true : false) );
break;
case NS_sprm::LN_PFPageBreakBefore:
if ( nIntValue == 1 )
{
rContext->Insert( PROP_BREAK_TYPE, true, uno::makeAny( com::sun::star::style::BreakType_PAGE_BEFORE ) );
}
break; // sprmPFPageBreakBefore
case NS_sprm::LN_PBrcl:
break; // sprmPBrcl
case NS_sprm::LN_PBrcp:
break; // sprmPBrcp
case NS_sprm::LN_PIlvl: // sprmPIlvl
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
/* WRITERFILTERSTATUS: comment: */
{
StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL;
if ( m_pImpl->IsStyleSheetImport() )
{
pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
}
if ( pStyleSheetPropertyMap != NULL )
{
pStyleSheetPropertyMap->SetListLevel( (sal_Int16)nIntValue );
}
else
{
rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny( (sal_Int16)nIntValue ));
}
}
break;
case NS_sprm::LN_PIlfo: // sprmPIlfo
/* WRITERFILTERSTATUS: done: 50, planned: 0, spent: 1 */
/* WRITERFILTERSTATUS: comment: */
{
//convert the ListTable entry to a NumberingRules propery and apply it
StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL;
if ( m_pImpl->IsStyleSheetImport() )
{
pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
}
ListsManager::Pointer pListTable = m_pImpl->GetListTable();
ListDef::Pointer pList = pListTable->GetList( nIntValue );
if( pList.get( ) )
{
if ( pStyleSheetPropertyMap != NULL )
{
pStyleSheetPropertyMap->SetListId( nIntValue );
}
else
{
uno::Any aRules = uno::makeAny( pList->GetNumberingRules( ) );
rContext->Insert( PROP_NUMBERING_RULES, true, aRules );
}
}
else
{
if ( pStyleSheetPropertyMap != NULL )
{
// set the number id for AbstractNum references
pStyleSheetPropertyMap->SetNumId( nIntValue );
}
else
{
rtl::OUString sNone;
rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny( sNone ) );
}
}
}
break;
case NS_sprm::LN_PFNoLineNumb: // sprmPFNoLineNumb
rContext->Insert(PROP_PARA_LINE_NUMBER_COUNT, true, uno::makeAny( nIntValue != 0 ? false : true) );
break;
case NS_sprm::LN_PChgTabsPapx: // sprmPChgTabsPapx
/* WRITERFILTERSTATUS: done: 90, planned: 8, spent: 8 */
/* WRITERFILTERSTATUS: comment: bar tab stops a unavailable */
{
// Initialize tab stop vector from style sheet
uno::Any aValue = m_pImpl->GetPropertyFromStyleSheet(PROP_PARA_TAB_STOPS);
uno::Sequence< style::TabStop > aStyleTabStops;
if(aValue >>= aStyleTabStops)
{
m_pImpl->InitTabStopFromStyle( aStyleTabStops );
}
//create a new tab stop property - this is done with the contained properties
resolveSprmProps(*this, rSprm);
//add this property
rContext->Insert(PROP_PARA_TAB_STOPS, true, uno::makeAny( m_pImpl->GetCurrentTabStopAndClear()));
}
break;
case 0x845d: //right margin Asian - undocumented
case 0x845e: //left margin Asian - undocumented
case 16: // sprmPDxaRight - right margin
case NS_sprm::LN_PDxaRight: // sprmPDxaRight - right margin
case 17:
case NS_sprm::LN_PDxaLeft: // sprmPDxaLeft
/* WRITERFILTERSTATUS: done: 50, planned: 5, spent: 1 */
if( NS_sprm::LN_PDxaLeft == nSprmId || 0x17 == nSprmId|| (bExchangeLeftRight && nSprmId == 0x845d) || ( !bExchangeLeftRight && nSprmId == 0x845e))
rContext->Insert(
eSprmType == SPRM_DEFAULT ? PROP_PARA_LEFT_MARGIN : PROP_LEFT_MARGIN,
true,
uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) ));
else if(eSprmType == SPRM_DEFAULT)
rContext->Insert(
PROP_PARA_RIGHT_MARGIN, true,
uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) ));
//TODO: what happens to the right margins in numberings?
break;
case 18: // sprmPNest
case NS_sprm::LN_PNest: // sprmPNest
//not handled in the old WW8 filter
break;
case NS_sprm::LN_PDxaLeft1: // sprmPDxaLeft1
case 19:
case NS_sprm::LN_PDxaLeft180: // sprmPDxaLeft180
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
rContext->Insert(
eSprmType == SPRM_DEFAULT ? PROP_PARA_FIRST_LINE_INDENT : PROP_FIRST_LINE_OFFSET,
true,
uno::makeAny( ConversionHelper::convertTwipToMM100(nIntValue ) ));
break;
case 20 : // sprmPDyaLine
case NS_sprm::LN_PDyaLine: // sprmPDyaLine
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
{
style::LineSpacing aSpacing;
sal_Int16 nDistance = sal_Int16(nIntValue & 0xffff);
if(nIntValue & 0xffff0000)
{
// single line in Writer is 100, in Word it is 240
aSpacing.Mode = style::LineSpacingMode::PROP;
aSpacing.Height = sal_Int16(sal_Int32(nDistance) * 100 /240);
}
else
{
if(nDistance < 0)
{
aSpacing.Mode = style::LineSpacingMode::FIX;
aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100(-nDistance));
}
else if(nDistance >0)
{
aSpacing.Mode = style::LineSpacingMode::MINIMUM;
aSpacing.Height = sal_Int16(ConversionHelper::convertTwipToMM100(nDistance));
}
}
rContext->Insert(PROP_PARA_LINE_SPACING, true, uno::makeAny( aSpacing ));
}
break;
case 21 : // legacy version
case NS_sprm::LN_PDyaBefore: // sprmPDyaBefore
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
rContext->Insert(PROP_PARA_TOP_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) ));
break;
case 22 :
case NS_sprm::LN_PDyaAfter: // sprmPDyaAfter
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 1 */
rContext->Insert(PROP_PARA_BOTTOM_MARGIN, true, uno::makeAny( ConversionHelper::convertTwipToMM100( nIntValue ) ));
break;
case 23: //sprmPChgTabs
case NS_sprm::LN_PChgTabs: // sprmPChgTabs
/* WRITERFILTERSTATUS: done: 0, planned: 3, spent: 0 */
OSL_ENSURE( false, "unhandled");
//tabs of list level?
break;
case 24: // "sprmPFInTable"
case NS_sprm::LN_PFInTable:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFInTable
case NS_sprm::LN_PTableDepth: //sprmPTableDepth
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
//not handled via sprm but via text( 0x07 )
break;
case 25: // "sprmPTtp" pap.fTtp
case NS_sprm::LN_PFTtp: // sprmPFTtp was: Read_TabRowEnd
break;
case 26: // "sprmPDxaAbs
case NS_sprm::LN_PDxaAbs:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPDxaAbs
case 27: //sprmPDyaAbs
case NS_sprm::LN_PDyaAbs:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPDyaAbs
case NS_sprm::LN_PDxaWidth:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPDxaWidth
case NS_sprm::LN_PPc:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPPc
case NS_sprm::LN_PBrcTop10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPBrcTop10
case NS_sprm::LN_PBrcLeft10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPBrcLeft10
case NS_sprm::LN_PBrcBottom10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPBrcBottom10
case NS_sprm::LN_PBrcRight10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPBrcRight10
case NS_sprm::LN_PBrcBetween10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPBrcBetween10
case NS_sprm::LN_PBrcBar10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPBrcBar10
case NS_sprm::LN_PDxaFromText10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPDxaFromText10
case NS_sprm::LN_PWr:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPWr
case NS_ooxml::LN_CT_PrBase_pBdr: //paragraph border
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
resolveSprmProps(*this, rSprm);
break;
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
case NS_sprm::LN_PBrcTop: // sprmPBrcTop
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
/* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */
case NS_sprm::LN_PBrcLeft: // sprmPBrcLeft
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
/* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */
case NS_sprm::LN_PBrcBottom: // sprmPBrcBottom
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
/* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */
case NS_sprm::LN_PBrcRight: // sprmPBrcRight
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
/* WRITERFILTERSTATUS: comment: page borders are no handled yet, conversion incomplete */
case NS_sprm::LN_PBrcBetween: // sprmPBrcBetween
/* WRITERFILTERSTATUS: done: 0, planned: 8, spent: 0 */
/* WRITERFILTERSTATUS: comment: */
{
//in binary format the borders are directly provided in OOXML they are inside of properties
if( IsOOXMLImport() )
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get())
{
BorderHandlerPtr pBorderHandler( new BorderHandler( true ) );
pProperties->resolve(*pBorderHandler);
PropertyIds eBorderId = PropertyIds( 0 );
PropertyIds eBorderDistId = PropertyIds( 0 );
switch( nSprmId )
{
case NS_sprm::LN_PBrcTop:
/* WRITERFILTERSTATUS: */
eBorderId = PROP_TOP_BORDER;
eBorderDistId = PROP_TOP_BORDER_DISTANCE;
break;
case NS_sprm::LN_PBrcLeft:
/* WRITERFILTERSTATUS: */
eBorderId = PROP_LEFT_BORDER;
eBorderDistId = PROP_LEFT_BORDER_DISTANCE;
break;
case NS_sprm::LN_PBrcBottom:
/* WRITERFILTERSTATUS: */
eBorderId = PROP_BOTTOM_BORDER ;
eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE;
break;
case NS_sprm::LN_PBrcRight:
/* WRITERFILTERSTATUS: */
eBorderId = PROP_RIGHT_BORDER;
eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ;
break;
case NS_sprm::LN_PBrcBetween:
/* WRITERFILTERSTATUS: */
//not supported
break;
default:;
}
if( eBorderId )
rContext->Insert( eBorderId, true, uno::makeAny( pBorderHandler->getBorderLine()) , true);
if(eBorderDistId)
rContext->Insert(eBorderDistId, true, uno::makeAny( pBorderHandler->getLineDistance()), true);
}
}
else
{
table::BorderLine aBorderLine;
sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine );
PropertyIds eBorderId = PROP_LEFT_BORDER;
PropertyIds eBorderDistId = PROP_LEFT_BORDER_DISTANCE ;
switch( nSprmId )
{
case NS_sprm::LN_PBrcBetween: // sprmPBrcBetween
/* WRITERFILTERSTATUS: */
OSL_ENSURE( false, "TODO: inner border is not handled");
break;
case NS_sprm::LN_PBrcLeft: // sprmPBrcLeft
/* WRITERFILTERSTATUS: */
eBorderId = PROP_LEFT_BORDER;
eBorderDistId = PROP_LEFT_BORDER_DISTANCE ;
break;
case NS_sprm::LN_PBrcRight: // sprmPBrcRight
/* WRITERFILTERSTATUS: */
eBorderId = PROP_RIGHT_BORDER ;
eBorderDistId = PROP_RIGHT_BORDER_DISTANCE ;
break;
case NS_sprm::LN_PBrcTop: // sprmPBrcTop
/* WRITERFILTERSTATUS: */
eBorderId = PROP_TOP_BORDER ;
eBorderDistId = PROP_TOP_BORDER_DISTANCE;
break;
case NS_sprm::LN_PBrcBottom: // sprmPBrcBottom
/* WRITERFILTERSTATUS: */
default:
eBorderId = PROP_BOTTOM_BORDER ;
eBorderDistId = PROP_BOTTOM_BORDER_DISTANCE;
}
rContext->Insert(eBorderId, true, uno::makeAny( aBorderLine ));
rContext->Insert(eBorderDistId, true, uno::makeAny( nLineDistance ));
}
}
break;
case NS_sprm::LN_PBorderTop:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
/* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */
case NS_sprm::LN_PBorderLeft:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
/* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */
case NS_sprm::LN_PBorderBottom:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
/* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */
case NS_sprm::LN_PBorderRight:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
/* WRITERFILTERSTATUS: comment: probably _real_ border colors, unhandled */
OSL_ENSURE( false, "TODO: border color definition");
break;
case NS_sprm::LN_PBrcBar:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPBrcBar
case NS_sprm::LN_PFNoAutoHyph: // sprmPFNoAutoHyph
rContext->Insert(PROP_PARA_IS_HYPHENATION, true, uno::makeAny( nIntValue != 0 ? false : true ));
break;
case NS_sprm::LN_PWHeightAbs:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPWHeightAbs
case NS_sprm::LN_PDcs:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPDcs
case NS_sprm::LN_PShd: // sprmPShd
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 2 */
{
//contains fore color, back color and shadow percentage, results in a brush
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get())
{
CellColorHandlerPtr pCellColorHandler( new CellColorHandler );
pCellColorHandler->setType(CellColorHandler::P);
pProperties->resolve(*pCellColorHandler);
rContext->insert( pCellColorHandler->getProperties(), true );
}
}
break;
case NS_sprm::LN_PDyaFromText:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPDyaFromText
case NS_sprm::LN_PDxaFromText:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPDxaFromText
case NS_sprm::LN_PFLocked:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFLocked
case NS_sprm::LN_PFWidowControl:
case NS_ooxml::LN_CT_PPrBase_widowControl:
{
uno::Any aVal( uno::makeAny( sal_Int8(nIntValue != 0 ? 2 : 0 )));
rContext->Insert( PROP_PARA_WIDOWS, true, aVal );
rContext->Insert( PROP_PARA_ORPHANS, true, aVal );
}
break; // sprmPFWidowControl
case NS_sprm::LN_PRuler:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPRuler
case NS_sprm::LN_PFKinsoku:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFKinsoku
case NS_sprm::LN_PFWordWrap:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFWordWrap
case NS_sprm::LN_PFOverflowPunct: ; // sprmPFOverflowPunct - hanging punctuation
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
rContext->Insert(PROP_PARA_IS_HANGING_PUNCTUATION, true, uno::makeAny( nIntValue ? false : true ));
break;
case NS_sprm::LN_PFTopLinePunct:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFTopLinePunct
case NS_sprm::LN_PFAutoSpaceDE:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFAutoSpaceDE
case NS_sprm::LN_PFAutoSpaceDN:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFAutoSpaceDN
case NS_sprm::LN_PWAlignFont:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPWAlignFont
case NS_sprm::LN_PFrameTextFlow:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFrameTextFlow
case NS_sprm::LN_PISnapBaseLine:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPISnapBaseLine
case NS_sprm::LN_PAnld:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPAnld
case NS_sprm::LN_PPropRMark:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPPropRMark
case NS_sprm::LN_POutLvl:
{
// - nIntValue == WW_OUTLINE_MAX --> no outline level
// - WW_OUTLINE_MIN <= nIntValue < WW_OUTLINE_MAX --> outline level = nIntValue+1
// - nIntValue > WW_OUTLINE_MAX are treated as no outline level
const sal_Int16 nOutlineLevel = nIntValue >= WW_OUTLINE_MIN && nIntValue < WW_OUTLINE_MAX
? static_cast< sal_Int16 >(nIntValue+1)
: 0;
StyleSheetPropertyMap* pStyleSheetPropertyMap = NULL;
if ( m_pImpl->IsStyleSheetImport() )
{
pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
}
if ( pStyleSheetPropertyMap != 0 )
{
pStyleSheetPropertyMap->SetOutlineLevel( nOutlineLevel );
}
else
{
rContext->Insert(PROP_OUTLINE_LEVEL, true, uno::makeAny ( nOutlineLevel ));
}
}
break; // sprmPOutLvl
case NS_sprm::LN_PFBiDi:
if ( nIntValue == 1 )
{
rContext->Insert(PROP_WRITING_MODE, false, uno::makeAny( text::WritingMode2::RL_TB ));
rContext->Insert(PROP_PARA_ADJUST, false, uno::makeAny( style::ParagraphAdjust_RIGHT ));
}
break; // sprmPFBiDi
case NS_ooxml::LN_EG_SectPrContents_bidi:
if ( nIntValue == 1 )
{
if ( pSectionContext != NULL )
pSectionContext->Insert( PROP_WRITING_MODE, false, uno::makeAny( text::WritingMode2::RL_TB ) );
}
break;
case NS_sprm::LN_PFNumRMIns:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFNumRMIns
case NS_sprm::LN_PCrLf:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPCrLf
case NS_sprm::LN_PNumRM:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPNumRM
case NS_sprm::LN_PHugePapx:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPHugePapx
case NS_sprm::LN_PFUsePgsuSettings:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFUsePgsuSettings
case NS_sprm::LN_PFAdjustRight:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPFAdjustRight
case NS_sprm::LN_CFRMarkDel:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFRMarkDel
case NS_sprm::LN_CFRMark:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFRMark
case NS_sprm::LN_CFFldVanish:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFFldVanish
case NS_sprm::LN_CFSpec: // sprmCFSpec
break;
case NS_sprm::LN_CPicLocation: // sprmCPicLocation
//is being resolved on the tokenizer side
break;
case NS_sprm::LN_CIbstRMark:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCIbstRMark
case NS_sprm::LN_CDttmRMark:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCDttmRMark
case NS_sprm::LN_CFData:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFData
case NS_sprm::LN_CIdslRMark:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCIdslRMark
case NS_sprm::LN_CChs:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCChs
case NS_sprm::LN_CSymbol: // sprmCSymbol
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
resolveSprmProps(*this, rSprm); //resolves LN_FONT and LN_CHAR
break;
case NS_sprm::LN_CFOle2:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFOle2
case NS_sprm::LN_CIdCharType:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCIdCharType
case NS_sprm::LN_CHighlight:
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
sal_Int32 nColor = 0;
if(true ==( mbIsHighlightSet = getColorFromIndex(nIntValue, nColor)))
rContext->Insert(PROP_CHAR_BACK_COLOR, true, uno::makeAny( nColor ));
else if (mnBackgroundColor)
rContext->Insert(PROP_CHAR_BACK_COLOR, true, uno::makeAny( mnBackgroundColor ));
}
break; // sprmCHighlight
case NS_sprm::LN_CObjLocation:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCObjLocation
case NS_sprm::LN_CFFtcAsciSymb:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFFtcAsciSymb
case NS_sprm::LN_CIstd:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCIstd
case NS_sprm::LN_CIstdPermute:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCIstdPermute
case NS_sprm::LN_CDefault:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCDefault
case NS_sprm::LN_CPlain:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCPlain
case NS_sprm::LN_CKcd:
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
rContext->Insert(PROP_CHAR_EMPHASIS, true, uno::makeAny ( getEmphasisValue (nIntValue)));
break; // sprmCKcd
case NS_sprm::LN_CFEmboss:// sprmCFEmboss
case 60:// sprmCFBold
case NS_sprm::LN_CFBoldBi:// sprmCFBoldBi (offset 0x27 to normal bold)
case NS_sprm::LN_CFItalicBi:// sprmCFItalicBi (offset 0x27 to normal italic)
case NS_sprm::LN_CFBold: //sprmCFBold
case 61: /*sprmCFItalic*/
case NS_sprm::LN_CFItalic: //sprmCFItalic
case NS_sprm::LN_CFStrike: //sprmCFStrike
case NS_sprm::LN_CFOutline: //sprmCFOutline
case NS_sprm::LN_CFShadow: //sprmCFShadow
case NS_sprm::LN_CFSmallCaps: //sprmCFSmallCaps
case NS_sprm::LN_CFCaps: //sprmCFCaps
case NS_sprm::LN_CFVanish: //sprmCFVanish
case NS_sprm::LN_CFDStrike: // sprmCFDStrike
{
PropertyIds ePropertyId = PROP_CHAR_WEIGHT; //initialized to prevent warning!
switch( nSprmId )
{
case 60:// sprmCFBold
case NS_sprm::LN_CFBold: /*sprmCFBold*/
ePropertyId = PROP_CHAR_WEIGHT;
break;
case NS_sprm::LN_CFBoldBi: // sprmCFBoldBi
ePropertyId = PROP_CHAR_WEIGHT_COMPLEX;
break;
case 61: /*sprmCFItalic*/
case NS_sprm::LN_CFItalicBi: // sprmCFItalicBi
case NS_sprm::LN_CFItalic: /*sprmCFItalic*/
ePropertyId = nSprmId == 0x836 ? PROP_CHAR_POSTURE : PROP_CHAR_POSTURE_COMPLEX;
break;
case NS_sprm::LN_CFStrike: /*sprmCFStrike*/
case NS_sprm::LN_CFDStrike : /*sprmCFDStrike double strike through*/
ePropertyId = PROP_CHAR_STRIKEOUT;
break;
case NS_sprm::LN_CFOutline: /*sprmCFOutline*/
ePropertyId = PROP_CHAR_CONTOURED;
break;
case NS_sprm::LN_CFShadow: /*sprmCFShadow*/
ePropertyId = PROP_CHAR_SHADOWED;
break;
case NS_sprm::LN_CFSmallCaps: /*sprmCFSmallCaps*/
case NS_sprm::LN_CFCaps: /*sprmCFCaps*/
ePropertyId = PROP_CHAR_CASE_MAP;
break;
case NS_sprm::LN_CFVanish: /*sprmCFVanish*/
ePropertyId = PROP_CHAR_HIDDEN;
break;
case NS_sprm::LN_CFEmboss: /*sprmCFEmboss*/
ePropertyId = PROP_CHAR_RELIEF;
break;
}
//expected: 0,1,128,129
if(nIntValue != 128) //inherited from paragraph - ignore
{
if( nIntValue == 129) //inverted style sheet value
{
//get value from style sheet and invert it
sal_Int16 nStyleValue = 0;
double fDoubleValue = 0;
uno::Any aStyleVal = m_pImpl->GetPropertyFromStyleSheet(ePropertyId);
if( !aStyleVal.hasValue() )
{
nIntValue = 0x83a == nSprmId ?
4 : 1;
}
else if(aStyleVal.getValueTypeClass() == uno::TypeClass_FLOAT )
{
//only in case of awt::FontWeight
aStyleVal >>= fDoubleValue;
nIntValue = fDoubleValue > 100. ? 0 : 1;
}
else if((aStyleVal >>= nStyleValue) ||
(nStyleValue = (sal_Int16)comphelper::getEnumAsINT32(aStyleVal)) >= 0 )
{
nIntValue = 0x83a == nSprmId ?
nStyleValue ? 0 : 4 :
nStyleValue ? 0 : 1;
}
else
{
OSL_ENSURE( false, "what type was it");
}
}
switch( nSprmId )
{
case 60:/*sprmCFBold*/
case NS_sprm::LN_CFBold: /*sprmCFBold*/
case NS_sprm::LN_CFBoldBi: // sprmCFBoldBi
{
uno::Any aBold( uno::makeAny( nIntValue != 0 ? awt::FontWeight::BOLD : awt::FontWeight::NORMAL ) );
rContext->Insert(ePropertyId, true, aBold );
if( nSprmId != NS_sprm::LN_CFBoldBi ) // sprmCFBoldBi
rContext->Insert(PROP_CHAR_WEIGHT_ASIAN, true, aBold );
}
break;
case 61: /*sprmCFItalic*/
case NS_sprm::LN_CFItalic: /*sprmCFItalic*/
case NS_sprm::LN_CFItalicBi: // sprmCFItalicBi
{
uno::Any aPosture( uno::makeAny( nIntValue != 0 ? awt::FontSlant_ITALIC : awt::FontSlant_NONE ) );
rContext->Insert( ePropertyId, true, aPosture );
if( nSprmId != NS_sprm::LN_CFItalicBi ) // sprmCFItalicBi
rContext->Insert(PROP_CHAR_POSTURE_ASIAN, true, aPosture );
}
break;
case NS_sprm::LN_CFStrike: /*sprmCFStrike*/
rContext->Insert(ePropertyId, true,
uno::makeAny( nIntValue != 0 ? awt::FontStrikeout::SINGLE : awt::FontStrikeout::NONE ) );
break;
case NS_sprm::LN_CFDStrike : /*sprmCFDStrike double strike through*/
rContext->Insert(ePropertyId, true,
uno::makeAny( nIntValue != 0 ? awt::FontStrikeout::DOUBLE : awt::FontStrikeout::NONE ) );
break;
case NS_sprm::LN_CFOutline: /*sprmCFOutline*/
case NS_sprm::LN_CFShadow: /*sprmCFShadow*/
case NS_sprm::LN_CFVanish: /*sprmCFVanish*/
rContext->Insert(ePropertyId, true, uno::makeAny( nIntValue != 0 ? true : false ));
break;
case NS_sprm::LN_CFSmallCaps: /*sprmCFSmallCaps*/
rContext->Insert(ePropertyId, true,
uno::makeAny( nIntValue != 0 ? style::CaseMap::SMALLCAPS : style::CaseMap::NONE));
break;
case NS_sprm::LN_CFCaps: /*sprmCFCaps*/
rContext->Insert(ePropertyId, true,
uno::makeAny( nIntValue != 0 ? style::CaseMap::UPPERCASE : style::CaseMap::NONE));
break;
case NS_sprm::LN_CFEmboss: /*sprmCFEmboss*/
rContext->Insert(ePropertyId, true,
uno::makeAny( nIntValue != 0 ? awt::FontRelief::EMBOSSED : awt::FontRelief::NONE ));
break;
}
}
}
break;
case NS_sprm::LN_CFtcDefault:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFtcDefault
case NS_sprm::LN_CKul: // sprmCKul
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
// Parameter: 0 = none, 1 = single, 2 = by Word,
// 3 = double, 4 = dotted, 5 = hidden
// 6 = thick, 7 = dash, 8 = dot(not used)
// 9 = dotdash 10 = dotdotdash 11 = wave
handleUnderlineType(nIntValue, rContext);
}
break;
case NS_sprm::LN_CSizePos:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCSizePos
case NS_sprm::LN_CLid:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCLid
case NS_sprm::LN_CIco:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
{
sal_Int32 nColor = 0;
if (getColorFromIndex(nIntValue, nColor))
rContext->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nColor ) );
}
break; // sprmCIco
case NS_sprm::LN_CHpsBi: // sprmCHpsBi
case NS_sprm::LN_CHps: // sprmCHps
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
//multiples of half points (12pt == 24)
double fVal = double(nIntValue) / 2.;
uno::Any aVal = uno::makeAny( fVal );
if( NS_sprm::LN_CHpsBi == nSprmId )
rContext->Insert( PROP_CHAR_HEIGHT_COMPLEX, true, aVal );
else
{
//Asian get the same value as Western
rContext->Insert( PROP_CHAR_HEIGHT, true, aVal );
rContext->Insert( PROP_CHAR_HEIGHT_ASIAN, true, aVal );
}
}
break;
case NS_sprm::LN_CHpsInc:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCHpsInc
case NS_sprm::LN_CHpsPos:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
{
// FIXME: ww8 filter in ww8par6.cxx has a Read_SubSuperProp function
// that counts the escapement from this value and font size. So it will be
// on our TODO list
sal_Int16 nEscapement = 0;
sal_Int8 nProp = 100;
if (nIntValue < 0)
nEscapement = -58;
else if (nIntValue > 0)
nEscapement = 58;
else /* (nIntValue == 0) */
nProp = 0;
rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) );
rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) );
}
break; // sprmCHpsPos
case NS_sprm::LN_CHpsPosAdj:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCHpsPosAdj
case NS_sprm::LN_CMajority:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCMajority
case NS_sprm::LN_CIss: // sprmCIss
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
//sub/super script 1: super, 2: sub, 0: normal
sal_Int16 nEscapement = 0;
sal_Int8 nProp = 58;
switch(nIntValue)
{
case 1: //super
nEscapement = 101;
break;
case 2: //sub
nEscapement = -101;
break;
case 0: nProp = 0;break; //none
}
rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) );
rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) );
}
break;
case NS_sprm::LN_CHpsNew50:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCHpsNew50
case NS_sprm::LN_CHpsInc1:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCHpsInc1
case 71 : //"sprmCDxaSpace"
case 96 : //"sprmCDxaSpace"
case NS_sprm::LN_CDxaSpace: // sprmCDxaSpace
{
/* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
//Kerning half point values
//TODO: there are two kerning values -
// in ww8par6.cxx NS_sprm::LN_CHpsKern is used as boolean AutoKerning
sal_Int16 nResult = static_cast<sal_Int16>(ConversionHelper::convertTwipToMM100(nIntValue));
if (m_pImpl->IsInComments())
{
nResult = static_cast<sal_Int16>(nIntValue);
}
rContext->Insert(PROP_CHAR_CHAR_KERNING, true, uno::makeAny(nResult));
}
break;
case NS_sprm::LN_CHpsKern: // sprmCHpsKern auto kerning is bound to a minimum font size in Word - but not in Writer :-(
rContext->Insert(PROP_CHAR_AUTO_KERNING, true, uno::makeAny( true ) );
break;
case NS_sprm::LN_CMajority50:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCMajority50
case NS_sprm::LN_CHpsMul:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCHpsMul
case NS_sprm::LN_CYsri:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCYsri
case NS_sprm::LN_CRgFtc0: // sprmCRgFtc0 //ascii font index
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
case NS_sprm::LN_CRgFtc1: // sprmCRgFtc1 //Asian font index
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
case NS_sprm::LN_CRgFtc2: // sprmCRgFtc2 //CTL font index
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
case NS_sprm::LN_CFtcBi: // sprmCFtcBi //font index of a CTL font
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
FontTablePtr pFontTable = m_pImpl->GetFontTable();
if(nIntValue >= 0 && pFontTable->size() > sal_uInt32(nIntValue))
{
PropertyIds eFontName = PROP_CHAR_FONT_NAME;
PropertyIds eFontStyle = PROP_CHAR_FONT_STYLE;
PropertyIds eFontFamily = PROP_CHAR_FONT_FAMILY;
PropertyIds eFontCharSet = PROP_CHAR_FONT_CHAR_SET;
PropertyIds eFontPitch = PROP_CHAR_FONT_PITCH;
switch(nSprmId)
{
case NS_sprm::LN_CRgFtc0:
//already initialized
break;
case NS_sprm::LN_CRgFtc1:
eFontName = PROP_CHAR_FONT_NAME_ASIAN;
eFontStyle = PROP_CHAR_FONT_STYLE_ASIAN;
eFontFamily = PROP_CHAR_FONT_FAMILY_ASIAN;
eFontCharSet = PROP_CHAR_FONT_CHAR_SET_ASIAN;
eFontPitch = PROP_CHAR_FONT_PITCH_ASIAN;
break;
case NS_sprm::LN_CRgFtc2:
case NS_sprm::LN_CFtcBi:
eFontName = PROP_CHAR_FONT_NAME_COMPLEX;
eFontStyle = PROP_CHAR_FONT_STYLE_COMPLEX;
eFontFamily = PROP_CHAR_FONT_FAMILY_COMPLEX;
eFontCharSet = PROP_CHAR_FONT_CHAR_SET_COMPLEX;
eFontPitch = PROP_CHAR_FONT_PITCH_COMPLEX;
break;
}
const FontEntry::Pointer_t pFontEntry(pFontTable->getFontEntry(sal_uInt32(nIntValue)));
rContext->Insert(eFontName, true, uno::makeAny( pFontEntry->sFontName ));
// rContext->Insert(eFontStyle, uno::makeAny( pFontEntry-> ));
// rContext->Insert(eFontFamily, uno::makeAny( pFontEntry-> ));
rContext->Insert(eFontCharSet, true, uno::makeAny( (sal_Int16)pFontEntry->nTextEncoding ));
rContext->Insert(eFontPitch, true, uno::makeAny( pFontEntry->nPitchRequest ));
}
}
break;
case NS_sprm::LN_CCharScale: // sprmCCharScale
rContext->Insert( PROP_CHAR_SCALE_WIDTH, true, uno::makeAny( sal_Int16(nIntValue) ));
break;
case NS_sprm::LN_CFImprint: // sprmCFImprint 1 or 0
// FontRelief: NONE, EMBOSSED, ENGRAVED
rContext->Insert(PROP_CHAR_RELIEF, true,
uno::makeAny( nIntValue != 0 ? awt::FontRelief::ENGRAVED : awt::FontRelief::NONE ));
break;
case NS_sprm::LN_CFObj:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFObj
case NS_sprm::LN_CPropRMark:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCPropRMark
case NS_sprm::LN_CSfxText:
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
// The file-format has many character animations. We have only
// one, so we use it always. Suboptimal solution though.
if (nIntValue)
rContext->Insert(PROP_CHAR_FLASH, true, uno::makeAny( true ));
else
rContext->Insert(PROP_CHAR_FLASH, true, uno::makeAny( false ));
break; // sprmCSfxText
case NS_sprm::LN_CFBiDi:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFBiDi
case NS_sprm::LN_CFDiacColor:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFDiacColor
case NS_sprm::LN_CIcoBi:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCIcoBi
case NS_sprm::LN_CDispFldRMark:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCDispFldRMark
case NS_sprm::LN_CIbstRMarkDel:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCIbstRMarkDel
case NS_sprm::LN_CDttmRMarkDel:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCDttmRMarkDel
case NS_sprm::LN_CBrc:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCBrc
case NS_sprm::LN_CShd:
/* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get())
{
CellColorHandlerPtr pCellColorHandler( new CellColorHandler );
pCellColorHandler->setType(CellColorHandler::C);
pProperties->resolve(*pCellColorHandler);
rContext->insert( pCellColorHandler->getProperties(), true );
}
}
break; // sprmCShd
case NS_sprm::LN_CIdslRMarkDel:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCIdslRMarkDel
case NS_sprm::LN_CFUsePgsuSettings:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCFUsePgsuSettings
case NS_sprm::LN_CCpg:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmCCpg
case NS_sprm::LN_CLidBi: // sprmCLidBi language complex
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
case NS_sprm::LN_CRgLid0_80: //sprmCRgLid0_80
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 1 */
//undocumented but interpreted as western language
case NS_sprm::LN_CRgLid0: // sprmCRgLid0 language Western
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
case NS_sprm::LN_CRgLid1: // sprmCRgLid1 language Asian
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
lang::Locale aLocale;
MsLangId::convertLanguageToLocale( (LanguageType)nIntValue, aLocale );
rContext->Insert(NS_sprm::LN_CRgLid0 == nSprmId ? PROP_CHAR_LOCALE :
NS_sprm::LN_CRgLid1 == nSprmId ? PROP_CHAR_LOCALE_ASIAN : PROP_CHAR_LOCALE_COMPLEX,
true,
uno::makeAny( aLocale ) );
}
break;
case NS_sprm::LN_CIdctHint: // sprmCIdctHint
//list table - text offset???
break;
case NS_sprm::LN_PicBrcl:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPicBrcl
case NS_sprm::LN_PicScale:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPicScale
case NS_sprm::LN_PicBrcTop:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPicBrcTop
case NS_sprm::LN_PicBrcLeft:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPicBrcLeft
case NS_sprm::LN_PicBrcBottom:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPicBrcBoConversionHelper::convertTwipToMM100ttom
case NS_sprm::LN_PicBrcRight:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmPicBrcRight
case NS_sprm::LN_ScnsPgn:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmScnsPgn
case NS_sprm::LN_SiHeadingPgn:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetEvenlySpaced( nIntValue > 0 );
break; // sprmSiHeadingPgn
case NS_sprm::LN_SOlstAnm:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmSOlstAnm
case 136:
case NS_sprm::LN_SDxaColWidth: // sprmSDxaColWidth
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
// contains the twip width of the column as 3-byte-code
// the lowet byte contains the index
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->AppendColumnWidth( ConversionHelper::convertTwipToMM100( (nIntValue & 0xffff00) >> 8 ));
break;
case NS_sprm::LN_SDxaColSpacing: // sprmSDxaColSpacing
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
// the lowet byte contains the index
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->AppendColumnSpacing( ConversionHelper::convertTwipToMM100( (nIntValue & 0xffff00) >> 8 ));
break;
case 138:
case NS_sprm::LN_SFEvenlySpaced:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetEvenlySpaced( nIntValue > 0 );
break; // sprmSFEvenlySpaced
case NS_sprm::LN_SFProtected: // sprmSFProtected
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
//todo: missing feature - unlocked sections in protected documents
break;
case NS_sprm::LN_SDmBinFirst: // sprmSDmBinFirst
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetFirstPaperBin(nIntValue);
break;
case NS_sprm::LN_SDmBinOther: // sprmSDmBinOther
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetPaperBin( nIntValue );
break;
case NS_sprm::LN_SBkc: // sprmSBkc
/* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
/* break type
0 - No break
1 - New Column
2 - New page
3 - Even page
4 - odd page
*/
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetBreakType( nIntValue );
break;
case 143:
case NS_sprm::LN_SFTitlePage: // sprmSFTitlePage
case NS_ooxml::LN_EG_SectPrContents_titlePg:
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetTitlePage( nIntValue > 0 ? true : false );//section has title page
}
break;
case 144:
case NS_sprm::LN_SCcolumns: // sprmSCcolumns
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
//no of columns - 1
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetColumnCount( (sal_Int16) nIntValue );
break;
case 145:
case NS_sprm::LN_SDxaColumns: // sprmSDxaColumns
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
//column distance - default 708 twip
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetColumnDistance( ConversionHelper::convertTwipToMM100( nIntValue ) );
break;
case NS_sprm::LN_SFAutoPgn:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmSFAutoPgn
case 147:
case NS_sprm::LN_SNfcPgn: // sprmSNfcPgn
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
//page numbering 0 - Arab, 1 - ROMAN, 2 - roman, 3 - ABC, 4 abc
sal_Int16 nNumbering;
switch( nIntValue )
{
case 1: nNumbering = style::NumberingType::ROMAN_UPPER;
case 2: nNumbering = style::NumberingType::ROMAN_LOWER;
case 3: nNumbering = style::NumberingType::CHARS_UPPER_LETTER;
case 4: nNumbering = style::NumberingType::CHARS_LOWER_LETTER;
case 0:
default:
nNumbering = style::NumberingType::ARABIC;
}
rContext->Insert( PROP_NUMBERING_TYPE, false, uno::makeAny( nNumbering ) );
break;
case NS_sprm::LN_SDyaPgn:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmSDyaPgn
case NS_sprm::LN_SDxaPgn:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmSDxaPgn
case 150:
case NS_sprm::LN_SFPgnRestart: // sprmSFPgnRestart
{
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetPageNoRestart( nIntValue > 0 );
}
break;
case NS_sprm::LN_SFEndnote:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmSFEndnote
case 154:
case NS_sprm::LN_SNLnnMod:// sprmSNLnnMod
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if( pSectionContext )
pSectionContext->SetLnnMod( nIntValue );
break;
case 155:
case NS_sprm::LN_SDxaLnn: // sprmSDxaLnn
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if( pSectionContext )
pSectionContext->SetdxaLnn( nIntValue );
break;
case 152:
case NS_sprm::LN_SLnc:// sprmSLnc
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if( pSectionContext )
pSectionContext->SetLnc( nIntValue );
break;
case 160:
case NS_sprm::LN_SLnnMin: // sprmSLnnMin
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if( pSectionContext )
pSectionContext->SetLnnMin( nIntValue );
break;
case NS_sprm::LN_SGprfIhdt:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
//flags about header/footer sharing and footnotes?
/* ww8scan.hxx:
* WW8_HEADER_EVEN = 0x01, WW8_HEADER_ODD = 0x02, WW8_FOOTER_EVEN = 0x04,
* WW8_FOOTER_ODD = 0x08, WW8_HEADER_FIRST = 0x10, WW8_FOOTER_FIRST = 0x20
*/
// if(pSectionContext)
break; // sprmSGprfIhdt
case NS_sprm::LN_SDyaHdrTop: // sprmSDyaHdrTop
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
// default 720 twip
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetHeaderTop( ConversionHelper::convertTwipToMM100( nIntValue ));
break;
case NS_sprm::LN_SDyaHdrBottom: // sprmSDyaHdrBottom
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
// default 720 twip
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetHeaderBottom( ConversionHelper::convertTwipToMM100( nIntValue ) );
break;
case 158:
case NS_sprm::LN_SLBetween: // sprmSLBetween
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetSeparatorLine( nIntValue > 0 );
break;
case NS_sprm::LN_SVjc:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
break; // sprmSVjc
case 161:
case NS_sprm::LN_SPgnStart: // sprmSPgnStart
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//page number
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetPageNumber( nIntValue );
break;
case 162:
case NS_sprm::LN_SBOrientation:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//todo: the old filter assumed that a value of 2 points to double-pages layout
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetLandscape( nIntValue > 0 );
rContext->Insert( PROP_IS_LANDSCAPE , false, uno::makeAny( nIntValue > 0 ));
break; // sprmSBOrientation
case NS_sprm::LN_SBCustomize:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
break; // sprmSBCustomize
case 165:
case NS_sprm::LN_SYaPage: // sprmSYaPage
{
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//page height, rounded to default values, default: 0x3dc0 twip
sal_Int32 nHeight = ConversionHelper::convertTwipToMM100( nIntValue );
rContext->Insert( PROP_HEIGHT, false, uno::makeAny( PaperInfo::sloppyFitPageDimension( nHeight ) ) );
}
break;
case NS_sprm::LN_SXaPage: // sprmSXaPage
{
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//page width, rounded to default values, default 0x2fd0 twip
sal_Int32 nWidth = ConversionHelper::convertTwipToMM100( nIntValue );
rContext->Insert( PROP_WIDTH, false, uno::makeAny( PaperInfo::sloppyFitPageDimension( nWidth ) ) );
}
break;
case 166:
case NS_sprm::LN_SDxaLeft: // sprmSDxaLeft
{
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//left page margin default 0x708 twip
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( nIntValue );
if(pSectionContext)
pSectionContext->SetLeftMargin( nConverted );
rContext->Insert( PROP_LEFT_MARGIN, false, uno::makeAny( nConverted ));
}
break;
case 167:
case NS_sprm::LN_SDxaRight: // sprmSDxaRight
{
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//right page margin default 0x708 twip
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( nIntValue );
if(pSectionContext)
pSectionContext->SetRightMargin( nConverted );
rContext->Insert( PROP_RIGHT_MARGIN, false, uno::makeAny( nConverted ));
}
break;
case 168:
case NS_sprm::LN_SDyaTop: // sprmSDyaTop
{
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//top page margin default 1440 twip
//todo: check cast of SVBT16
sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( static_cast< sal_Int16 >( nIntValue ) );
rContext->Insert( PROP_TOP_MARGIN, false, uno::makeAny( nConverted ) );
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetTopMargin( nConverted );
}
break;
case 169:
case NS_sprm::LN_SDyaBottom: // sprmSDyaBottom
{
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//bottom page margin default 1440 twip
//todo: check cast of SVBT16
sal_Int32 nConverted = ConversionHelper::convertTwipToMM100( static_cast< sal_Int16 >( nIntValue ) );
rContext->Insert( PROP_BOTTOM_MARGIN, false, uno::makeAny( nConverted) );
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetBottomMargin( nConverted );
}
break;
case 170:
case NS_sprm::LN_SDzaGutter: // sprmSDzaGutter
{
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
// gutter is added to one of the margins of a section depending on RTL, can be placed on top either
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
{
pSectionContext->SetDzaGutter( ConversionHelper::convertTwipToMM100( nIntValue ) );
}
}
break;
case NS_sprm::LN_SDmPaperReq: // sprmSDmPaperReq
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
//paper code - no handled in old filter
break;
case NS_sprm::LN_SPropRMark:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmSPropRMark
case NS_sprm::LN_SFBiDi:// sprmSFBiDi
{
/* WRITERFILTERSTATUS: done: 50, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetSFBiDi( nIntValue > 0 );
}
break;
case NS_sprm::LN_SFFacingCol:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmSFFacingCol
case NS_sprm::LN_SFRTLGutter: // sprmSFRTLGutter
{
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
pSectionContext->SetGutterRTL( nIntValue > 0 );
}
break;
case NS_sprm::LN_SBrcTop: // sprmSBrcTop
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_sprm::LN_SBrcLeft: // sprmSBrcLeft
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_sprm::LN_SBrcBottom: // sprmSBrcBottom
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_sprm::LN_SBrcRight: // sprmSBrcRight
/* WRITERFILTERSTATUS: Sectiondone: 100, planned: 0.5, spent: 0 */
{
table::BorderLine aBorderLine;
sal_Int32 nLineDistance = ConversionHelper::MakeBorderLine( nIntValue, aBorderLine );
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
{
static const BorderPosition aPositions[4] =
{
BORDER_TOP,
BORDER_LEFT,
BORDER_BOTTOM,
BORDER_RIGHT
};
pSectionContext->SetBorder( aPositions[nSprmId - NS_sprm::LN_SBrcTop], nLineDistance, aBorderLine );
}
}
break;
case NS_sprm::LN_SPgbProp: // sprmSPgbProp
{
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
{
pSectionContext->ApplyBorderToPageStyles( m_pImpl->GetPageStyles(), m_pImpl->GetTextFactory(), nIntValue );
}
}
break;
case NS_sprm::LN_SDxtCharSpace:
{
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
{
pSectionContext->SetDxtCharSpace( nIntValue );
}
}
break; // sprmSDxtCharSpace
case NS_sprm::LN_SDyaLinePitch: // sprmSDyaLinePitch
{
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//see SwWW8ImplReader::SetDocumentGrid
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
{
pSectionContext->SetGridLinePitch( ConversionHelper::convertTwipToMM100( nIntValue ) );
}
}
break;
case 0x703a: //undocumented, grid related?
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
OSL_ENSURE( false, "TODO: not handled yet"); //nIntValue like 0x008a2373 ?
break;
case NS_sprm::LN_SClm:
{
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
sal_Int16 nGridType = text::TextGridMode::NONE;
switch( nIntValue )
{
case 0:
nGridType = text::TextGridMode::NONE;
break;
case 3:
//Text snaps to char grid, this doesn't make a lot of sense to
//me. This is closer than LINES_CHARS
nGridType = text::TextGridMode::LINES;
break;
case 1:
nGridType = text::TextGridMode::LINES_AND_CHARS;
break;
case 2:
nGridType = text::TextGridMode::LINES;
break;
default:;
}
rContext->Insert( PROP_GRID_MODE, false, uno::makeAny( nGridType ) );
//Seems to force this behaviour in word ?
if(nGridType != text::TextGridMode::NONE)
m_pImpl->SetDocumentSettingsProperty(
PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_ADD_EXTERNAL_LEADING ),
uno::makeAny( true ) );
}
break; // sprmSClm
case NS_sprm::LN_STextFlow:
case NS_ooxml::LN_EG_SectPrContents_textDirection:
/* WRITERFILTERSTATUS: done: 100, planned: 2, spent: 0 */
{
/* 0 HoriLR 1 Vert TR 2 Vert TR 3 Vert TT 4 HoriLT
only 0 and 1 can be imported correctly
*/
sal_Int16 nDirection = text::WritingMode_LR_TB;
switch( nIntValue )
{
case 0:
case 4:
nDirection = text::WritingMode_LR_TB;
break;
case 1:
case 2:
case 3:
nDirection = text::WritingMode_TB_RL;
break;
default:;
}
PropertyMap * pTargetContext = rContext.get();
if (pSectionContext != NULL &&
nSprmId == NS_ooxml::LN_EG_SectPrContents_textDirection)
{
pTargetContext = pSectionContext;
}
pTargetContext->Insert(PROP_WRITING_MODE, false, uno::makeAny( nDirection ) );
}
break; // sprmSTextFlow
case NS_sprm::LN_TJc: // sprmTJc
case NS_sprm::LN_TDxaLeft:
case NS_sprm::LN_TDxaGapHalf:
case NS_sprm::LN_TFCantSplit:
case NS_sprm::LN_TTableHeader:
case NS_sprm::LN_TTableBorders: // sprmTTableBorders
{
OSL_ENSURE( false, "table propeties should be handled by the table manager");
}
break;
case NS_sprm::LN_TDefTable10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTDefTable10
case NS_sprm::LN_TDyaRowHeight:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTDyaRowHeight
case NS_sprm::LN_TDefTable:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTDefTable
case NS_sprm::LN_TDefTableShd:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTDefTableShd
case NS_sprm::LN_TTlp:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTTlp
case NS_sprm::LN_TFBiDi:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTFBiDi
case NS_sprm::LN_THTMLProps:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTHTMLProps
case NS_sprm::LN_TSetBrc:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTSetBrc
case NS_sprm::LN_TInsert:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTInsert
case NS_sprm::LN_TDelete:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTDelete
case NS_sprm::LN_TDxaCol:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTDxaCol
case NS_sprm::LN_TMerge:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTMerge
case NS_sprm::LN_TSplit:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTSplit
case NS_sprm::LN_TSetBrc10:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTSetBrc10
case 164: // sprmTSetShd
case NS_sprm::LN_TSetShd:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTSetShd
case NS_sprm::LN_TSetShdOdd:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTSetShdOdd
case NS_sprm::LN_TTextFlow:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTTextFlow
case NS_sprm::LN_TDiagLine:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTDiagLine
case NS_sprm::LN_TVertMerge:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTVertMerge
case NS_sprm::LN_TVertAlign:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; // sprmTVertAlign
// the following are not part of the official documentation
case 0x6870: //TxtForeColor
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
//contains a color as 0xTTRRGGBB while SO uses 0xTTRRGGBB
sal_Int32 nColor = ConversionHelper::ConvertColor(nIntValue);
rContext->Insert(PROP_CHAR_COLOR, true, uno::makeAny( nColor ) );
}
break;
case 0x4874:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; //seems to be a language id for Asian text - undocumented
case 0x6877: //underlining color
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
sal_Int32 nColor = ConversionHelper::ConvertColor(nIntValue);
rContext->Insert(PROP_CHAR_UNDERLINE_HAS_COLOR, true, uno::makeAny( true ) );
rContext->Insert(PROP_CHAR_UNDERLINE_COLOR, true, uno::makeAny( nColor ) );
}
break;
case 0x6815:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; //undocumented
case NS_sprm::LN_CIndrsid:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; //undocumented
case 0x6467:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; //undocumented
case 0xF617:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; //undocumented
case 0xd634: // sprmTNewSpacing - table spacing ( see WW8TabBandDesc::ProcessSpacing() )
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break;
case NS_sprm::LN_TTRLeft:
/* WRITERFILTERSTATUS: done: 0, planned: 2, spent: 0 */
break; //undocumented
case 0x4888:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
case 0x6887:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
//properties of list levels - undocumented
break;
case 0xd234:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
case 0xd235:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
case 0xd236:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
case 0xd237:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
break;//undocumented section properties
case NS_sprm::LN_CEastAsianLayout:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
resolveSprmProps(*this, rSprm);
break;
case NS_ooxml::LN_CT_Tabs_tab:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
resolveSprmProps(*this, rSprm);
m_pImpl->IncorporateTabStop(m_pImpl->m_aCurrentTabStop);
m_pImpl->m_aCurrentTabStop = DeletableTabStop();
break;
case NS_ooxml::LN_CT_PPrBase_tabs:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
// Initialize tab stop vector from style sheet
if( !m_pImpl->IsStyleSheetImport() )
{
uno::Any aValue = m_pImpl->GetPropertyFromStyleSheet(PROP_PARA_TAB_STOPS);
uno::Sequence< style::TabStop > aStyleTabStops;
if(aValue >>= aStyleTabStops)
{
m_pImpl->InitTabStopFromStyle( aStyleTabStops );
}
}
resolveSprmProps(*this, rSprm);
rContext->Insert(PROP_PARA_TAB_STOPS, true, uno::makeAny( m_pImpl->GetCurrentTabStopAndClear()));
}
break;
case NS_ooxml::LN_CT_PPr_sectPr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_EG_RPrBase_color:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_EG_RPrBase_rFonts:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_EG_RPrBase_bdr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_EG_RPrBase_eastAsianLayout:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_EG_RPrBase_u:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_EG_RPrBase_lang:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_PPrBase_spacing:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_PPrBase_ind:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_RPrDefault_rPr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_PPrDefault_pPr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_DocDefaults_pPrDefault:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_DocDefaults_rPrDefault:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_Style_pPr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_Style_rPr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_PPr_rPr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_PPrBase_numPr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
resolveSprmProps(*this, rSprm);
break;
case NS_ooxml::LN_EG_SectPrContents_footnotePr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_EG_SectPrContents_endnotePr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
m_pImpl->SetInFootnoteProperties( NS_ooxml::LN_EG_SectPrContents_footnotePr == nSprmId );
resolveSprmProps(*this, rSprm);
break;
case NS_ooxml::LN_EG_SectPrContents_lnNumType:
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
{
resolveSprmProps(*this, rSprm);
LineNumberSettings aSettings = m_pImpl->GetLineNumberSettings();
aSettings.bIsOn = true;
m_pImpl->SetLineNumberSettings( aSettings );
//apply settings at XLineNumberingProperties
try
{
uno::Reference< text::XLineNumberingProperties > xLineNumberingProperties( m_pImpl->GetTextDocument(), uno::UNO_QUERY_THROW );
uno::Reference< beans::XPropertySet > xLineNumberingPropSet = xLineNumberingProperties->getLineNumberingProperties();
PropertyNameSupplier& rNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier();
xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_IS_ON ), uno::makeAny(true) );
if( aSettings.nInterval )
xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_INTERVAL ), uno::makeAny((sal_Int16)aSettings.nInterval) );
if( aSettings.nDistance )
xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_DISTANCE ), uno::makeAny(aSettings.nDistance) );
xLineNumberingPropSet->setPropertyValue(rNameSupplier.GetName( PROP_RESTART_AT_EACH_PAGE ), uno::makeAny(aSettings.bRestartAtEachPage) );
}
catch( const uno::Exception& e)
{
(void) e;
}
}
break;
case NS_ooxml::LN_CT_PPrBase_framePr:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
PropertyMapPtr pContext = m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH);
if( pContext.get() )
{
ParagraphPropertyMap* pParaContext = dynamic_cast< ParagraphPropertyMap* >( pContext.get() );
pParaContext->SetFrameMode();
}
else
{
//TODO: What about style sheet import of frame properties
}
resolveSprmProps(*this, rSprm);
}
break;
case NS_ooxml::LN_EG_SectPrContents_pgSz:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
CT_PageSz.code = 0;
{
PaperInfo aLetter(PAPER_LETTER);
CT_PageSz.w = aLetter.getWidth();
CT_PageSz.h = aLetter.getHeight();
}
CT_PageSz.orient = false;
resolveSprmProps(*this, rSprm);
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
{
pSectionContext->Insert( PROP_HEIGHT, false, uno::makeAny( CT_PageSz.h ) );
pSectionContext->Insert( PROP_IS_LANDSCAPE, false, uno::makeAny( CT_PageSz.orient ));
pSectionContext->Insert( PROP_WIDTH, false, uno::makeAny( CT_PageSz.w ) );
pSectionContext->SetLandscape( CT_PageSz.orient );
}
break;
case NS_ooxml::LN_EG_SectPrContents_pgMar:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
m_pImpl->InitPageMargins();
resolveSprmProps(*this, rSprm);
OSL_ENSURE(pSectionContext, "SectionContext unavailable!");
if(pSectionContext)
{
const _PageMar& rPageMar = m_pImpl->GetPageMargins();
pSectionContext->SetTopMargin( rPageMar.top );
pSectionContext->SetRightMargin( rPageMar.right );
pSectionContext->SetBottomMargin( rPageMar.bottom );
pSectionContext->SetLeftMargin( rPageMar.left );
pSectionContext->SetHeaderTop( rPageMar.header );
pSectionContext->SetHeaderBottom( rPageMar.footer );
}
break;
case NS_ooxml::LN_EG_SectPrContents_cols:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get())
{
SectionColumnHandlerPtr pSectHdl( new SectionColumnHandler );
pProperties->resolve(*pSectHdl);
if(pSectionContext)
{
if( pSectHdl->IsEqualWidth() )
{
pSectionContext->SetEvenlySpaced( true );
pSectionContext->SetColumnCount( (sal_Int16) (pSectHdl->GetNum() - 1) );
pSectionContext->SetColumnDistance( pSectHdl->GetSpace() );
pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() );
}
else if( !pSectHdl->GetColumns().empty() )
{
pSectionContext->SetEvenlySpaced( false );
pSectionContext->SetColumnDistance( pSectHdl->GetSpace() );
pSectionContext->SetColumnCount( (sal_Int16)(pSectHdl->GetColumns().size() -1));
std::vector<_Column>::const_iterator tmpIter = pSectHdl->GetColumns().begin();
for (; tmpIter != pSectHdl->GetColumns().end(); tmpIter++)
{
pSectionContext->AppendColumnWidth( tmpIter->nWidth );
if ((tmpIter != pSectHdl->GetColumns().end() - 1) || (tmpIter->nSpace > 0))
pSectionContext->AppendColumnSpacing( tmpIter->nSpace );
}
pSectionContext->SetSeparatorLine( pSectHdl->IsSeparator() );
}
else if( pSectHdl->GetNum() > 0 )
{
pSectionContext->SetColumnCount( (sal_Int16)pSectHdl->GetNum() - 1 );
pSectionContext->SetColumnDistance( pSectHdl->GetSpace() );
}
}
}
}
break;
case NS_ooxml::LN_EG_SectPrContents_docGrid:
resolveSprmProps(*this, rSprm);
break;
case NS_ooxml::LN_EG_SectPrContents_pgBorders:
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get( ) && pSectionContext )
{
PageBordersHandlerPtr pHandler( new PageBordersHandler );
pProperties->resolve( *pHandler );
// Set the borders to the context and apply them to the styles
pHandler->SetBorders( pSectionContext );
pSectionContext->SetBorderParams( pHandler->GetDisplayOffset( ) );
}
}
break;
case NS_ooxml::LN_CT_PPrBase_pStyle:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
m_pImpl->SetCurrentParaStyleId( sStringValue );
StyleSheetTablePtr pStyleTable = m_pImpl->GetStyleSheetTable();
const ::rtl::OUString sConvertedStyleName = pStyleTable->ConvertStyleName( sStringValue, true );
if (m_pImpl->GetTopContext() && m_pImpl->GetTopContextType() != CONTEXT_SECTION)
m_pImpl->GetTopContext()->Insert( PROP_PARA_STYLE_NAME, true, uno::makeAny( sConvertedStyleName ));
const StyleSheetEntryPtr pEntry = pStyleTable->FindStyleSheetByISTD(sStringValue);
//apply numbering to paragraph if it was set at the style
OSL_ENSURE( pEntry.get(), "no style sheet found" );
const StyleSheetPropertyMap* pStyleSheetProperties = dynamic_cast<const StyleSheetPropertyMap*>(pEntry ? pEntry->pProperties.get() : 0);
if( pStyleSheetProperties && pStyleSheetProperties->GetListId() >= 0 )
rContext->Insert( PROP_NUMBERING_STYLE_NAME, true, uno::makeAny(
ListDef::GetStyleName( pStyleSheetProperties->GetListId( ) ) ), false);
if( pStyleSheetProperties && pStyleSheetProperties->GetListLevel() >= 0 )
rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny(pStyleSheetProperties->GetListLevel()), false);
}
break;
case NS_ooxml::LN_EG_RPrBase_rStyle:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
rtl::OUString sConvertedName( m_pImpl->GetStyleSheetTable()->ConvertStyleName( sStringValue, true ) );
// First check if the style exists in the document.
StyleSheetEntryPtr pEntry = m_pImpl->GetStyleSheetTable( )->FindStyleSheetByStyleName( sConvertedName );
bool bExists = pEntry.get( ) && ( pEntry->nStyleTypeCode == STYLE_TYPE_CHAR );
// Add the property if the style exists
if ( bExists && m_pImpl->GetTopContext() )
m_pImpl->GetTopContext()->Insert( PROP_CHAR_STYLE_NAME, true, uno::makeAny( sConvertedName ) );
}
break;
case NS_ooxml::LN_CT_TblPrBase_tblCellMar: //cell margins
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
resolveSprmProps(*this, rSprm);//contains LN_CT_TblCellMar_top, LN_CT_TblCellMar_left, LN_CT_TblCellMar_bottom, LN_CT_TblCellMar_right
}
break;
case NS_ooxml::LN_CT_TblCellMar_top:
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
case NS_ooxml::LN_CT_TblCellMar_left:
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
case NS_ooxml::LN_CT_TblCellMar_bottom:
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
case NS_ooxml::LN_CT_TblCellMar_right:
/* WRITERFILTERSTATUS: done: 100, planned: 0, spent: 0 */
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get())
{
MeasureHandlerPtr pMeasureHandler( new MeasureHandler );
pProperties->resolve(*pMeasureHandler);
sal_Int32 nMeasureValue = pMeasureHandler->getMeasureValue();
PropertyIds eId = META_PROP_CELL_MAR_TOP;
switch(nSprmId)
{
case NS_ooxml::LN_CT_TblCellMar_top:
/* WRITERFILTERSTATUS: */
break;
case NS_ooxml::LN_CT_TblCellMar_left:
/* WRITERFILTERSTATUS: */
eId = META_PROP_CELL_MAR_LEFT;
break;
case NS_ooxml::LN_CT_TblCellMar_bottom:
/* WRITERFILTERSTATUS: */
eId = META_PROP_CELL_MAR_BOTTOM;
break;
case NS_ooxml::LN_CT_TblCellMar_right:
/* WRITERFILTERSTATUS: */
eId = META_PROP_CELL_MAR_RIGHT;
break;
default:;
}
rContext->Insert( eId, false, uno::makeAny(nMeasureValue), false);
}
}
break;
case NS_sprm::LN_CFNoProof: //0x875 no grammar and spell checking, unsupported
/* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
break;
case NS_ooxml::LN_anchor_anchor: // at_character drawing
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_inline_inline: // as_character drawing
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get())
{
GraphicImportType eGraphicType =
(NS_ooxml::LN_anchor_anchor ==
sal::static_int_cast<Id>(nSprmId)) ?
IMPORT_AS_DETECTED_ANCHOR :
IMPORT_AS_DETECTED_INLINE;
GraphicImportPtr pGraphicImport =
m_pImpl->GetGraphicImport(eGraphicType);
pProperties->resolve(*pGraphicImport);
m_pImpl->ImportGraphic(pProperties, eGraphicType);
if( !pGraphicImport->IsGraphic() )
{
m_pImpl->ResetGraphicImport();
// todo: It's a shape, now start shape import
}
}
}
break;
case NS_ooxml::LN_EG_RPrBase_vertAlign:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
sal_Int16 nEscapement = 0;
sal_Int8 nProp = 58;
if( sStringValue.equalsAscii( "superscript" ))
nEscapement = 101;
else if( sStringValue.equalsAscii( "subscript" ))
nEscapement = -101;
else
nProp = 100;
rContext->Insert(PROP_CHAR_ESCAPEMENT, true, uno::makeAny( nEscapement ) );
rContext->Insert(PROP_CHAR_ESCAPEMENT_HEIGHT, true, uno::makeAny( nProp ) );
}
break;
// case NS_ooxml::LN_CT_FtnEdn_type
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
// case NS_ooxml::LN_CT_FtnEdn_id
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
// case NS_ooxml::LN_EG_FtnEdnNumProps_numRestart
case NS_ooxml::LN_CT_FtnProps_pos:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
//footnotes in word can be at page end or beneath text - writer supports only the first
//endnotes in word can be at section end or document end - writer supports only the latter
// -> so this property can be ignored
break;
case NS_ooxml::LN_EG_FtnEdnNumProps_numStart:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_FtnProps_numFmt:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_CT_EdnProps_numFmt:
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
{
try
{
uno::Reference< beans::XPropertySet > xFtnEdnSettings;
if( m_pImpl->IsInFootnoteProperties() )
{
uno::Reference< text::XFootnotesSupplier> xFootnotesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY );
xFtnEdnSettings = xFootnotesSupplier->getFootnoteSettings();
}
else
{
uno::Reference< text::XEndnotesSupplier> xEndnotesSupplier( m_pImpl->GetTextDocument(), uno::UNO_QUERY );
xFtnEdnSettings = xEndnotesSupplier->getEndnoteSettings();
}
if( NS_ooxml::LN_EG_FtnEdnNumProps_numStart == nSprmId )
{
xFtnEdnSettings->setPropertyValue(
PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_START_AT),
uno::makeAny( sal_Int16( nIntValue - 1 )));
}
else
{
sal_Int16 nNumType = ConversionHelper::ConvertNumberingType( nIntValue );
xFtnEdnSettings->setPropertyValue(
PropertyNameSupplier::GetPropertyNameSupplier().GetName( PROP_NUMBERING_TYPE),
uno::makeAny( nNumType ));
}
}
catch( const uno::Exception& e)
{
(void) e;
}
}
break;
case NS_ooxml::LN_paratrackchange:
m_pImpl->StartParaChange( );
case NS_ooxml::LN_trackchange:
/* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */
case NS_ooxml::LN_EG_RPrContent_rPrChange:
/* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */
{
m_pImpl->AddNewRedline( );
resolveSprmProps(*this, rSprm );
// now the properties author, date and id should be available
sal_Int32 nToken = m_pImpl->GetCurrentRedlineToken();
switch( nToken & 0xffff )
{
case ooxml::OOXML_mod :
case ooxml::OOXML_ins :
case ooxml::OOXML_del : break;
default: OSL_ENSURE( false, "redline token other than mod, ins or del" );
}
m_pImpl->EndParaChange( );
}
break;
case NS_ooxml::LN_CT_RPrChange_rPr:
/* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */
break;
/* WRITERFILTERSTATUS: done: 0, planned: 4, spent: 0 */
case NS_ooxml::LN_object:
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( pProperties.get( ) )
{
OLEHandlerPtr pOLEHandler( new OLEHandler );
pProperties->resolve(*pOLEHandler);
if ( pOLEHandler->isOLEObject( ) )
{
::rtl::OUString sStreamName = pOLEHandler->copyOLEOStream( m_pImpl->GetTextDocument() );
if( sStreamName.getLength() )
{
m_pImpl->appendOLE( sStreamName, pOLEHandler );
}
}
}
}
break;
// case NS_ooxml::LN_CT_EdnProps_pos
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
// case NS_ooxml::LN_CT_EdnProps_numFmt
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
// case NS_ooxml::LN_CT_FtnDocProps_footnote
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
// case NS_ooxml::LN_CT_EdnDocProps_endnote
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
//break;
case NS_ooxml::LN_EG_HdrFtrReferences_headerReference: // header reference - not needed
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
case NS_ooxml::LN_EG_HdrFtrReferences_footerReference: // footer reference - not needed
/* WRITERFILTERSTATUS: done: 100, planned: 0.5, spent: 0 */
break;
case NS_ooxml::LN_EG_RPrBase_snapToGrid: // "Use document grid settings for inter-paragraph spacing"
/* WRITERFILTERSTATUS: done: 0, planned: 0.5, spent: 0 */
break;
case NS_sprm::LN_PContextualSpacing:
//TODO: determines whether top/bottom paragraph spacing is added if equal styles are following - unsupported
break;
case NS_ooxml::LN_EG_SectPrContents_formProt: //section protection, only form editing is enabled - unsupported
case NS_ooxml::LN_EG_SectPrContents_vAlign:
case NS_ooxml::LN_EG_RPrBase_fitText:
/* WRITERFILTERSTATUS: done: 0, planned: 0, spent: 0 */
break;
case NS_ooxml::LN_ffdata:
{
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if (pProperties.get() != NULL)
{
FFDataHandler::Pointer_t pFFDataHandler(new FFDataHandler());
pProperties->resolve(*pFFDataHandler);
m_pImpl->SetFieldFFData(pFFDataHandler);
}
}
break;
default:
{
#ifdef DEBUG_DOMAINMAPPER
dmapper_logger->startElement("unhandled");
dmapper_logger->attribute("id", nSprmId);
dmapper_logger->endElement("unhandled");
#endif
}
}
}