sw/source/filter/ascii/wrtasc.cxx | 5 - sw/source/filter/basflt/fltini.cxx | 13 +- sw/source/filter/html/css1atr.cxx | 61 ++++-------- sw/source/filter/html/htmlatr.cxx | 49 +++------- sw/source/filter/html/htmlcss1.cxx | 149 +++++++++++++------------------ sw/source/filter/html/htmldrawreader.cxx | 7 - sw/source/filter/html/htmlflywriter.cxx | 99 ++++++++------------ sw/source/filter/html/htmlform.cxx | 64 ++++--------- sw/source/filter/html/htmlgrin.cxx | 13 +- sw/source/filter/html/htmlplug.cxx | 7 - sw/source/filter/html/htmlsect.cxx | 34 ++----- sw/source/filter/html/htmltab.cxx | 52 ++++------ sw/source/filter/html/htmltabw.cxx | 15 +-- sw/source/filter/html/svxcss1.cxx | 60 ++++-------- sw/source/filter/html/swhtml.cxx | 10 -- sw/source/filter/html/wrthtml.cxx | 58 ++++-------- sw/source/filter/writer/wrtswtbl.cxx | 29 ++---- 17 files changed, 287 insertions(+), 438 deletions(-)
New commits: commit 04e325131f3aeec0910257b261c9624de2b59542 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Mar 3 09:55:14 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Mar 4 07:51:18 2022 +0100 use SfxItemSet::GetItemIfSet in sw/source/filter Change-Id: I8712a42236310a268fcbd7c47c01899333f4731c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130904 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/source/filter/ascii/wrtasc.cxx b/sw/source/filter/ascii/wrtasc.cxx index e13b4efc9414..db256e667663 100644 --- a/sw/source/filter/ascii/wrtasc.cxx +++ b/sw/source/filter/ascii/wrtasc.cxx @@ -210,12 +210,11 @@ void SwASCWriter::SetupFilterOptions(SfxMedium& rMedium) const SfxItemSet* pSet = rMedium.GetItemSet(); if( nullptr != pSet ) { - const SfxPoolItem* pItem; - if( SfxItemState::SET == pSet->GetItemState( SID_FILE_FILTEROPTIONS, true, &pItem ) ) + if( const SfxStringItem* pItem = pSet->GetItemIfSet( SID_FILE_FILTEROPTIONS ) ) { SwAsciiOptions aOpt; OUString sItemOpt; - sItemOpt = static_cast<const SfxStringItem*>(pItem)->GetValue(); + sItemOpt = pItem->GetValue(); aOpt.ReadUserData(sItemOpt); SetAsciiOptions(aOpt); } diff --git a/sw/source/filter/basflt/fltini.cxx b/sw/source/filter/basflt/fltini.cxx index 8e421a3610b4..7948fa0782c6 100644 --- a/sw/source/filter/basflt/fltini.cxx +++ b/sw/source/filter/basflt/fltini.cxx @@ -271,13 +271,12 @@ void StgReader::SetFltName( const OUString& rFltNm ) void CalculateFlySize(SfxItemSet& rFlySet, const SwNodeIndex& rAnchor, SwTwips nPageWidth) { - const SfxPoolItem* pItem = nullptr; - if( SfxItemState::SET != rFlySet.GetItemState( RES_FRM_SIZE, true, &pItem ) || - MINFLY > static_cast<const SwFormatFrameSize*>(pItem)->GetWidth() ) + const SwFormatFrameSize* pFrameSizeItem = rFlySet.GetItemIfSet( RES_FRM_SIZE ); + if( !pFrameSizeItem || MINFLY > pFrameSizeItem->GetWidth() ) { std::unique_ptr<SwFormatFrameSize> aSz(rFlySet.Get(RES_FRM_SIZE).Clone()); - if (pItem) - aSz.reset(static_cast<SwFormatFrameSize*>(pItem->Clone())); + if (pFrameSizeItem) + aSz.reset(pFrameSizeItem->Clone()); SwTwips nWidth; // determine the width; if there is a table use the width of the table; @@ -369,9 +368,9 @@ void CalculateFlySize(SfxItemSet& rFlySet, const SwNodeIndex& rAnchor, aSz->SetHeight( MINFLY ); rFlySet.Put( *aSz ); } - else if( MINFLY > static_cast<const SwFormatFrameSize*>(pItem)->GetHeight() ) + else if( MINFLY > pFrameSizeItem->GetHeight() ) { - std::unique_ptr<SwFormatFrameSize> aSz(static_cast<SwFormatFrameSize*>(pItem->Clone())); + std::unique_ptr<SwFormatFrameSize> aSz(pFrameSizeItem->Clone()); aSz->SetHeight( MINFLY ); rFlySet.Put( std::move(aSz) ); } diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx index 882d7678ef55..ef3274ac6faf 100644 --- a/sw/source/filter/html/css1atr.cxx +++ b/sw/source/filter/html/css1atr.cxx @@ -1192,12 +1192,10 @@ bool SwHTMLWriter::HasScriptDependentItems( const SfxItemSet& rItemSet, } } - const SfxPoolItem *pItem; + const SwFormatDrop *pDrop; if( bCheckDropCap && - SfxItemState::SET == rItemSet.GetItemState( RES_PARATR_DROP, true, - &pItem ) ) + (pDrop = rItemSet.GetItemIfSet( RES_PARATR_DROP )) ) { - const SwFormatDrop *pDrop = static_cast<const SwFormatDrop *>(pItem); const SwCharFormat *pDCCharFormat = pDrop->GetCharFormat(); if( pDCCharFormat ) { @@ -1580,12 +1578,10 @@ static Writer& OutCSS1_SwFormat( Writer& rWrt, const SwFormat& rFormat, } // export Drop-Caps - const SfxPoolItem *pItem; - if( SfxItemState::SET==aItemSet.GetItemState( RES_PARATR_DROP, false, &pItem )) + if( const SwFormatDrop *pDrop = aItemSet.GetItemIfSet( RES_PARATR_DROP, false ) ) { OUString sOut = aSelector + ":" + OStringToOUString( sCSS1_first_letter, RTL_TEXTENCODING_ASCII_US ); - const SwFormatDrop *pDrop = static_cast<const SwFormatDrop *>(pItem); OutCSS1DropCapRule( rHTMLWrt, sOut, *pDrop, CSS1_FMT_ISTAG != nDeep, bHasScriptDependencies ); } @@ -2924,14 +2920,8 @@ static Writer& OutCSS1_SvxULSpace_SvxLRSpace( Writer& rWrt, static Writer& OutCSS1_SvxULSpace_SvxLRSpace( Writer& rWrt, const SfxItemSet& rItemSet ) { - const SvxULSpaceItem *pULSpace = nullptr; - const SvxLRSpaceItem *pLRSpace = nullptr; - const SfxPoolItem *pItem; - if( SfxItemState::SET == rItemSet.GetItemState( RES_LR_SPACE, false/*bDeep*/, &pItem ) ) - pLRSpace = static_cast<const SvxLRSpaceItem *>(pItem); - - if( SfxItemState::SET == rItemSet.GetItemState( RES_UL_SPACE, false/*bDeep*/, &pItem ) ) - pULSpace = static_cast<const SvxULSpaceItem *>(pItem); + const SvxLRSpaceItem *pLRSpace = rItemSet.GetItemIfSet( RES_LR_SPACE, false/*bDeep*/ ); + const SvxULSpaceItem *pULSpace = rItemSet.GetItemIfSet( RES_UL_SPACE, false/*bDeep*/ ); if( pLRSpace || pULSpace ) OutCSS1_SvxULSpace_SvxLRSpace( rWrt, pULSpace, pLRSpace ); @@ -3015,22 +3005,16 @@ static Writer& OutCSS1_SvxFormatBreak_SwFormatPDesc_SvxFormatKeep( Writer& rWrt, bool bDeep ) { SwHTMLWriter& rHTMLWrt = static_cast<SwHTMLWriter&>(rWrt); - const SfxPoolItem *pItem; - const SvxFormatBreakItem *pBreakItem = nullptr; - if( SfxItemState::SET==rItemSet.GetItemState( RES_BREAK, bDeep, &pItem )) - pBreakItem = static_cast<const SvxFormatBreakItem *>(pItem); + const SvxFormatBreakItem *pBreakItem = rItemSet.GetItemIfSet( RES_BREAK, bDeep ); const SwFormatPageDesc *pPDescItem = nullptr; - if( ( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) || - !rHTMLWrt.m_bCSS1IgnoreFirstPageDesc || - rHTMLWrt.m_pStartNdIdx->GetIndex() != - rHTMLWrt.m_pCurrentPam->GetPoint()->nNode.GetIndex() ) && - SfxItemState::SET==rItemSet.GetItemState( RES_PAGEDESC, bDeep, &pItem )) - pPDescItem = static_cast<const SwFormatPageDesc*>(pItem); + if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) || + !rHTMLWrt.m_bCSS1IgnoreFirstPageDesc || + rHTMLWrt.m_pStartNdIdx->GetIndex() != + rHTMLWrt.m_pCurrentPam->GetPoint()->nNode.GetIndex() ) + pPDescItem = rItemSet.GetItemIfSet( RES_PAGEDESC, bDeep ); - const SvxFormatKeepItem *pKeepItem = nullptr; - if( SfxItemState::SET==rItemSet.GetItemState( RES_KEEP, bDeep, &pItem )) - pKeepItem = static_cast<const SvxFormatKeepItem *>(pItem); + const SvxFormatKeepItem *pKeepItem = rItemSet.GetItemIfSet( RES_KEEP, bDeep ); if( pBreakItem || pPDescItem || pKeepItem ) OutCSS1_SvxFormatBreak_SwFormatPDesc_SvxFormatKeep( rWrt, pBreakItem, @@ -3585,27 +3569,22 @@ void SwHTMLWriter::OutCSS1_SfxItemSet( const SfxItemSet& rItemSet, Out_SfxItemSet( aCSS1AttrFnTab, *this, rItemSet, bDeep ); // some Attributes require special treatment - const SfxPoolItem *pItem = nullptr; // Underline, Overline, CrossedOut and Blink form together a CSS1-Property // (doesn't work of course for Hints) if( !IsCSS1Source(CSS1_OUTMODE_HINT) ) { - const SvxUnderlineItem *pUnderlineItem = nullptr; - if( SfxItemState::SET==rItemSet.GetItemState( RES_CHRATR_UNDERLINE, bDeep, &pItem )) - pUnderlineItem = static_cast<const SvxUnderlineItem *>(pItem); + const SvxUnderlineItem *pUnderlineItem = + rItemSet.GetItemIfSet( RES_CHRATR_UNDERLINE, bDeep ); - const SvxOverlineItem *pOverlineItem = nullptr; - if( SfxItemState::SET==rItemSet.GetItemState( RES_CHRATR_OVERLINE, bDeep, &pItem )) - pOverlineItem = static_cast<const SvxOverlineItem *>(pItem); + const SvxOverlineItem *pOverlineItem = + rItemSet.GetItemIfSet( RES_CHRATR_OVERLINE, bDeep ); - const SvxCrossedOutItem *pCrossedOutItem = nullptr; - if( SfxItemState::SET==rItemSet.GetItemState( RES_CHRATR_CROSSEDOUT, bDeep, &pItem )) - pCrossedOutItem = static_cast<const SvxCrossedOutItem *>(pItem); + const SvxCrossedOutItem *pCrossedOutItem = + rItemSet.GetItemIfSet( RES_CHRATR_CROSSEDOUT, bDeep ); - const SvxBlinkItem *pBlinkItem = nullptr; - if( SfxItemState::SET==rItemSet.GetItemState( RES_CHRATR_BLINK, bDeep, &pItem )) - pBlinkItem = static_cast<const SvxBlinkItem *>(pItem); + const SvxBlinkItem *pBlinkItem = + rItemSet.GetItemIfSet( RES_CHRATR_BLINK, bDeep ); if( pUnderlineItem || pOverlineItem || pCrossedOutItem || pBlinkItem ) OutCSS1_SvxTextLn_SvxCrOut_SvxBlink( *this, pUnderlineItem, diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx index f14285238f89..cf3bb40c9ce0 100644 --- a/sw/source/filter/html/htmlatr.cxx +++ b/sw/source/filter/html/htmlatr.cxx @@ -616,15 +616,10 @@ static void OutHTML_SwFormat( Writer& rWrt, const SwFormat& rFormat, } // should an ALIGN=... be written? - const SfxPoolItem* pAdjItem = nullptr; - const SfxPoolItem* pItem; + const SvxAdjustItem* pAdjItem = nullptr; - if( rInfo.moItemSet && - SfxItemState::SET == rInfo.moItemSet->GetItemState( RES_PARATR_ADJUST, - false, &pItem ) ) - { - pAdjItem = pItem; - } + if( rInfo.moItemSet ) + pAdjItem = rInfo.moItemSet->GetItemIfSet( RES_PARATR_ADJUST, false ); // Consider the lower spacing of the paragraph? (never in the last // paragraph of tables) @@ -672,8 +667,7 @@ static void OutHTML_SwFormat( Writer& rWrt, const SwFormat& rFormat, else if( !nNewDefListLvl && !rHWrt.m_bCfgOutStyles && bPara && rULSpace.GetLower()==0 && ((bUseParSpace && bIsNextTextNode) || rHWrt.m_nDefListLvl==1) && - (!pAdjItem || SvxAdjust::Left== - static_cast<const SvxAdjustItem *>(pAdjItem)->GetAdjust()) ) + (!pAdjItem || SvxAdjust::Left==pAdjItem->GetAdjust()) ) { // Export paragraphs without a lower spacing as DT nNewDefListLvl = 1; @@ -819,15 +813,13 @@ static void OutHTML_SwFormat( Writer& rWrt, const SwFormat& rFormat, if( rInfo.moItemSet ) { - static const sal_uInt16 aWhichIds[3] = { RES_CHRATR_LANGUAGE, RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CTL_LANGUAGE }; + static const TypedWhichId<SvxLanguageItem> aWhichIds[3] = { RES_CHRATR_LANGUAGE, RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CTL_LANGUAGE }; - for(sal_uInt16 i : aWhichIds) + for(auto const & i : aWhichIds) { // export language if it differs from the default language only. - const SfxPoolItem *pTmpItem; - if( SfxItemState::SET == rInfo.moItemSet->GetItemState( i, - true, &pTmpItem ) && - static_cast<const SvxLanguageItem *>(pTmpItem)->GetLanguage() == eLang ) + const SvxLanguageItem* pTmpItem = rInfo.moItemSet->GetItemIfSet( i ); + if( pTmpItem && pTmpItem->GetLanguage() == eLang ) rInfo.moItemSet->ClearItem( i ); } } @@ -2039,11 +2031,10 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) aHtml.endAttribute(); return rHTMLWrt; } - const SfxPoolItem* pItem; - if( SfxItemState::SET == pItemSet->GetItemState( RES_LR_SPACE, false, &pItem )) + if( const SvxLRSpaceItem* pItem = pItemSet->GetItemIfSet( RES_LR_SPACE, false )) { - sal_Int32 nLeft = static_cast<const SvxLRSpaceItem*>(pItem)->GetLeft(); - sal_Int32 nRight = static_cast<const SvxLRSpaceItem*>(pItem)->GetRight(); + sal_Int32 nLeft = pItem->GetLeft(); + sal_Int32 nRight = pItem->GetRight(); if( nLeft || nRight ) { const SwFrameFormat& rPgFormat = @@ -2079,9 +2070,8 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) } } - if( SfxItemState::SET == pItemSet->GetItemState( RES_BOX, false, &pItem )) + if( const SvxBoxItem* pBoxItem = pItemSet->GetItemIfSet( RES_BOX, false )) { - const SvxBoxItem* pBoxItem = static_cast<const SvxBoxItem*>(pItem); const editeng::SvxBorderLine* pBorderLine = pBoxItem->GetBottom(); if( pBorderLine ) { @@ -2113,11 +2103,11 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) nPoolId == RES_POOLCOLL_TABLE_HDLN) ) { // The current node is empty and contains the standard style ... - const SfxPoolItem* pItem; + const SvxFontHeightItem* pFontHeightItem; const SfxItemSet* pItemSet = pNd->GetpSwAttrSet(); if( pItemSet && pItemSet->Count() && - SfxItemState::SET == pItemSet->GetItemState( RES_CHRATR_FONTSIZE, false, &pItem ) && - 40 == static_cast<const SvxFontHeightItem *>(pItem)->GetHeight() ) + (pFontHeightItem = pItemSet->GetItemIfSet( RES_CHRATR_FONTSIZE, false )) && + 40 == pFontHeightItem->GetHeight() ) { // ... moreover, the 2pt font is set ... SwNodeOffset nNdPos = rWrt.m_pCurrentPam->GetPoint()->nNode.GetIndex(); @@ -2150,19 +2140,18 @@ Writer& OutHTML_SwTextNode( Writer& rWrt, const SwContentNode& rNode ) rHTMLWrt.m_pStartNdIdx->GetIndex() != rHTMLWrt.m_pCurrentPam->GetPoint()->nNode.GetIndex() ) { bool bPageBreakBefore = false; - const SfxPoolItem* pItem; const SfxItemSet* pItemSet = pNd->GetpSwAttrSet(); if( pItemSet ) { - if( SfxItemState::SET == pItemSet->GetItemState( RES_PAGEDESC, true, &pItem ) && - static_cast<const SwFormatPageDesc *>(pItem)->GetPageDesc() ) + const SwFormatPageDesc* pPageDescItem = pItemSet->GetItemIfSet( RES_PAGEDESC ); + if( pPageDescItem && pPageDescItem->GetPageDesc() ) { bPageBreakBefore = true; } - else if( SfxItemState::SET == pItemSet->GetItemState( RES_BREAK, true, &pItem ) ) + else if( const SvxFormatBreakItem* pItem = pItemSet->GetItemIfSet( RES_BREAK ) ) { - switch( static_cast<const SvxFormatBreakItem *>(pItem)->GetBreak() ) + switch( pItem->GetBreak() ) { case SvxBreak::PageBefore: bPageBreakBefore = true; diff --git a/sw/source/filter/html/htmlcss1.cxx b/sw/source/filter/html/htmlcss1.cxx index 110fc35e4cfe..2572820be953 100644 --- a/sw/source/filter/html/htmlcss1.cxx +++ b/sw/source/filter/html/htmlcss1.cxx @@ -178,14 +178,12 @@ bool SwCSS1Parser::SetFormatBreak( SfxItemSet& rItemSet, static void SetCharFormatAttrs( SwCharFormat *pCharFormat, SfxItemSet& rItemSet ) { - const SfxPoolItem *pItem; - static const sal_uInt16 aWhichIds[3] = { RES_CHRATR_FONTSIZE,RES_CHRATR_CJK_FONTSIZE, + static const TypedWhichId<SvxFontHeightItem> aWhichIds[3] = { RES_CHRATR_FONTSIZE,RES_CHRATR_CJK_FONTSIZE, RES_CHRATR_CTL_FONTSIZE }; - for(sal_uInt16 i : aWhichIds) + for(auto const & i : aWhichIds) { - if( SfxItemState::SET == rItemSet.GetItemState( i, false, - &pItem ) && - static_cast<const SvxFontHeightItem *>(pItem)->GetProp() != 100) + const SvxFontHeightItem* pItem = rItemSet.GetItemIfSet( i, false ); + if( pItem && pItem->GetProp() != 100) { // percentage values at the FontHeight item aren't supported rItemSet.ClearItem( i ); @@ -194,19 +192,19 @@ static void SetCharFormatAttrs( SwCharFormat *pCharFormat, SfxItemSet& rItemSet pCharFormat->SetFormatAttr( rItemSet ); - if( SfxItemState::SET == rItemSet.GetItemState( RES_BACKGROUND, false, &pItem ) ) + if( const SvxBrushItem* pItem = rItemSet.GetItemIfSet( RES_BACKGROUND, false ) ) { // A Brush-Item with RES_BACKGROUND must be converted to one // with RES_CHRATR_BACKGROUND - SvxBrushItem aBrushItem( *static_cast<const SvxBrushItem *>(pItem) ); + SvxBrushItem aBrushItem( *pItem ); aBrushItem.SetWhich( RES_CHRATR_BACKGROUND ); pCharFormat->SetFormatAttr( aBrushItem ); } - if( SfxItemState::SET == rItemSet.GetItemState( RES_BOX, false, &pItem ) ) + if( const SvxBoxItem* pItem = rItemSet.GetItemIfSet( RES_BOX, false ) ) { - SvxBoxItem aBoxItem( *static_cast<const SvxBoxItem *>(pItem) ); + SvxBoxItem aBoxItem( *pItem ); aBoxItem.SetWhich( RES_CHRATR_BOX ); pCharFormat->SetFormatAttr( aBoxItem ); } @@ -269,19 +267,18 @@ static void SetTextCollAttrs( SwTextFormatColl *pColl, SfxItemSet& rItemSet, SwCSS1Parser *pCSS1Parser ) { const SfxItemSet& rCollItemSet = pColl->GetAttrSet(); - const SfxPoolItem *pCollItem, *pItem; + const SvxLRSpaceItem* pCollLRItem; + const SvxLRSpaceItem* pLRItem; // left, right border and first line indentation if( (rPropInfo.m_bLeftMargin || rPropInfo.m_bRightMargin || rPropInfo.m_bTextIndent) && (!rPropInfo.m_bLeftMargin || !rPropInfo.m_bRightMargin || !rPropInfo.m_bTextIndent) && - SfxItemState::SET == rCollItemSet.GetItemState(RES_LR_SPACE,true,&pCollItem) && - SfxItemState::SET == rItemSet.GetItemState(RES_LR_SPACE,false,&pItem) ) + (pCollLRItem = rCollItemSet.GetItemIfSet(RES_LR_SPACE)) && + (pLRItem = rItemSet.GetItemIfSet(RES_LR_SPACE,false)) ) { - const SvxLRSpaceItem *pLRItem = static_cast<const SvxLRSpaceItem *>(pItem); - - SvxLRSpaceItem aLRItem( *static_cast<const SvxLRSpaceItem *>(pCollItem) ); + SvxLRSpaceItem aLRItem( *pCollLRItem ); if( rPropInfo.m_bLeftMargin ) aLRItem.SetTextLeft( pLRItem->GetTextLeft() ); if( rPropInfo.m_bRightMargin ) @@ -293,15 +290,14 @@ static void SetTextCollAttrs( SwTextFormatColl *pColl, SfxItemSet& rItemSet, } // top and bottom border + const SvxULSpaceItem* pCollULItem; + const SvxULSpaceItem* pULItem; if( (rPropInfo.m_bTopMargin || rPropInfo.m_bBottomMargin) && (!rPropInfo.m_bTopMargin || !rPropInfo.m_bBottomMargin) && - SfxItemState::SET == rCollItemSet.GetItemState(RES_UL_SPACE,true, - &pCollItem) && - SfxItemState::SET == rItemSet.GetItemState(RES_UL_SPACE,false,&pItem) ) + (pCollULItem = rCollItemSet.GetItemIfSet(RES_UL_SPACE)) && + (pULItem = rItemSet.GetItemIfSet(RES_UL_SPACE,false)) ) { - const SvxULSpaceItem *pULItem = static_cast<const SvxULSpaceItem *>(pItem); - - SvxULSpaceItem aULItem( *static_cast<const SvxULSpaceItem *>(pCollItem) ); + SvxULSpaceItem aULItem( *pCollULItem ); if( rPropInfo.m_bTopMargin ) aULItem.SetUpper( pULItem->GetUpper() ); if( rPropInfo.m_bBottomMargin ) @@ -310,13 +306,12 @@ static void SetTextCollAttrs( SwTextFormatColl *pColl, SfxItemSet& rItemSet, rItemSet.Put( aULItem ); } - static const sal_uInt16 aWhichIds[3] = { RES_CHRATR_FONTSIZE,RES_CHRATR_CJK_FONTSIZE, + static const TypedWhichId<SvxFontHeightItem> aWhichIds[3] = { RES_CHRATR_FONTSIZE,RES_CHRATR_CJK_FONTSIZE, RES_CHRATR_CTL_FONTSIZE }; - for(sal_uInt16 i : aWhichIds) + for(auto const & i : aWhichIds) { - if( SfxItemState::SET == rItemSet.GetItemState( i, false, - &pItem ) && - static_cast<const SvxFontHeightItem *>(pItem)->GetProp() != 100) + const SvxFontHeightItem* pItem = rItemSet.GetItemIfSet( i, false ); + if( pItem && pItem->GetProp() != 100) { // percentage values at the FontHeight item aren't supported rItemSet.ClearItem( i ); @@ -385,28 +380,26 @@ void SwCSS1Parser::SetPageDescAttrs( const SvxBrushItem *pBrush, if( pItemSet2 ) { - const SfxPoolItem *pItem = nullptr; - if( SfxItemState::SET == pItemSet2->GetItemState( RES_BACKGROUND, false, - &pItem ) ) + if( const SvxBrushItem* pItem = pItemSet2->GetItemIfSet( RES_BACKGROUND, false ) ) { // set a background - aBrushItem.reset(&pItem->Clone()->StaticWhichCast(RES_BACKGROUND)); + aBrushItem.reset(pItem->Clone()); pItemSet2->ClearItem( RES_BACKGROUND ); bSetBrush = true; } - if( SfxItemState::SET == pItemSet2->GetItemState( RES_BOX, false, &pItem ) ) + if( const SvxBoxItem* pItem = pItemSet2->GetItemIfSet( RES_BOX, false ) ) { // set a border - aBoxItem.reset(&pItem->Clone()->StaticWhichCast(RES_BOX)); + aBoxItem.reset(pItem->Clone()); pItemSet2->ClearItem( RES_BOX ); bSetBox = true; } - if( SfxItemState::SET == pItemSet2->GetItemState( RES_FRAMEDIR, false, &pItem ) ) + if( const SvxFrameDirectionItem* pItem = pItemSet2->GetItemIfSet( RES_FRAMEDIR, false ) ) { // set a frame - aFrameDirItem.reset(&pItem->Clone()->StaticWhichCast(RES_FRAMEDIR)); + aFrameDirItem.reset(pItem->Clone()); pItemSet2->ClearItem( RES_FRAMEDIR ); bSetFrameDir = true; } @@ -447,20 +440,18 @@ void SwCSS1Parser::SetPageDescAttrs( const SwPageDesc *pPageDesc, SwPageDesc aNewPageDesc( *pPageDesc ); SwFrameFormat &rMaster = aNewPageDesc.GetMaster(); const SfxItemSet& rPageItemSet = rMaster.GetAttrSet(); - const SfxPoolItem *pPageItem, *pItem; bool bChanged = false; // left, right border and first line indentation + const SvxLRSpaceItem *pLRItem; if( (rPropInfo.m_bLeftMargin || rPropInfo.m_bRightMargin) && - SfxItemState::SET == rItemSet.GetItemState(RES_LR_SPACE,false,&pItem) ) + (pLRItem = rItemSet.GetItemIfSet(RES_LR_SPACE,false)) ) { + const SvxLRSpaceItem* pPageItem; if( (!rPropInfo.m_bLeftMargin || !rPropInfo.m_bRightMargin) && - SfxItemState::SET == rPageItemSet.GetItemState(RES_LR_SPACE, - true,&pPageItem) ) + (pPageItem = rPageItemSet.GetItemIfSet(RES_LR_SPACE)) ) { - const SvxLRSpaceItem *pLRItem = static_cast<const SvxLRSpaceItem *>(pItem); - - SvxLRSpaceItem aLRItem( *static_cast<const SvxLRSpaceItem *>(pPageItem) ); + SvxLRSpaceItem aLRItem( *pPageItem ); if( rPropInfo.m_bLeftMargin ) aLRItem.SetLeft( pLRItem->GetLeft() ); if( rPropInfo.m_bRightMargin ) @@ -470,22 +461,21 @@ void SwCSS1Parser::SetPageDescAttrs( const SwPageDesc *pPageDesc, } else { - rMaster.SetFormatAttr( *pItem ); + rMaster.SetFormatAttr( *pLRItem ); } bChanged = true; } // top and bottom border + const SvxULSpaceItem *pULItem; if( (rPropInfo.m_bTopMargin || rPropInfo.m_bBottomMargin) && - SfxItemState::SET == rItemSet.GetItemState(RES_UL_SPACE,false,&pItem) ) + (pULItem = rItemSet.GetItemIfSet(RES_UL_SPACE,false)) ) { + const SvxULSpaceItem* pPageItem; if( (!rPropInfo.m_bTopMargin || !rPropInfo.m_bBottomMargin) && - SfxItemState::SET == rPageItemSet.GetItemState(RES_UL_SPACE, - true,&pPageItem) ) + (pPageItem = rPageItemSet.GetItemIfSet(RES_UL_SPACE) ) ) { - const SvxULSpaceItem *pULItem = static_cast<const SvxULSpaceItem *>(pItem); - - SvxULSpaceItem aULItem( *static_cast<const SvxULSpaceItem *>(pPageItem) ); + SvxULSpaceItem aULItem( *pPageItem ); if( rPropInfo.m_bTopMargin ) aULItem.SetUpper( pULItem->GetUpper() ); if( rPropInfo.m_bBottomMargin ) @@ -495,7 +485,7 @@ void SwCSS1Parser::SetPageDescAttrs( const SwPageDesc *pPageDesc, } else { - rMaster.SetFormatAttr( *pItem ); + rMaster.SetFormatAttr( *pULItem ); } bChanged = true; } @@ -533,7 +523,7 @@ void SwCSS1Parser::SetPageDescAttrs( const SwPageDesc *pPageDesc, } // Is that possible? - if( SfxItemState::SET == rItemSet.GetItemState( RES_BACKGROUND, false, &pItem ) ) + if( const SvxBrushItem* pItem = rItemSet.GetItemIfSet( RES_BACKGROUND, false ) ) { // set a background rMaster.SetFormatAttr( *pItem ); @@ -800,12 +790,8 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, // We must test the background before setting, because // in SetPageDescAttrs it will be deleted. - const SfxPoolItem *pItem; - if( SfxItemState::SET==rItemSet.GetItemState(RES_BACKGROUND,false,&pItem) ) + if( const SvxBrushItem *pBrushItem = rItemSet.GetItemIfSet(RES_BACKGROUND,false) ) { - const SvxBrushItem *pBrushItem = - static_cast<const SvxBrushItem *>(pItem); - /// Body has a background color, if it is not "no fill"/"auto fill" if( pBrushItem->GetColor() != COL_TRANSPARENT ) m_bBodyBGColorSet = true; @@ -992,11 +978,8 @@ void SwCSS1Parser::StyleParsed( const CSS1Selector *pSelector, if( !pNext ) { // set only the attributes at the style - const SfxPoolItem *pItem; - const SvxBoxItem *pBoxItem = nullptr; - if( SfxItemState::SET == - pColl->GetAttrSet().GetItemState(RES_BOX,true,&pItem) ) - pBoxItem = static_cast<const SvxBoxItem *>(pItem); + const SvxBoxItem *pBoxItem = + pColl->GetAttrSet().GetItemIfSet(RES_BOX); rPropInfo.SetBoxItem( rItemSet, MIN_BORDER_DIST, pBoxItem ); if( Css1ScriptFlags::AllMask == nScript && !pParentColl ) { @@ -1468,10 +1451,9 @@ void SwCSS1Parser::FillDropCap( SwFormatDrop& rDrop, // the number of lines matches somehow a percentage value // for the height (what happens with absolute heights???) sal_uInt8 nLines = rDrop.GetLines(); - const SfxPoolItem *pItem; - if( SfxItemState::SET == rItemSet.GetItemState( RES_CHRATR_FONTSIZE, false, &pItem ) ) + if( const SvxFontHeightItem* pFontHeightItem = rItemSet.GetItemIfSet( RES_CHRATR_FONTSIZE, false ) ) { - sal_uInt16 nProp = static_cast<const SvxFontHeightItem *>(pItem)->GetProp(); + sal_uInt16 nProp = pFontHeightItem->GetProp(); nLines = static_cast<sal_uInt8>((nProp + 50) / 100); if( nLines < 1 ) nLines = 1; @@ -1496,10 +1478,10 @@ void SwCSS1Parser::FillDropCap( SwFormatDrop& rDrop, rDrop.GetLines() = nLines; // a right border becomes the spacing to text! - if( SfxItemState::SET == rItemSet.GetItemState( RES_LR_SPACE, false, &pItem ) ) + if( const SvxLRSpaceItem* pLRSpaceItem = rItemSet.GetItemIfSet( RES_LR_SPACE, false ) ) { rDrop.GetDistance() = static_cast< sal_uInt16 >( - static_cast<const SvxLRSpaceItem *>(pItem)->GetRight() ); + pLRSpaceItem->GetRight() ); rItemSet.ClearItem( RES_LR_SPACE ); } @@ -2079,35 +2061,37 @@ void SwHTMLParser::SetFrameFormatAttrs( SfxItemSet &rItemSet, HtmlFrameFormatFlags nFlags, SfxItemSet &rFrameItemSet ) { - const SfxPoolItem *pItem; + const SvxBoxItem *pBoxItem; if( (nFlags & HtmlFrameFormatFlags::Box) && - SfxItemState::SET==rItemSet.GetItemState( RES_BOX, true, &pItem ) ) + (pBoxItem = rItemSet.GetItemIfSet( RES_BOX )) ) { if( nFlags & HtmlFrameFormatFlags::Padding ) { - SvxBoxItem aBoxItem( *static_cast<const SvxBoxItem *>(pItem) ); + SvxBoxItem aBoxItem( *pBoxItem ); // reset all 4 sides to 0 aBoxItem.SetAllDistances(0); rFrameItemSet.Put( aBoxItem ); } else { - rFrameItemSet.Put( *pItem ); + rFrameItemSet.Put( *pBoxItem ); } rItemSet.ClearItem( RES_BOX ); } + const SvxBrushItem* pBrushItem; if( (nFlags & HtmlFrameFormatFlags::Background) && - SfxItemState::SET==rItemSet.GetItemState( RES_BACKGROUND, true, &pItem ) ) + (pBrushItem = rItemSet.GetItemIfSet( RES_BACKGROUND )) ) { - rFrameItemSet.Put( *pItem ); + rFrameItemSet.Put( *pBrushItem ); rItemSet.ClearItem( RES_BACKGROUND ); } + const SvxFrameDirectionItem* pFrameDirectionItem; if( (nFlags & HtmlFrameFormatFlags::Direction) && - SfxItemState::SET==rItemSet.GetItemState( RES_FRAMEDIR, true, &pItem ) ) + (pFrameDirectionItem = rItemSet.GetItemIfSet( RES_FRAMEDIR )) ) { - rFrameItemSet.Put( *pItem ); + rFrameItemSet.Put( *pFrameDirectionItem ); rItemSet.ClearItem( RES_FRAMEDIR ); } } @@ -2276,20 +2260,19 @@ static void lcl_swcss1_setEncoding( SwFormat& rFormat, rtl_TextEncoding eEnc ) return; const SfxItemSet& rItemSet = rFormat.GetAttrSet(); - static const sal_uInt16 aWhichIds[3] = { RES_CHRATR_FONT, RES_CHRATR_CJK_FONT, + static const TypedWhichId<SvxFontItem> aWhichIds[3] = { RES_CHRATR_FONT, RES_CHRATR_CJK_FONT, RES_CHRATR_CTL_FONT }; - const SfxPoolItem *pItem; - for (sal_uInt16 i : aWhichIds) + for (auto const & i : aWhichIds) { - if (SfxItemState::SET != rItemSet.GetItemState(i, false, &pItem)) + const SvxFontItem *pFontItem = rItemSet.GetItemIfSet(i, false); + if (!pFontItem) continue; - const SvxFontItem& rFont = *static_cast<const SvxFontItem*>(pItem); - if (RTL_TEXTENCODING_SYMBOL == rFont.GetCharSet()) + if (RTL_TEXTENCODING_SYMBOL == pFontItem->GetCharSet()) continue; - if (eEnc == rFont.GetCharSet()) + if (eEnc == pFontItem->GetCharSet()) continue; - SvxFontItem aFont(rFont.GetFamily(), rFont.GetFamilyName(), - rFont.GetStyleName(), rFont.GetPitch(), + SvxFontItem aFont(pFontItem->GetFamily(), pFontItem->GetFamilyName(), + pFontItem->GetStyleName(), pFontItem->GetPitch(), eEnc, i); rFormat.SetFormatAttr(aFont); } diff --git a/sw/source/filter/html/htmldrawreader.cxx b/sw/source/filter/html/htmldrawreader.cxx index a6f42fc7f42c..240c206c61e2 100644 --- a/sw/source/filter/html/htmldrawreader.cxx +++ b/sw/source/filter/html/htmldrawreader.cxx @@ -98,11 +98,9 @@ void SwHTMLParser::InsertDrawObject( SdrObject* pNewDrawObj, } // set left/right border - const SfxPoolItem *pItem; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, true, &pItem ) ) + if( const SvxLRSpaceItem* pLRItem = rCSS1ItemSet.GetItemIfSet( RES_LR_SPACE ) ) { // maybe flatten the first line indentation - const SvxLRSpaceItem *pLRItem = static_cast<const SvxLRSpaceItem *>(pItem); SvxLRSpaceItem aLRItem( *pLRItem ); aLRItem.SetTextFirstLineOffset( 0 ); if( rCSS1PropInfo.m_bLeftMargin ) @@ -126,10 +124,9 @@ void SwHTMLParser::InsertDrawObject( SdrObject* pNewDrawObj, } // set top/bottom border - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, true, &pItem ) ) + if( const SvxULSpaceItem* pULItem = rCSS1ItemSet.GetItemIfSet( RES_UL_SPACE ) ) { // maybe flatten the first line indentation - const SvxULSpaceItem *pULItem = static_cast<const SvxULSpaceItem *>(pItem); if( rCSS1PropInfo.m_bTopMargin ) { nUpperSpace = pULItem->GetUpper(); diff --git a/sw/source/filter/html/htmlflywriter.cxx b/sw/source/filter/html/htmlflywriter.cxx index 05c0ad6f847f..ade669f80b79 100644 --- a/sw/source/filter/html/htmlflywriter.cxx +++ b/sw/source/filter/html/htmlflywriter.cxx @@ -211,11 +211,9 @@ sal_uInt16 SwHTMLWriter::GuessFrameType( const SwFrameFormat& rFrameFormat, { SwNodeOffset nEnd = m_pDoc->GetNodes()[nStt-1]->EndOfSectionIndex(); - const SfxPoolItem* pItem; const SfxItemSet& rItemSet = rFrameFormat.GetAttrSet(); - if( SfxItemState::SET == rItemSet.GetItemState( RES_COL, - true, &pItem ) && - static_cast<const SwFormatCol *>(pItem)->GetNumCols() > 1 ) + const SwFormatCol* pFormatCol = rItemSet.GetItemIfSet( RES_COL ); + if( pFormatCol && pFormatCol->GetNumCols() > 1 ) { // frame with columns eType = HTML_FRMTYPE_MULTICOL; @@ -524,7 +522,6 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat, { OString sRetEndTags; OStringBuffer sOut; - const SfxPoolItem* pItem; const SfxItemSet& rItemSet = rFrameFormat.GetAttrSet(); // Name @@ -575,12 +572,13 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat, : OOO_STRING_SVTOOLS_HTML_AL_left; } } + const SwFormatVertOrient* pVertOrient; if( (nFrameOpts & HtmlFrmOpts::Align) && !pStr && ( !(nFrameOpts & HtmlFrmOpts::SAlign) || (RndStdIds::FLY_AS_CHAR == eAnchorId) ) && - SfxItemState::SET == rItemSet.GetItemState( RES_VERT_ORIENT, true, &pItem )) + (pVertOrient = rItemSet.GetItemIfSet( RES_VERT_ORIENT )) ) { - switch( static_cast<const SwFormatVertOrient*>(pItem)->GetVertOrient() ) + switch( pVertOrient->GetVertOrient() ) { case text::VertOrientation::LINE_TOP: pStr = OOO_STRING_SVTOOLS_HTML_VA_top; break; case text::VertOrientation::CHAR_TOP: @@ -602,20 +600,20 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat, // HSPACE and VSPACE Size aTwipSpc( 0, 0 ); + const SvxLRSpaceItem* pLRSpaceItem; if( (nFrameOpts & (HtmlFrmOpts::Space|HtmlFrmOpts::MarginSize)) && - SfxItemState::SET == rItemSet.GetItemState( RES_LR_SPACE, true, &pItem )) + (pLRSpaceItem = rItemSet.GetItemIfSet( RES_LR_SPACE )) ) { aTwipSpc.setWidth( - ( static_cast<const SvxLRSpaceItem*>(pItem)->GetLeft() + - static_cast<const SvxLRSpaceItem*>(pItem)->GetRight() ) / 2 ); + ( pLRSpaceItem->GetLeft() + pLRSpaceItem->GetRight() ) / 2 ); m_nDfltLeftMargin = m_nDfltRightMargin = aTwipSpc.Width(); } + const SvxULSpaceItem* pULSpaceItem; if( (nFrameOpts & (HtmlFrmOpts::Space|HtmlFrmOpts::MarginSize)) && - SfxItemState::SET == rItemSet.GetItemState( RES_UL_SPACE, true, &pItem )) + (pULSpaceItem = rItemSet.GetItemIfSet( RES_UL_SPACE )) ) { aTwipSpc.setHeight( - ( static_cast<const SvxULSpaceItem*>(pItem)->GetUpper() + - static_cast<const SvxULSpaceItem*>(pItem)->GetLower() ) / 2 ); + ( pULSpaceItem->GetUpper() + pULSpaceItem->GetLower() ) / 2 ); m_nDfltTopMargin = m_nDfltBottomMargin = o3tl::narrowing<sal_uInt16>(aTwipSpc.Height()); } @@ -657,11 +655,10 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat, aTwipSpc.setHeight( 0 ); } + const SvxBoxItem* pBoxItem; if( !(nFrameOpts & HtmlFrmOpts::AbsSize) && - SfxItemState::SET == rItemSet.GetItemState( RES_BOX, true, &pItem )) + (pBoxItem = rItemSet.GetItemIfSet( RES_BOX )) ) { - const SvxBoxItem* pBoxItem = static_cast<const SvxBoxItem*>(pItem); - aTwipSpc.AdjustWidth(pBoxItem->CalcLineSpace( SvxBoxItemLine::LEFT ) ); aTwipSpc.AdjustWidth(pBoxItem->CalcLineSpace( SvxBoxItemLine::RIGHT ) ); aTwipSpc.AdjustHeight(pBoxItem->CalcLineSpace( SvxBoxItemLine::TOP ) ); @@ -670,12 +667,12 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat, // WIDTH and/or HEIGHT // Output SwFrameSize::Variable/SwFrameSize::Minimum only, if ANYSIZE is set + const SwFormatFrameSize *pFSItem; if( (nFrameOpts & HtmlFrmOpts::Size) && - SfxItemState::SET == rItemSet.GetItemState( RES_FRM_SIZE, true, &pItem ) && + (pFSItem = rItemSet.GetItemIfSet( RES_FRM_SIZE )) && ( (nFrameOpts & HtmlFrmOpts::AnySize) || - SwFrameSize::Fixed == static_cast<const SwFormatFrameSize *>(pItem)->GetHeightSizeType()) ) + SwFrameSize::Fixed == pFSItem->GetHeightSizeType()) ) { - const SwFormatFrameSize *pFSItem = static_cast<const SwFormatFrameSize *>(pItem); sal_uInt8 nPercentWidth = pFSItem->GetWidthPercent(); sal_uInt8 nPercentHeight = pFSItem->GetHeightPercent(); @@ -732,12 +729,12 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat, // Insert wrap for graphics that are anchored to a paragraph as // <BR CLEAR=...> in the string + const SwFormatSurround* pSurround; if( (nFrameOpts & HtmlFrmOpts::BrClear) && ((RndStdIds::FLY_AT_PARA == rFrameFormat.GetAnchor().GetAnchorId()) || (RndStdIds::FLY_AT_CHAR == rFrameFormat.GetAnchor().GetAnchorId())) && - SfxItemState::SET == rItemSet.GetItemState( RES_SURROUND, true, &pItem )) + (pSurround = rItemSet.GetItemIfSet( RES_SURROUND )) ) { - const SwFormatSurround* pSurround = static_cast<const SwFormatSurround*>(pItem); sal_Int16 eHoriOri = rFrameFormat.GetHoriOrient().GetHoriOrient(); pStr = nullptr; css::text::WrapTextMode eSurround = pSurround->GetSurround(); @@ -800,7 +797,6 @@ OString SwHTMLWriter::OutFrameFormatOptions( const SwFrameFormat &rFrameFormat, void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameFormat& rFrameFormat, std::u16string_view rAlternateText, HtmlFrmOpts nFrameOptions) { bool bReplacement = (nFrameOptions & HtmlFrmOpts::Replacement) || mbReqIF; - const SfxPoolItem* pItem; const SfxItemSet& rItemSet = rFrameFormat.GetAttrSet(); // Name @@ -841,12 +837,13 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma : OOO_STRING_SVTOOLS_HTML_AL_left; } } + const SwFormatVertOrient* pVertOrient; if( (nFrameOptions & HtmlFrmOpts::Align) && !pAlignString && ( !(nFrameOptions & HtmlFrmOpts::SAlign) || (RndStdIds::FLY_AS_CHAR == eAnchorId) ) && - SfxItemState::SET == rItemSet.GetItemState( RES_VERT_ORIENT, true, &pItem )) + (pVertOrient = rItemSet.GetItemIfSet( RES_VERT_ORIENT )) ) { - switch( static_cast<const SwFormatVertOrient*>(pItem)->GetVertOrient() ) + switch( pVertOrient->GetVertOrient() ) { case text::VertOrientation::LINE_TOP: pAlignString = OOO_STRING_SVTOOLS_HTML_VA_top; break; case text::VertOrientation::CHAR_TOP: @@ -867,20 +864,20 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma // hspace and vspace Size aTwipSpc( 0, 0 ); + const SvxLRSpaceItem* pLRSpaceItem; if( (nFrameOptions & (HtmlFrmOpts::Space | HtmlFrmOpts::MarginSize)) && - SfxItemState::SET == rItemSet.GetItemState( RES_LR_SPACE, true, &pItem )) + (pLRSpaceItem = rItemSet.GetItemIfSet( RES_LR_SPACE )) ) { aTwipSpc.setWidth( - ( static_cast<const SvxLRSpaceItem*>(pItem)->GetLeft() + - static_cast<const SvxLRSpaceItem*>(pItem)->GetRight() ) / 2 ); + ( pLRSpaceItem->GetLeft() + pLRSpaceItem->GetRight() ) / 2 ); m_nDfltLeftMargin = m_nDfltRightMargin = aTwipSpc.Width(); } + const SvxULSpaceItem* pULSpaceItem; if( (nFrameOptions & (HtmlFrmOpts::Space|HtmlFrmOpts::MarginSize)) && - SfxItemState::SET == rItemSet.GetItemState( RES_UL_SPACE, true, &pItem )) + (pULSpaceItem = rItemSet.GetItemIfSet( RES_UL_SPACE )) ) { aTwipSpc.setHeight( - ( static_cast<const SvxULSpaceItem*>(pItem)->GetUpper() + - static_cast<const SvxULSpaceItem*>(pItem)->GetLower() ) / 2 ); + ( pULSpaceItem->GetUpper() + pULSpaceItem->GetLower() ) / 2 ); m_nDfltTopMargin = m_nDfltBottomMargin = o3tl::narrowing<sal_uInt16>(aTwipSpc.Height()); } @@ -920,11 +917,10 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma aTwipSpc.setHeight( 0 ); } + const SvxBoxItem* pBoxItem; if( !(nFrameOptions & HtmlFrmOpts::AbsSize) && - SfxItemState::SET == rItemSet.GetItemState( RES_BOX, true, &pItem )) + (pBoxItem = rItemSet.GetItemIfSet( RES_BOX )) ) { - const SvxBoxItem* pBoxItem = static_cast<const SvxBoxItem*>(pItem); - aTwipSpc.AdjustWidth(pBoxItem->CalcLineSpace( SvxBoxItemLine::LEFT ) ); aTwipSpc.AdjustWidth(pBoxItem->CalcLineSpace( SvxBoxItemLine::RIGHT ) ); aTwipSpc.AdjustHeight(pBoxItem->CalcLineSpace( SvxBoxItemLine::TOP ) ); @@ -933,13 +929,10 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma // "width" and/or "height" // Only output SwFrameSize::Variable/SwFrameSize::Minimum if ANYSIZE is set - const SwFormatFrameSize* pFSItem = nullptr; std::optional<SwFormatFrameSize> aFrameSize; - if (SfxItemState::SET == rItemSet.GetItemState( RES_FRM_SIZE, true, &pItem )) - { - pFSItem = static_cast<const SwFormatFrameSize *>(pItem); - } - else if (const SdrObject* pObject = rFrameFormat.FindSdrObject()) + const SwFormatFrameSize* pFSItem = rItemSet.GetItemIfSet( RES_FRM_SIZE ); + const SdrObject* pObject; + if (!pFSItem && (pObject = rFrameFormat.FindSdrObject())) { // Write size for Draw shapes as well. const tools::Rectangle& rSnapRect = pObject->GetSnapRect(); @@ -1014,12 +1007,12 @@ void SwHTMLWriter::writeFrameFormatOptions(HtmlWriter& aHtml, const SwFrameForma RndStdIds nAnchorId = rFrameFormat.GetAnchor().GetAnchorId(); if (RndStdIds::FLY_AT_PARA != nAnchorId && RndStdIds::FLY_AT_CHAR != nAnchorId) return; - if( SfxItemState::SET != rItemSet.GetItemState( RES_SURROUND, true, &pItem ) ) + const SwFormatSurround* pSurround = rItemSet.GetItemIfSet( RES_SURROUND ); + if (!pSurround) return; const char* pSurroundString = nullptr; - const SwFormatSurround* pSurround = static_cast<const SwFormatSurround*>(pItem); sal_Int16 eHoriOri = rFrameFormat.GetHoriOrient().GetHoriOrient(); css::text::WrapTextMode eSurround = pSurround->GetSurround(); bool bAnchorOnly = pSurround->IsAnchorOnly(); @@ -1082,13 +1075,9 @@ OUString lclWriteOutImap(SwHTMLWriter& rHTMLWrt, const SfxItemSet& rItemSet, con { OUString aIMapName; - const SfxPoolItem* pItem; - // Only consider the URL attribute if no ImageMap was supplied - if (!pAltImgMap && SfxItemState::SET == rItemSet.GetItemState( RES_URL, true, &pItem)) - { - pURLItem = static_cast<const SwFormatURL*>( pItem); - } + if (!pAltImgMap) + pURLItem = rItemSet.GetItemIfSet( RES_URL ); // write ImageMap const ImageMap* pIMap = pAltImgMap; @@ -1237,7 +1226,6 @@ Writer& OutHTML_ImageStart( HtmlWriter& rHtml, Writer& rWrt, const SwFrameFormat if( !rHTMLWrt.mbEmbedImages && !HTMLOutFuncs::PrivateURLToInternalImg(aGraphicURL) && !rHTMLWrt.mpTempBaseURL ) aGraphicURL = URIHelper::simpleNormalizedMakeRelative( rWrt.GetBaseURL(), aGraphicURL); - const SfxPoolItem* pItem; const SfxItemSet& rItemSet = rFrameFormat.GetAttrSet(); const SwFormatURL* pURLItem = nullptr; @@ -1254,11 +1242,7 @@ Writer& OutHTML_ImageStart( HtmlWriter& rHtml, Writer& rWrt, const SwFrameFormat } // URL -> <a>...<img ... >...</a> - const SvxMacroItem *pMacItem = nullptr; - if (SfxItemState::SET == rItemSet.GetItemState(RES_FRMMACRO, true, &pItem)) - { - pMacItem = static_cast<const SvxMacroItem *>(pItem); - } + const SvxMacroItem *pMacItem = rItemSet.GetItemIfSet(RES_FRMMACRO); if (pURLItem || pMacItem) { @@ -1308,12 +1292,11 @@ Writer& OutHTML_ImageStart( HtmlWriter& rHtml, Writer& rWrt, const SwFrameFormat // <font color = ...>...<img ... >...</font> sal_uInt16 nBorderWidth = 0; + const SvxBoxItem* pBoxItem; if( (nFrameOpts & HtmlFrmOpts::Border) && - SfxItemState::SET == rItemSet.GetItemState( RES_BOX, true, &pItem )) + (pBoxItem = rItemSet.GetItemIfSet( RES_BOX )) ) { Size aTwipBorder( 0, 0 ); - const SvxBoxItem* pBoxItem = static_cast<const SvxBoxItem*>(pItem); - const ::editeng::SvxBorderLine *pColBorderLine = nullptr; const ::editeng::SvxBorderLine *pBorderLine = pBoxItem->GetLeft(); if( pBorderLine ) @@ -1408,9 +1391,9 @@ Writer& OutHTML_ImageStart( HtmlWriter& rHtml, Writer& rWrt, const SwFrameFormat } // Events - if (SfxItemState::SET == rItemSet.GetItemState(RES_FRMMACRO, true, &pItem)) + if (const SvxMacroItem* pMacroItem = rItemSet.GetItemIfSet(RES_FRMMACRO)) { - const SvxMacroTableDtor& rMacTable = static_cast<const SvxMacroItem *>(pItem)->GetMacroTable(); + const SvxMacroTableDtor& rMacTable = pMacroItem->GetMacroTable(); if (!rMacTable.empty()) { HtmlWriterHelper::applyEvents(rHtml, rMacTable, aImageEventTable, rHTMLWrt.m_bCfgStarBasic); diff --git a/sw/source/filter/html/htmlform.cxx b/sw/source/filter/html/htmlform.cxx index 00c2a1334f26..86a21f594f22 100644 --- a/sw/source/filter/html/htmlform.cxx +++ b/sw/source/filter/html/htmlform.cxx @@ -885,12 +885,9 @@ uno::Reference< drawing::XShape > SwHTMLParser::InsertControl( uno::Reference< beans::XPropertySet > xShapePropSet( xCreate, UNO_QUERY ); // set left/right border - const SfxPoolItem *pItem; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, true, - &pItem ) ) + if( const SvxLRSpaceItem* pLRItem = rCSS1ItemSet.GetItemIfSet( RES_LR_SPACE ) ) { // Flatten first line indent - const SvxLRSpaceItem *pLRItem = static_cast<const SvxLRSpaceItem *>(pItem); SvxLRSpaceItem aLRItem( *pLRItem ); aLRItem.SetTextFirstLineOffset( 0 ); if( rCSS1PropInfo.m_bLeftMargin ) @@ -916,11 +913,9 @@ uno::Reference< drawing::XShape > SwHTMLParser::InsertControl( } // set upper/lower border - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, true, - &pItem ) ) + if( const SvxULSpaceItem *pULItem = rCSS1ItemSet.GetItemIfSet( RES_UL_SPACE ) ) { // Flatten first line indent - const SvxULSpaceItem *pULItem = static_cast<const SvxULSpaceItem *>(pItem); if( rCSS1PropInfo.m_bTopMargin ) { nUpperSpace = convertTwipToMm100( pULItem->GetUpper() ); @@ -947,11 +942,10 @@ uno::Reference< drawing::XShape > SwHTMLParser::InsertControl( uno::Reference< beans::XPropertySetInfo > xPropSetInfo = rFCompPropSet->getPropertySetInfo(); OUString sPropName = "BackgroundColor"; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_BACKGROUND, true, - &pItem ) && - xPropSetInfo->hasPropertyByName( sPropName ) ) + const SvxBrushItem* pBrushItem = rCSS1ItemSet.GetItemIfSet( RES_BACKGROUND ); + if( pBrushItem && xPropSetInfo->hasPropertyByName( sPropName ) ) { - const Color &rColor = static_cast<const SvxBrushItem *>(pItem)->GetColor(); + const Color &rColor = pBrushItem->GetColor(); /// copy color, if color is not "no fill"/"auto fill" if( rColor != COL_TRANSPARENT ) { @@ -963,30 +957,24 @@ uno::Reference< drawing::XShape > SwHTMLParser::InsertControl( } sPropName = "TextColor"; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_CHRATR_COLOR, true, - &pItem ) && - xPropSetInfo->hasPropertyByName( sPropName ) ) + const SvxColorItem* pColorItem = rCSS1ItemSet.GetItemIfSet( RES_CHRATR_COLOR ); + if( pColorItem && xPropSetInfo->hasPropertyByName( sPropName ) ) { - aTmp <<= static_cast<sal_Int32>(static_cast<const SvxColorItem *>(pItem)->GetValue() - .GetRGBColor()); + aTmp <<= static_cast<sal_Int32>(pColorItem->GetValue().GetRGBColor()); rFCompPropSet->setPropertyValue( sPropName, aTmp ); } sPropName = "FontHeight"; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_CHRATR_FONTSIZE, - true, &pItem ) && - xPropSetInfo->hasPropertyByName( sPropName ) ) + const SvxFontHeightItem* pFontHeightItem = rCSS1ItemSet.GetItemIfSet( RES_CHRATR_FONTSIZE ); + if( pFontHeightItem && xPropSetInfo->hasPropertyByName( sPropName ) ) { - float fVal = static_cast< float >( - (static_cast<const SvxFontHeightItem *>(pItem)->GetHeight()) / 20.0 ); + float fVal = static_cast< float >( pFontHeightItem->GetHeight() / 20.0 ); aTmp <<= fVal; rFCompPropSet->setPropertyValue( sPropName, aTmp ); } - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_CHRATR_FONT, true, - &pItem ) ) + if( const SvxFontItem* pFontItem = rCSS1ItemSet.GetItemIfSet( RES_CHRATR_FONT ) ) { - const SvxFontItem *pFontItem = static_cast<const SvxFontItem *>(pItem); sPropName = "FontName"; if( xPropSetInfo->hasPropertyByName( sPropName ) ) { @@ -1020,40 +1008,36 @@ uno::Reference< drawing::XShape > SwHTMLParser::InsertControl( } sPropName = "FontWeight"; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_CHRATR_WEIGHT, - true, &pItem ) && - xPropSetInfo->hasPropertyByName( sPropName ) ) + const SvxWeightItem* pWeightItem = rCSS1ItemSet.GetItemIfSet( RES_CHRATR_WEIGHT ); + if( pWeightItem && xPropSetInfo->hasPropertyByName( sPropName ) ) { float fVal = vcl::unohelper::ConvertFontWeight( - static_cast<const SvxWeightItem *>(pItem)->GetWeight() ); + pWeightItem->GetWeight() ); aTmp <<= fVal; rFCompPropSet->setPropertyValue( sPropName, aTmp ); } sPropName = "FontSlant"; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_CHRATR_POSTURE, - true, &pItem ) && - xPropSetInfo->hasPropertyByName( sPropName ) ) + const SvxPostureItem* pPostureItem = rCSS1ItemSet.GetItemIfSet( RES_CHRATR_POSTURE ); + if( pPostureItem && xPropSetInfo->hasPropertyByName( sPropName ) ) { - aTmp <<= static_cast<sal_Int16>(static_cast<const SvxPostureItem *>(pItem)->GetPosture()); + aTmp <<= static_cast<sal_Int16>(pPostureItem->GetPosture()); rFCompPropSet->setPropertyValue( sPropName, aTmp ); } sPropName = "FontUnderline"; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_CHRATR_UNDERLINE, - true, &pItem ) && - xPropSetInfo->hasPropertyByName( sPropName ) ) + const SvxUnderlineItem* pUnderlineItem = rCSS1ItemSet.GetItemIfSet( RES_CHRATR_UNDERLINE ); + if( pUnderlineItem && xPropSetInfo->hasPropertyByName( sPropName ) ) { - aTmp <<= static_cast<sal_Int16>(static_cast<const SvxUnderlineItem *>(pItem)->GetLineStyle()); + aTmp <<= static_cast<sal_Int16>(pUnderlineItem->GetLineStyle()); rFCompPropSet->setPropertyValue( sPropName, aTmp ); } sPropName = "FontStrikeout"; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_CHRATR_CROSSEDOUT, - true, &pItem ) && - xPropSetInfo->hasPropertyByName( sPropName ) ) + const SvxCrossedOutItem* pCrossedOutItem = rCSS1ItemSet.GetItemIfSet( RES_CHRATR_CROSSEDOUT ); + if( pCrossedOutItem && xPropSetInfo->hasPropertyByName( sPropName ) ) { - aTmp <<= static_cast<sal_Int16>(static_cast<const SvxCrossedOutItem *>(pItem)->GetStrikeout()); + aTmp <<= static_cast<sal_Int16>(pCrossedOutItem->GetStrikeout()); rFCompPropSet->setPropertyValue( sPropName, aTmp ); } diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx index 582f30caa4f6..68998cee3efe 100644 --- a/sw/source/filter/html/htmlgrin.cxx +++ b/sw/source/filter/html/htmlgrin.cxx @@ -1052,19 +1052,16 @@ void SwHTMLParser::InsertBodyOptions() m_pCSS1Parser->SetPageDescAttrs( bSetBrush ? aBrushItem.get() : nullptr, &aItemSet ); - const SfxPoolItem *pItem; - static const sal_uInt16 aWhichIds[3] = { RES_CHRATR_FONTSIZE, + static const TypedWhichId<SvxFontHeightItem> aWhichIds[3] = { RES_CHRATR_FONTSIZE, RES_CHRATR_CJK_FONTSIZE, RES_CHRATR_CTL_FONTSIZE }; - for(sal_uInt16 i : aWhichIds) + for(auto const & i : aWhichIds) { - if( SfxItemState::SET == aItemSet.GetItemState( i, false, - &pItem ) && - static_cast <const SvxFontHeightItem * >(pItem)->GetProp() != 100) + const SvxFontHeightItem *pItem = aItemSet.GetItemIfSet( i, false ); + if( pItem && pItem->GetProp() != 100) { sal_uInt32 nHeight = - ( m_aFontHeights[2] * - static_cast <const SvxFontHeightItem * >(pItem)->GetProp() ) / 100; + ( m_aFontHeights[2] * pItem->GetProp() ) / 100; SvxFontHeightItem aNewItem( nHeight, 100, i ); aItemSet.Put( aNewItem ); } diff --git a/sw/source/filter/html/htmlplug.cxx b/sw/source/filter/html/htmlplug.cxx index fdd7bd675954..eeefc4e41c33 100644 --- a/sw/source/filter/html/htmlplug.cxx +++ b/sw/source/filter/html/htmlplug.cxx @@ -258,11 +258,9 @@ void SwHTMLParser::SetSpace( const Size& rPixSpace, } // set left/right margin - const SfxPoolItem *pItem; - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_LR_SPACE, true, &pItem ) ) + if( const SvxLRSpaceItem* pLRItem = rCSS1ItemSet.GetItemIfSet( RES_LR_SPACE ) ) { // if applicable remove the first line indent - const SvxLRSpaceItem *pLRItem = static_cast<const SvxLRSpaceItem *>(pItem); SvxLRSpaceItem aLRItem( *pLRItem ); aLRItem.SetTextFirstLineOffset( 0 ); if( rCSS1PropInfo.m_bLeftMargin ) @@ -297,10 +295,9 @@ void SwHTMLParser::SetSpace( const Size& rPixSpace, } // set top/bottom margin - if( SfxItemState::SET==rCSS1ItemSet.GetItemState( RES_UL_SPACE, true, &pItem ) ) + if( const SvxULSpaceItem *pULItem = rCSS1ItemSet.GetItemIfSet( RES_UL_SPACE ) ) { // if applicable remove the first line indent - const SvxULSpaceItem *pULItem = static_cast<const SvxULSpaceItem *>(pItem); if( rCSS1PropInfo.m_bTopMargin ) { nUpperSpace = pULItem->GetUpper(); diff --git a/sw/source/filter/html/htmlsect.cxx b/sw/source/filter/html/htmlsect.cxx index c41368631eca..c684f0a9affb 100644 --- a/sw/source/filter/html/htmlsect.cxx +++ b/sw/source/filter/html/htmlsect.cxx @@ -328,15 +328,12 @@ void SwHTMLParser::NewDivision( HtmlTokenId nToken ) if( !IsNewDoc() ) Reader::ResetFrameFormatAttrs(aFrameItemSet ); - const SfxPoolItem *pItem; - if( SfxItemState::SET == aItemSet.GetItemState( RES_BACKGROUND, false, - &pItem ) ) + if( const SvxBrushItem* pItem = aItemSet.GetItemIfSet( RES_BACKGROUND, false ) ) { aFrameItemSet.Put( *pItem ); aItemSet.ClearItem( RES_BACKGROUND ); } - if( SfxItemState::SET == aItemSet.GetItemState( RES_FRAMEDIR, false, - &pItem ) ) + if( const SvxFrameDirectionItem* pItem = aItemSet.GetItemIfSet( RES_FRAMEDIR, false ) ) { aFrameItemSet.Put( *pItem ); aItemSet.ClearItem( RES_FRAMEDIR ); @@ -712,15 +709,12 @@ void SwHTMLParser::NewMultiCol( sal_uInt16 columnsFromCss ) aFormatCol.Init( nCols, nGutter, USHRT_MAX ); aFrameItemSet.Put( aFormatCol ); - const SfxPoolItem *pItem; - if( SfxItemState::SET == aItemSet.GetItemState( RES_BACKGROUND, false, - &pItem ) ) + if( const SvxBrushItem* pItem = aItemSet.GetItemIfSet( RES_BACKGROUND, false) ) { aFrameItemSet.Put( *pItem ); aItemSet.ClearItem( RES_BACKGROUND ); } - if( SfxItemState::SET == aItemSet.GetItemState( RES_FRAMEDIR, false, - &pItem ) ) + if( const SvxFrameDirectionItem* pItem = aItemSet.GetItemIfSet( RES_FRAMEDIR, false ) ) { aFrameItemSet.Put( *pItem ); aItemSet.ClearItem( RES_FRAMEDIR ); @@ -804,18 +798,17 @@ void SwHTMLParser::MovePageDescAttrs( SwNode *pSrcNd, { SwContentNode* pSrcContentNd = pSrcNd->GetContentNode(); - const SfxPoolItem* pItem; - if( SfxItemState::SET == pSrcContentNd->GetSwAttrSet() - .GetItemState( RES_PAGEDESC, false, &pItem ) && - static_cast<const SwFormatPageDesc *>(pItem)->GetPageDesc() ) + const SwFormatPageDesc* pFormatPageDesc = + pSrcContentNd->GetSwAttrSet().GetItemIfSet( RES_PAGEDESC, false ); + if( pFormatPageDesc && pFormatPageDesc->GetPageDesc() ) { - pDestContentNd->SetAttr( *pItem ); + pDestContentNd->SetAttr( *pFormatPageDesc ); pSrcContentNd->ResetAttr( RES_PAGEDESC ); } - if( SfxItemState::SET == pSrcContentNd->GetSwAttrSet() - .GetItemState( RES_BREAK, false, &pItem ) ) + if( const SvxFormatBreakItem* pItem = pSrcContentNd->GetSwAttrSet() + .GetItemIfSet( RES_BREAK, false ) ) { - switch( static_cast<const SvxFormatBreakItem *>(pItem)->GetBreak() ) + switch( pItem->GetBreak() ) { case SvxBreak::PageBefore: case SvxBreak::PageAfter: @@ -833,9 +826,8 @@ void SwHTMLParser::MovePageDescAttrs( SwNode *pSrcNd, { SwFrameFormat *pFrameFormat = pSrcNd->GetTableNode()->GetTable().GetFrameFormat(); - const SfxPoolItem* pItem; - if( SfxItemState::SET == pFrameFormat->GetAttrSet(). - GetItemState( RES_PAGEDESC, false, &pItem ) ) + if( const SwFormatPageDesc* pItem = pFrameFormat->GetAttrSet(). + GetItemIfSet( RES_PAGEDESC, false ) ) { if (pDestContentNd) pDestContentNd->SetAttr(*pItem); diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx index 1167e6b55c49..dad2219b01f1 100644 --- a/sw/source/filter/html/htmltab.cxx +++ b/sw/source/filter/html/htmltab.cxx @@ -1429,13 +1429,12 @@ void HTMLTable::FixFrameFormat( SwTableBox *pBox, const SwStartNode *pSttNd = pBox->GetSttNd(); pCNd = pSttNd->GetNodes()[pSttNd->GetIndex()+1] ->GetContentNode(); - const SfxPoolItem *pItem; + const SvxAdjustItem *pItem; if( pCNd && pCNd->HasSwAttrSet() && - SfxItemState::SET==pCNd->GetpSwAttrSet()->GetItemState( - RES_PARATR_ADJUST, false, &pItem ) ) + (pItem = pCNd->GetpSwAttrSet()->GetItemIfSet( + RES_PARATR_ADJUST, false )) ) { - eAdjust = static_cast<const SvxAdjustItem *>(pItem) - ->GetAdjust(); + eAdjust = pItem->GetAdjust(); } } aItemSet.Put( SwTableBoxNumFormat(nNumFormat) ); @@ -2735,11 +2734,9 @@ SvxBrushItem* SwHTMLParser::CreateBrushItem( const Color *pColor, } m_pCSS1Parser->ParseStyleOption( rStyle, aItemSet, aPropInfo ); - const SfxPoolItem *pItem = nullptr; - if( SfxItemState::SET == aItemSet.GetItemState( RES_BACKGROUND, false, - &pItem ) ) + if( const SvxBrushItem *pItem = aItemSet.GetItemIfSet( RES_BACKGROUND, false ) ) { - pBrushItem = new SvxBrushItem( *static_cast<const SvxBrushItem *>(pItem) ); + pBrushItem = new SvxBrushItem( *pItem ); } } @@ -3026,10 +3023,9 @@ CellSaveStruct::CellSaveStruct( SwHTMLParser& rParser, HTMLTable const *pCurTabl if( rParser.ParseStyleOptions( m_aStyle, m_aId, m_aClass, aItemSet, aPropInfo, &aLang, &aDir ) ) { - SfxPoolItem const* pItem; - if (SfxItemState::SET == aItemSet.GetItemState(RES_BOX, false, &pItem)) + if (SvxBoxItem const* pItem = aItemSet.GetItemIfSet(RES_BOX, false)) { // fdo#41796: steal box item to set it in FixFrameFormat later! - m_xBoxItem.reset(dynamic_cast<SvxBoxItem *>(pItem->Clone())); + m_xBoxItem.reset(pItem->Clone()); aItemSet.ClearItem(RES_BOX); } rParser.InsertAttrs(aItemSet, aPropInfo, xCntxt.get()); @@ -3251,21 +3247,19 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, pCurTable->GetClass(), aItemSet, aPropInfo, nullptr, &pCurTable->GetDirection() ); - const SfxPoolItem *pItem = nullptr; if( bStyleParsed ) { - if( SfxItemState::SET == aItemSet.GetItemState( - RES_BACKGROUND, false, &pItem ) ) + if( const SvxBrushItem* pItem = aItemSet.GetItemIfSet( + RES_BACKGROUND, false ) ) { - pCurTable->SetBGBrush( *static_cast<const SvxBrushItem *>(pItem) ); + pCurTable->SetBGBrush( *pItem ); aItemSet.ClearItem( RES_BACKGROUND ); } - if( SfxItemState::SET == aItemSet.GetItemState( - RES_PARATR_SPLIT, false, &pItem ) ) + if( const SvxFormatSplitItem* pSplitItem = aItemSet.GetItemIfSet( + RES_PARATR_SPLIT, false ) ) { aItemSet.Put( - SwFormatLayoutSplit( static_cast<const SvxFormatSplitItem *>(pItem) - ->GetValue() ) ); + SwFormatLayoutSplit( pSplitItem->GetValue() ) ); aItemSet.ClearItem( RES_PARATR_SPLIT ); } } @@ -3503,23 +3497,23 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions, if (pFrameFormat && pOldTextNd) { - const SfxPoolItem* pItem2; - if( SfxItemState::SET == pOldTextNd->GetSwAttrSet() - .GetItemState( RES_PAGEDESC, false, &pItem2 ) && - static_cast<const SwFormatPageDesc *>(pItem2)->GetPageDesc() ) + const SwFormatPageDesc* pPageDescItem = pOldTextNd->GetSwAttrSet() + .GetItemIfSet( RES_PAGEDESC, false ); + if( pPageDescItem && pPageDescItem->GetPageDesc() ) { - pFrameFormat->SetFormatAttr( *pItem2 ); + pFrameFormat->SetFormatAttr( *pPageDescItem ); pOldTextNd->ResetAttr( RES_PAGEDESC ); } - if( SfxItemState::SET == pOldTextNd->GetSwAttrSet() - .GetItemState( RES_BREAK, true, &pItem2 ) ) + + if( const SvxFormatBreakItem* pBreakItem = pOldTextNd->GetSwAttrSet() + .GetItemIfSet( RES_BREAK ) ) { - switch( static_cast<const SvxFormatBreakItem *>(pItem2)->GetBreak() ) + switch( pBreakItem->GetBreak() ) { case SvxBreak::PageBefore: case SvxBreak::PageAfter: case SvxBreak::PageBoth: - pFrameFormat->SetFormatAttr( *pItem2 ); + pFrameFormat->SetFormatAttr( *pBreakItem ); pOldTextNd->ResetAttr( RES_BREAK ); break; default: diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx index b35fcc91bf79..e72e2908e630 100644 --- a/sw/source/filter/html/htmltabw.cxx +++ b/sw/source/filter/html/htmltabw.cxx @@ -392,7 +392,6 @@ void SwHTMLWrtTable::OutTableCell( SwHTMLWriter& rWrt, } const SfxItemSet& rItemSet = pBox->GetFrameFormat()->GetAttrSet(); - const SfxPoolItem *pItem; // ALIGN is only outputted at the paragraphs from now on @@ -414,11 +413,7 @@ void SwHTMLWrtTable::OutTableCell( SwHTMLWriter& rWrt, rWrt.m_bTextAttr = false; rWrt.m_bOutOpts = true; - const SvxBrushItem *pBrushItem = nullptr; - if( SfxItemState::SET==rItemSet.GetItemState( RES_BACKGROUND, false, &pItem ) ) - { - pBrushItem = static_cast<const SvxBrushItem *>(pItem); - } + const SvxBrushItem *pBrushItem = rItemSet.GetItemIfSet( RES_BACKGROUND, false ); if( !pBrushItem ) pBrushItem = pCell->GetBackground(); @@ -441,14 +436,14 @@ void SwHTMLWrtTable::OutTableCell( SwHTMLWriter& rWrt, sal_uInt32 nNumFormat = 0; double nValue = 0.0; bool bNumFormat = false, bValue = false; - if( SfxItemState::SET==rItemSet.GetItemState( RES_BOXATR_FORMAT, false, &pItem ) ) + if( const SwTableBoxNumFormat* pItem = rItemSet.GetItemIfSet( RES_BOXATR_FORMAT, false ) ) { - nNumFormat = static_cast<const SwTableBoxNumFormat *>(pItem)->GetValue(); + nNumFormat = pItem->GetValue(); bNumFormat = true; } - if( SfxItemState::SET==rItemSet.GetItemState( RES_BOXATR_VALUE, false, &pItem ) ) + if( const SwTableBoxValue* pItem = rItemSet.GetItemIfSet( RES_BOXATR_VALUE, false ) ) { - nValue = static_cast<const SwTableBoxValue *>(pItem)->GetValue(); + nValue = pItem->GetValue(); bValue = true; if( !bNumFormat ) nNumFormat = pBox->GetFrameFormat()->GetTableBoxNumFormat().GetValue(); diff --git a/sw/source/filter/html/svxcss1.cxx b/sw/source/filter/html/svxcss1.cxx index 11f0d8425567..e8c965d6547d 100644 --- a/sw/source/filter/html/svxcss1.cxx +++ b/sw/source/filter/html/svxcss1.cxx @@ -285,8 +285,8 @@ struct SvxCSS1ItemIds sal_uInt16 nOrphans; sal_uInt16 nFormatSplit; - sal_uInt16 nLRSpace; - sal_uInt16 nULSpace; + TypedWhichId<SvxLRSpaceItem> nLRSpace{0}; + TypedWhichId<SvxULSpaceItem> nULSpace{0}; sal_uInt16 nBox; sal_uInt16 nBrush; @@ -736,8 +736,8 @@ SvxCSS1Parser::SvxCSS1Parser( SfxItemPool& rPool, const OUString& rBaseURL, aItemIds.nOrphans = initTrueWhich( SID_ATTR_PARA_ORPHANS ); aItemIds.nFormatSplit = initTrueWhich( SID_ATTR_PARA_SPLIT ); - aItemIds.nLRSpace = initTrueWhich( SID_ATTR_LRSPACE ); - aItemIds.nULSpace = initTrueWhich( SID_ATTR_ULSPACE ); + aItemIds.nLRSpace = TypedWhichId<SvxLRSpaceItem>(initTrueWhich( SID_ATTR_LRSPACE )); + aItemIds.nULSpace = TypedWhichId<SvxULSpaceItem>(initTrueWhich( SID_ATTR_ULSPACE )); aItemIds.nBox = initTrueWhich( SID_ATTR_BORDER_OUTER ); aItemIds.nBrush = initTrueWhich( SID_ATTR_BRUSH ); @@ -941,16 +941,15 @@ void SvxCSS1Parser::MergeStyles( const SfxItemSet& rSrcSet, } else { - SvxLRSpaceItem aLRSpace( static_cast<const SvxLRSpaceItem&>(rTargetSet.Get(aItemIds.nLRSpace)) ); - SvxULSpaceItem aULSpace( static_cast<const SvxULSpaceItem&>(rTargetSet.Get(aItemIds.nULSpace)) ); + SvxLRSpaceItem aLRSpace( rTargetSet.Get(aItemIds.nLRSpace) ); + SvxULSpaceItem aULSpace( rTargetSet.Get(aItemIds.nULSpace) ); rTargetSet.Put( rSrcSet ); if( rSrcInfo.m_bLeftMargin || rSrcInfo.m_bRightMargin || rSrcInfo.m_bTextIndent ) { - const SvxLRSpaceItem& rNewLRSpace = - static_cast<const SvxLRSpaceItem&>(rSrcSet.Get( aItemIds.nLRSpace )); + const SvxLRSpaceItem& rNewLRSpace = rSrcSet.Get( aItemIds.nLRSpace ); if( rSrcInfo.m_bLeftMargin ) aLRSpace.SetLeft( rNewLRSpace.GetLeft() ); @@ -964,8 +963,7 @@ void SvxCSS1Parser::MergeStyles( const SfxItemSet& rSrcSet, if( rSrcInfo.m_bTopMargin || rSrcInfo.m_bBottomMargin ) { - const SvxULSpaceItem& rNewULSpace = - static_cast<const SvxULSpaceItem&>(rSrcSet.Get( aItemIds.nULSpace )); + const SvxULSpaceItem& rNewULSpace = rSrcSet.Get( aItemIds.nULSpace ); if( rSrcInfo.m_bTopMargin ) aULSpace.SetUpper( rNewULSpace.GetUpper() ); @@ -1981,11 +1979,9 @@ static void ParseCSS1_text_indent( const CSS1Expression *pExpr, if( !bSet ) return; - const SfxPoolItem* pItem; - if( SfxItemState::SET == rItemSet.GetItemState( aItemIds.nLRSpace, false, - &pItem ) ) + if( const SvxLRSpaceItem* pItem = rItemSet.GetItemIfSet( aItemIds.nLRSpace, false ) ) { - SvxLRSpaceItem aLRItem( *static_cast<const SvxLRSpaceItem*>(pItem) ); + SvxLRSpaceItem aLRItem( *pItem ); aLRItem.SetTextFirstLineOffset( nIndent ); rItemSet.Put( aLRItem ); } @@ -2044,11 +2040,9 @@ static void ParseCSS1_margin_left( const CSS1Expression *pExpr, rPropInfo.m_nLeftMargin = nLeft; if( nLeft < 0 ) nLeft = 0; - const SfxPoolItem* pItem; - if( SfxItemState::SET == rItemSet.GetItemState( aItemIds.nLRSpace, false, - &pItem ) ) + if( const SvxLRSpaceItem* pItem = rItemSet.GetItemIfSet( aItemIds.nLRSpace, false ) ) { - SvxLRSpaceItem aLRItem( *static_cast<const SvxLRSpaceItem*>(pItem) ); + SvxLRSpaceItem aLRItem( *pItem ); aLRItem.SetTextLeft( o3tl::narrowing<sal_uInt16>(nLeft) ); rItemSet.Put( aLRItem ); } @@ -2103,11 +2097,9 @@ static void ParseCSS1_margin_right( const CSS1Expression *pExpr, rPropInfo.m_nRightMargin = nRight; if( nRight < 0 ) nRight = 0; - const SfxPoolItem* pItem; - if( SfxItemState::SET == rItemSet.GetItemState( aItemIds.nLRSpace, false, - &pItem ) ) + if( const SvxLRSpaceItem* pItem = rItemSet.GetItemIfSet( aItemIds.nLRSpace, false ) ) { - SvxLRSpaceItem aLRItem( *static_cast<const SvxLRSpaceItem*>(pItem) ); + SvxLRSpaceItem aLRItem( *pItem ); aLRItem.SetRight( o3tl::narrowing<sal_uInt16>(nRight) ); rItemSet.Put( aLRItem ); } @@ -2165,11 +2157,9 @@ static void ParseCSS1_margin_top( const CSS1Expression *pExpr, if( !bSet ) return; - const SfxPoolItem* pItem; - if( SfxItemState::SET == rItemSet.GetItemState( aItemIds.nULSpace, false, - &pItem ) ) + if( const SvxULSpaceItem* pItem = rItemSet.GetItemIfSet( aItemIds.nULSpace, false ) ) { - SvxULSpaceItem aULItem( *static_cast<const SvxULSpaceItem*>(pItem) ); + SvxULSpaceItem aULItem( *pItem ); aULItem.SetUpper( nUpper ); rItemSet.Put( aULItem ); } @@ -2227,11 +2217,9 @@ static void ParseCSS1_margin_bottom( const CSS1Expression *pExpr, if( !bSet ) return; - const SfxPoolItem* pItem; - if( SfxItemState::SET == rItemSet.GetItemState( aItemIds.nULSpace, false, - &pItem ) ) + if( const SvxULSpaceItem* pItem = rItemSet.GetItemIfSet( aItemIds.nULSpace, false ) ) { - SvxULSpaceItem aULItem( *static_cast<const SvxULSpaceItem*>(pItem) ); + SvxULSpaceItem aULItem( *pItem ); aULItem.SetLower( nLower ); rItemSet.Put( aULItem ); } @@ -2337,11 +2325,9 @@ static void ParseCSS1_margin( const CSS1Expression *pExpr, nMargins[1] = 0; } - const SfxPoolItem* pItem; - if( SfxItemState::SET == rItemSet.GetItemState( aItemIds.nLRSpace, false, - &pItem ) ) + if( const SvxLRSpaceItem* pItem = rItemSet.GetItemIfSet( aItemIds.nLRSpace, false ) ) { - SvxLRSpaceItem aLRItem( *static_cast<const SvxLRSpaceItem*>(pItem) ); + SvxLRSpaceItem aLRItem( *pItem ); if( bSetMargins[3] ) aLRItem.SetLeft( o3tl::narrowing<sal_uInt16>(nMargins[3]) ); if( bSetMargins[1] ) @@ -2367,11 +2353,9 @@ static void ParseCSS1_margin( const CSS1Expression *pExpr, if( nMargins[2] < 0 ) nMargins[2] = 0; - const SfxPoolItem* pItem; - if( SfxItemState::SET == rItemSet.GetItemState( aItemIds.nULSpace, false, - &pItem ) ) + if( const SvxULSpaceItem* pItem = rItemSet.GetItemIfSet( aItemIds.nULSpace, false ) ) { - SvxULSpaceItem aULItem( *static_cast<const SvxULSpaceItem*>(pItem) ); + SvxULSpaceItem aULItem( *pItem ); if( bSetMargins[0] ) aULItem.SetUpper( o3tl::narrowing<sal_uInt16>(nMargins[0]) ); if( bSetMargins[2] ) diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx index 5a564c12a907..47671d0dddaf 100644 --- a/sw/source/filter/html/swhtml.cxx +++ b/sw/source/filter/html/swhtml.cxx @@ -4737,12 +4737,8 @@ void SwHTMLParser::SetTextCollAttrs( HTMLAttrContext *pContext ) const SwTextFormatColl *pTopColl = m_pCSS1Parser->GetTextFormatColl( nTopColl, rTopClass ); const SfxItemSet& rItemSet = pTopColl->GetAttrSet(); - const SfxPoolItem *pItem; - if( SfxItemState::SET == rItemSet.GetItemState(RES_LR_SPACE,true, &pItem) ) + if( const SvxLRSpaceItem *pLRItem = rItemSet.GetItemIfSet(RES_LR_SPACE) ) { - const SvxLRSpaceItem *pLRItem = - static_cast<const SvxLRSpaceItem *>(pItem); - sal_Int32 nLeft = pLRItem->GetTextLeft(); sal_Int32 nRight = pLRItem->GetRight(); nFirstLineIndent = pLRItem->GetTextFirstLineOffset(); @@ -4769,10 +4765,8 @@ void SwHTMLParser::SetTextCollAttrs( HTMLAttrContext *pContext ) pContext->SetMargins( nLeftMargin, nRightMargin, nFirstLineIndent ); } - if( SfxItemState::SET == rItemSet.GetItemState(RES_UL_SPACE,true, &pItem) ) + if( const SvxULSpaceItem* pULItem = rItemSet.GetItemIfSet(RES_UL_SPACE) ) { - const SvxULSpaceItem *pULItem = - static_cast<const SvxULSpaceItem *>(pItem); pContext->SetULSpace( pULItem->GetUpper(), pULItem->GetLower() ); } } diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx index 39c2e39049de..d1e5f64408fb 100644 --- a/sw/source/filter/html/wrthtml.cxx +++ b/sw/source/filter/html/wrthtml.cxx @@ -188,11 +188,10 @@ void SwHTMLWriter::SetupFilterOptions(SfxMedium& rMedium) if (pSet == nullptr) return; - const SfxPoolItem* pItem; uno::Sequence<beans::PropertyValue> aArgs = rMedium.GetArgs(); - if (pSet->GetItemState(SID_FILE_FILTEROPTIONS, true, &pItem) == SfxItemState::SET) + if (const SfxStringItem* pItem = pSet->GetItemIfSet( SID_FILE_FILTEROPTIONS )) { - const OUString sFilterOptions = static_cast<const SfxStringItem*>(pItem)->GetValue(); + const OUString sFilterOptions = pItem->GetValue(); if (sFilterOptions.startsWith("{")) { @@ -552,15 +551,14 @@ ErrCode SwHTMLWriter::WriteStream() if( !aStartTags.isEmpty() ) Strm().WriteOString( aStartTags ); - const SfxPoolItem *pItem; + const SwFormatHeader *pFormatHeader; const SfxItemSet& rPageItemSet = m_pCurrPageDesc->GetMaster().GetAttrSet(); if( !m_bWriteClipboardDoc && m_pDoc->GetDocShell() && (!m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE) && !m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::BROWSE_MODE)) && - SfxItemState::SET == rPageItemSet.GetItemState( RES_HEADER, true, &pItem) ) + (pFormatHeader = rPageItemSet.GetItemIfSet( RES_HEADER )) ) { - const SwFrameFormat *pHeaderFormat = - static_cast<const SwFormatHeader *>(pItem)->GetHeaderFormat(); + const SwFrameFormat *pHeaderFormat = pFormatHeader->GetHeaderFormat(); if( pHeaderFormat ) OutHTML_HeaderFooter( *this, *pHeaderFormat, true ); } @@ -575,12 +573,12 @@ ErrCode SwHTMLWriter::WriteStream() if( m_xFootEndNotes ) OutFootEndNotes(); + const SwFormatFooter* pFormatFooter; if( !m_bWriteClipboardDoc && m_pDoc->GetDocShell() && (!m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::HTML_MODE) && !m_pDoc->getIDocumentSettingAccess().get(DocumentSettingId::BROWSE_MODE)) && - SfxItemState::SET == rPageItemSet.GetItemState( RES_FOOTER, true, &pItem) ) + (pFormatFooter = rPageItemSet.GetItemIfSet( RES_FOOTER )) ) { - const SwFrameFormat *pFooterFormat = - static_cast<const SwFormatFooter *>(pItem)->GetFooterFormat(); + const SwFrameFormat *pFooterFormat = pFormatFooter->GetFooterFormat(); if( pFooterFormat ) OutHTML_HeaderFooter( *this, *pFooterFormat, false ); } @@ -662,17 +660,14 @@ ErrCode SwHTMLWriter::WriteStream() static const SwFormatCol *lcl_html_GetFormatCol( const SwSection& rSection, const SwSectionFormat& rFormat ) { - const SwFormatCol *pCol = nullptr; + if( SectionType::FileLink == rSection.GetType() ) + return nullptr; - const SfxPoolItem* pItem; - if( SectionType::FileLink != rSection.GetType() && - SfxItemState::SET == rFormat.GetAttrSet().GetItemState(RES_COL,false,&pItem) && - static_cast<const SwFormatCol *>(pItem)->GetNumCols() > 1 ) - { - pCol = static_cast<const SwFormatCol *>(pItem); - } + const SwFormatCol *pCol = rFormat.GetAttrSet().GetItemIfSet(RES_COL,false); + if (pCol->GetNumCols() > 1 ) + return pCol; - return pCol; + return nullptr; } static bool lcl_html_IsMultiColStart( const SwHTMLWriter& rHTMLWrt, SwNodeOffset nIndex ) @@ -982,19 +977,16 @@ static void OutBodyColor( const char* pTag, const SwFormat *pFormat, const SvxColorItem *pColorItem = nullptr; const SfxItemSet& rItemSet = pFormat->GetAttrSet(); - const SfxPoolItem *pRefItem = nullptr, *pItem = nullptr; - bool bItemSet = SfxItemState::SET == rItemSet.GetItemState( RES_CHRATR_COLOR, - true, &pItem); - bool bRefItemSet = pRefFormat && - SfxItemState::SET == pRefFormat->GetAttrSet().GetItemState( RES_CHRATR_COLOR, - true, &pRefItem); - if( bItemSet ) + const SvxColorItem *pCItem = rItemSet.GetItemIfSet( RES_CHRATR_COLOR ); + const SvxColorItem *pRefItem = nullptr; + if (pRefFormat) + pRefItem = pRefFormat->GetAttrSet().GetItemIfSet( RES_CHRATR_COLOR ); + if( pCItem ) { // only when the item is set in the template of the current document // or has a different value as the in HTML template, it will be set - const SvxColorItem *pCItem = static_cast<const SvxColorItem*>(pItem); - if( !bRefItemSet ) + if( !pRefItem ) { pColorItem = pCItem; } @@ -1004,7 +996,7 @@ static void OutBodyColor( const char* pTag, const SwFormat *pFormat, if( COL_AUTO == aColor ) aColor = COL_BLACK; - Color aRefColor( static_cast<const SvxColorItem*>(pRefItem)->GetValue() ); + Color aRefColor( pRefItem->GetValue() ); if( COL_AUTO == aRefColor ) aRefColor = COL_BLACK; @@ -1012,7 +1004,7 @@ static void OutBodyColor( const char* pTag, const SwFormat *pFormat, pColorItem = pCItem; } } - else if( bRefItemSet ) + else if( pRefItem ) { // The item was still set in the HTML template so we output the default pColorItem = &rItemSet.GetPool()->GetDefaultItem( RES_CHRATR_COLOR ); @@ -1409,11 +1401,9 @@ void SwHTMLWriter::OutBackground( const SvxBrushItem *pBrushItem, bool bGraphic void SwHTMLWriter::OutBackground( const SfxItemSet& rItemSet, bool bGraphic ) { - const SfxPoolItem* pItem; - if( SfxItemState::SET == rItemSet.GetItemState( RES_BACKGROUND, false, - &pItem )) + if( const SvxBrushItem* pItem = rItemSet.GetItemIfSet( RES_BACKGROUND, false ) ) { - OutBackground( static_cast<const SvxBrushItem*>(pItem), bGraphic ); + OutBackground( pItem, bGraphic ); } } diff --git a/sw/source/filter/writer/wrtswtbl.cxx b/sw/source/filter/writer/wrtswtbl.cxx index 6421eeb5c38a..1c4e43e35c8f 100644 --- a/sw/source/filter/writer/wrtswtbl.cxx +++ b/sw/source/filter/writer/wrtswtbl.cxx @@ -41,11 +41,9 @@ sal_Int16 SwWriteTableCell::GetVertOri() const if( m_pBox->GetSttNd() ) { const SfxItemSet& rItemSet = m_pBox->GetFrameFormat()->GetAttrSet(); - const SfxPoolItem *pItem; - if( SfxItemState::SET == rItemSet.GetItemState( RES_VERT_ORIENT, false, &pItem ) ) + if( const SwFormatVertOrient *pItem = rItemSet.GetItemIfSet( RES_VERT_ORIENT, false ) ) { - sal_Int16 eBoxVertOri = - static_cast<const SwFormatVertOrient *>(pItem)->GetVertOrient(); + sal_Int16 eBoxVertOri = pItem->GetVertOrient(); if( text::VertOrientation::CENTER==eBoxVertOri || text::VertOrientation::BOTTOM==eBoxVertOri) eCellVertOri = eBoxVertOri; } @@ -149,12 +147,11 @@ tools::Long SwWriteTable::GetLineHeight( const SwTableBox *pBox ) return 0; const SwFrameFormat *pLineFrameFormat = pLine->GetFrameFormat(); - const SfxPoolItem* pItem; const SfxItemSet& rItemSet = pLineFrameFormat->GetAttrSet(); tools::Long nHeight = 0; - if( SfxItemState::SET == rItemSet.GetItemState( RES_FRM_SIZE, true, &pItem )) - nHeight = static_cast<const SwFormatFrameSize*>(pItem)->GetHeight(); + if( const SwFormatFrameSize* pItem = rItemSet.GetItemIfSet( RES_FRM_SIZE ) ) + nHeight = pItem->GetHeight(); return nHeight; } @@ -167,20 +164,18 @@ const SvxBrushItem *SwWriteTable::GetLineBrush( const SwTableBox *pBox, while( pLine ) { const SwFrameFormat *pLineFrameFormat = pLine->GetFrameFormat(); - const SfxPoolItem* pItem; const SfxItemSet& rItemSet = pLineFrameFormat->GetAttrSet(); - if( SfxItemState::SET == rItemSet.GetItemState( RES_BACKGROUND, false, - &pItem ) ) + if( const SvxBrushItem* pItem = rItemSet.GetItemIfSet( RES_BACKGROUND, false ) ) { if( !pLine->GetUpper() ) { if( !pRow->GetBackground() ) - pRow->SetBackground( static_cast<const SvxBrushItem *>(pItem) ); + pRow->SetBackground( pItem ); pItem = nullptr; } - return static_cast<const SvxBrushItem *>(pItem); + return pItem; } pBox = pLine->GetUpper(); @@ -586,18 +581,16 @@ void SwWriteTable::FillTableRowsCols( tools::Long nStartRPos, sal_uInt16 nStartR const SwTableBoxes& rBoxes = pLine->GetTabBoxes(); const SwFrameFormat *pLineFrameFormat = pLine->GetFrameFormat(); - const SfxPoolItem* pItem; const SfxItemSet& rItemSet = pLineFrameFormat->GetAttrSet(); tools::Long nHeight = 0; - if( SfxItemState::SET == rItemSet.GetItemState( RES_FRM_SIZE, true, &pItem )) - nHeight = static_cast<const SwFormatFrameSize*>(pItem)->GetHeight(); + if( const SwFormatFrameSize* pFrameSizeItem = rItemSet.GetItemIfSet( RES_FRM_SIZE )) + nHeight = pFrameSizeItem->GetHeight(); const SvxBrushItem *pBrushItem, *pLineBrush = pParentBrush; - if( SfxItemState::SET == rItemSet.GetItemState( RES_BACKGROUND, false, - &pItem ) ) + if( const SvxBrushItem* pTmpBrush = rItemSet.GetItemIfSet( RES_BACKGROUND, false ) ) { - pLineBrush = static_cast<const SvxBrushItem *>(pItem); + pLineBrush = pTmpBrush; // If the row spans the entire table, we can // print out the background to the row. Otherwise