editeng/source/editeng/editdbg.cxx | 334 +++++++++++++++++++------------------ 1 file changed, 173 insertions(+), 161 deletions(-)
New commits: commit 71d4049dd0f37cbc23180d11f6bb65de4a59155d Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Sat Mar 25 15:15:11 2023 +0300 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Sat Mar 25 14:22:14 2023 +0000 Simplify DbgOutItem Use SfxPoolItem::StaticWhichCast instead of static_casts; have type-specific append overloads for the different item types to remove duplication and differentiate output for similar but distinct items, like EE_CHAR_LANGUAGE/CJK/CTL; and drop numeric type casts when calling OString::number. Change-Id: Ibce1f77f5cfd0eae02e31a6eac83dd9508bd5e9b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149577 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/editeng/source/editeng/editdbg.cxx b/editeng/source/editeng/editdbg.cxx index 308d4af93794..31ec9d09306d 100644 --- a/editeng/source/editeng/editdbg.cxx +++ b/editeng/source/editeng/editdbg.cxx @@ -58,241 +58,253 @@ #if defined( DBG_UTIL ) || ( OSL_DEBUG_LEVEL > 1 ) +namespace +{ +struct DebOutBuffer +{ + OStringBuffer str; + void append(std::string_view descr, const SfxEnumItemInterface& rItem) + { + str.append(descr + OString::number(rItem.GetEnumValue())); + } + void append(std::string_view descr, const SvxLRSpaceItem& rItem) + { + str.append(OString::Concat(descr) + "FI=" + OString::number(rItem.GetTextFirstLineOffset()) + + ", LI=" + OString::number(rItem.GetTextLeft()) + + ", RI=" + OString::number(rItem.GetRight())); + } + void append(std::string_view descr, const SvxNumBulletItem& rItem) + { + str.append(descr); + for (sal_uInt16 nLevel = 0; nLevel < 3; nLevel++) + { + str.append("Level" + OString::number(nLevel) + "="); + const SvxNumberFormat* pFmt = rItem.GetNumRule().Get(nLevel); + if (pFmt) + { + str.append("(" + OString::number(pFmt->GetFirstLineOffset()) + "," + + OString::number(pFmt->GetAbsLSpace()) + ","); + if (pFmt->GetNumberingType() == SVX_NUM_BITMAP) + str.append("Bitmap"); + else if (pFmt->GetNumberingType() != SVX_NUM_CHAR_SPECIAL) + str.append("Number"); + else + { + str.append("Char=[" + OString::number(pFmt->GetBulletChar()) + "]"); + } + str.append(") "); + } + } + } + void append(std::string_view descr, const SfxBoolItem& rItem) + { + str.append(descr + OString::number(static_cast<int>(rItem.GetValue()))); + } + void append(std::string_view descr, const SfxInt16Item& rItem) + { + str.append(descr + OString::number(rItem.GetValue())); + } + void append(std::string_view descr, const SfxUInt16Item& rItem) + { + str.append(descr + OString::number(rItem.GetValue())); + } + void append(const SvxULSpaceItem& rItem) + { + str.append("SB=" + OString::number(rItem.GetUpper()) + + ", SA=" + OString::number(rItem.GetLower())); + } + void append(std::string_view descr, const SvxLineSpacingItem& rItem) + { + str.append(descr); + if (rItem.GetLineSpaceRule() == SvxLineSpaceRule::Min) + { + str.append("Min: " + OString::number(rItem.GetInterLineSpace())); + } + else if (rItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Prop) + { + str.append("Prop: " + OString::number(rItem.GetPropLineSpace())); + } + else + str.append("Unsupported Type!"); + } + void append(const SvxTabStopItem& rTabs) + { + str.append("Tabs: " + OString::number(rTabs.Count())); + if (rTabs.Count()) + { + str.append("( "); + for (sal_uInt16 i = 0; i < rTabs.Count(); ++i) + { + const SvxTabStop& rTab = rTabs[i]; + str.append(OString::number(rTab.GetTabPos()) + " "); + } + str.append(')'); + } + } + void append(std::string_view descr, const SvxColorItem& rItem) + { + Color aColor(rItem.GetValue()); + str.append(descr + OString::number(aColor.GetRed()) + ", " + + OString::number(aColor.GetGreen()) + ", " + OString::number(aColor.GetBlue())); + } + void append(std::string_view descr, const SvxFontItem& rItem) + { + str.append(descr + OUStringToOString(rItem.GetFamilyName(), RTL_TEXTENCODING_ASCII_US) + + " (CharSet: " + OString::number(rItem.GetCharSet()) + ")"); + } + void append(std::string_view descr, const SvxEscapementItem& rItem) + { + str.append(descr + OString::number(rItem.GetEsc()) + ", " + + OString::number(rItem.GetProportionalHeight())); + } + void appendHeightAndPts(std::string_view descr, tools::Long h, MapUnit eUnit) + { + MapMode aItemMapMode(eUnit); + MapMode aPntMap(MapUnit::MapPoint); + Size aSz = OutputDevice::LogicToLogic(Size(0, h), aItemMapMode, aPntMap); + str.append(descr + OString::number(h) + " Points=" + OString::number(aSz.Height())); + } + void append(std::string_view descr, const SvxFontHeightItem& rItem, const SfxItemPool& rPool) + { + appendHeightAndPts(descr, rItem.GetHeight(), rPool.GetMetric(rItem.Which())); + } + void append(std::string_view descr, const SvxKerningItem& rItem, const SfxItemPool& rPool) + { + appendHeightAndPts(descr, rItem.GetValue(), rPool.GetMetric(rItem.Which())); + } +}; +} + static OString DbgOutItem(const SfxItemPool& rPool, const SfxPoolItem& rItem) { - OStringBuffer aDebStr; + DebOutBuffer buffer; switch ( rItem.Which() ) { case EE_PARA_WRITINGDIR: - aDebStr.append("WritingDir=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxFrameDirectionItem&>(rItem).GetValue()))); + buffer.append("WritingDir=", rItem.StaticWhichCast(EE_PARA_WRITINGDIR)); break; case EE_PARA_OUTLLRSPACE: + buffer.append("Outline ", rItem.StaticWhichCast(EE_PARA_OUTLLRSPACE)); + break; case EE_PARA_LRSPACE: - aDebStr.append("FI=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxLRSpaceItem&>(rItem).GetTextFirstLineOffset())) - + ", LI=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxLRSpaceItem&>(rItem).GetTextLeft())) - + ", RI=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxLRSpaceItem&>(rItem).GetRight()))); + buffer.append("", rItem.StaticWhichCast(EE_PARA_LRSPACE)); break; case EE_PARA_NUMBULLET: - aDebStr.append("NumItem "); - for ( sal_uInt16 nLevel = 0; nLevel < 3; nLevel++ ) - { - aDebStr.append("Level" - + OString::number(static_cast<sal_Int32>(nLevel)) - + "="); - const SvxNumberFormat* pFmt = static_cast<const SvxNumBulletItem&>(rItem).GetNumRule().Get( nLevel ); - if ( pFmt ) - { - aDebStr.append("(" - + OString::number(pFmt->GetFirstLineOffset()) - + "," - + OString::number(pFmt->GetAbsLSpace()) - + ","); - if ( pFmt->GetNumberingType() == SVX_NUM_BITMAP ) - aDebStr.append("Bitmap"); - else if( pFmt->GetNumberingType() != SVX_NUM_CHAR_SPECIAL ) - aDebStr.append("Number"); - else - { - aDebStr.append("Char=[" - + OString::number(static_cast<sal_Int32>(pFmt->GetBulletChar())) - + "]"); - } - aDebStr.append(") "); - } - } + buffer.append("NumItem ", rItem.StaticWhichCast(EE_PARA_NUMBULLET)); break; case EE_PARA_BULLETSTATE: - aDebStr.append("ShowBullet=" - + OString::number(static_cast<sal_Int32>(static_cast<const SfxBoolItem&>(rItem).GetValue()))); + buffer.append("ShowBullet=", rItem.StaticWhichCast(EE_PARA_BULLETSTATE)); break; case EE_PARA_HYPHENATE: - aDebStr.append("Hyphenate=" - + OString::number(static_cast<sal_Int32>(static_cast<const SfxBoolItem&>(rItem).GetValue()))); + buffer.append("Hyphenate=", rItem.StaticWhichCast(EE_PARA_HYPHENATE)); break; case EE_PARA_OUTLLEVEL: - aDebStr.append("Level=" - + OString::number(static_cast<sal_Int32>(static_cast<const SfxInt16Item&>(rItem).GetValue()))); + buffer.append("Level=", rItem.StaticWhichCast(EE_PARA_OUTLLEVEL)); break; case EE_PARA_ULSPACE: - aDebStr.append("SB=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxULSpaceItem&>(rItem).GetUpper())) - + ", SA=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxULSpaceItem&>(rItem).GetLower()))); + buffer.append(rItem.StaticWhichCast(EE_PARA_ULSPACE)); break; case EE_PARA_SBL: - aDebStr.append("SBL="); - if ( static_cast<const SvxLineSpacingItem&>(rItem).GetLineSpaceRule() == SvxLineSpaceRule::Min ) - { - aDebStr.append("Min: " - + OString::number(static_cast<sal_Int32>(static_cast<const SvxLineSpacingItem&>(rItem).GetInterLineSpace()))); - } - else if ( static_cast<const SvxLineSpacingItem&>(rItem).GetInterLineSpaceRule() == SvxInterLineSpaceRule::Prop ) - { - aDebStr.append("Prop: " - + OString::number(static_cast<sal_Int32>(static_cast<const SvxLineSpacingItem&>(rItem).GetPropLineSpace()))); - } - else - aDebStr.append("Unsupported Type!"); + buffer.append("SBL=", rItem.StaticWhichCast(EE_PARA_SBL)); break; case EE_PARA_JUST: - aDebStr.append("SvxAdust=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxAdjustItem&>(rItem).GetAdjust()))); + buffer.append("SvxAdust=", rItem.StaticWhichCast(EE_PARA_JUST)); break; case EE_PARA_TABS: - { - aDebStr.append("Tabs: "); - const SvxTabStopItem& rTabs = static_cast<const SvxTabStopItem&>(rItem); - aDebStr.append(static_cast<sal_Int32>(rTabs.Count())); - if ( rTabs.Count() ) - { - aDebStr.append("( "); - for (sal_uInt16 i = 0; i < rTabs.Count(); ++i) - { - const SvxTabStop& rTab = rTabs[i]; - aDebStr.append(OString::number(rTab.GetTabPos()) + " "); - } - aDebStr.append(')'); - } - } + buffer.append(rItem.StaticWhichCast(EE_PARA_TABS)); break; case EE_CHAR_LANGUAGE: + buffer.append("Language=", rItem.StaticWhichCast(EE_CHAR_LANGUAGE)); + break; case EE_CHAR_LANGUAGE_CJK: + buffer.append("LanguageCJK=", rItem.StaticWhichCast(EE_CHAR_LANGUAGE_CJK)); + break; case EE_CHAR_LANGUAGE_CTL: - aDebStr.append("Language="); - aDebStr.append(static_cast<sal_Int32>(static_cast<sal_uInt16>(static_cast<const SvxLanguageItem&>(rItem).GetLanguage()))); + buffer.append("LanguageCTL=", rItem.StaticWhichCast(EE_CHAR_LANGUAGE_CTL)); break; case EE_CHAR_COLOR: - { - aDebStr.append("Color= "); - Color aColor( static_cast<const SvxColorItem&>(rItem).GetValue() ); - aDebStr.append( - OString::number(static_cast<sal_Int32>(aColor.GetRed())) - + ", " - + OString::number(static_cast<sal_Int32>(aColor.GetGreen())) - + ", " - + OString::number(static_cast<sal_Int32>(aColor.GetBlue()))); - } + buffer.append("Color= ", rItem.StaticWhichCast(EE_CHAR_COLOR)); break; case EE_CHAR_BKGCOLOR: - { - aDebStr.append("FillColor= "); - Color aColor( static_cast<const SvxColorItem&>(rItem).GetValue() ); - aDebStr.append( - OString::number(static_cast<sal_Int32>(aColor.GetRed())) - + ", " - + OString::number(static_cast<sal_Int32>(aColor.GetGreen())) - + ", " - + OString::number(static_cast<sal_Int32>(aColor.GetBlue()))); - } + buffer.append("FillColor= ", rItem.StaticWhichCast(EE_CHAR_BKGCOLOR)); break; case EE_CHAR_FONTINFO: + buffer.append("Font=", rItem.StaticWhichCast(EE_CHAR_FONTINFO)); + break; case EE_CHAR_FONTINFO_CJK: + buffer.append("FontCJK=", rItem.StaticWhichCast(EE_CHAR_FONTINFO_CJK)); + break; case EE_CHAR_FONTINFO_CTL: - { - aDebStr.append("Font=" - + OUStringToOString(static_cast<const SvxFontItem&>(rItem).GetFamilyName(), RTL_TEXTENCODING_ASCII_US) - + " (CharSet: " - + OString::number(static_cast<sal_Int32>(static_cast<const SvxFontItem&>(rItem).GetCharSet())) - + ")"); - } + buffer.append("FontCTL=", rItem.StaticWhichCast(EE_CHAR_FONTINFO_CTL)); break; case EE_CHAR_FONTHEIGHT: + buffer.append("Size=", rItem.StaticWhichCast(EE_CHAR_FONTHEIGHT), rPool); + break; case EE_CHAR_FONTHEIGHT_CJK: + buffer.append("SizeCJK=", rItem.StaticWhichCast(EE_CHAR_FONTHEIGHT_CJK), rPool); + break; case EE_CHAR_FONTHEIGHT_CTL: - { - aDebStr.append("Groesse=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxFontHeightItem&>(rItem).GetHeight()))); - Size aSz( 0, static_cast<const SvxFontHeightItem&>(rItem).GetHeight() ); - MapUnit eUnit = rPool.GetMetric( rItem.Which() ); - MapMode aItemMapMode(eUnit); - MapMode aPntMap( MapUnit::MapPoint ); - aSz = OutputDevice::LogicToLogic( aSz, aItemMapMode, aPntMap ); - aDebStr.append(" Points=" - + OString::number(static_cast<sal_Int32>(aSz.Height()))); - } + buffer.append("SizeCTL=", rItem.StaticWhichCast(EE_CHAR_FONTHEIGHT_CTL), rPool); break; case EE_CHAR_FONTWIDTH: - { - aDebStr.append("Breite=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxCharScaleWidthItem&>(rItem).GetValue())) - + "%"); - } + buffer.append("Width=", rItem.StaticWhichCast(EE_CHAR_FONTWIDTH)); break; case EE_CHAR_WEIGHT: + buffer.append("FontWeight=", rItem.StaticWhichCast(EE_CHAR_WEIGHT)); + break; case EE_CHAR_WEIGHT_CJK: + buffer.append("FontWeightCJK=", rItem.StaticWhichCast(EE_CHAR_WEIGHT_CJK)); + break; case EE_CHAR_WEIGHT_CTL: - aDebStr.append("FontWeight="); - aDebStr.append(static_cast<sal_Int32>(static_cast<const SvxWeightItem&>(rItem).GetWeight())); + buffer.append("FontWeightCTL=", rItem.StaticWhichCast(EE_CHAR_WEIGHT_CTL)); break; case EE_CHAR_UNDERLINE: - aDebStr.append("FontUnderline=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxUnderlineItem&>(rItem).GetLineStyle()))); + buffer.append("FontUnderline=", rItem.StaticWhichCast(EE_CHAR_UNDERLINE)); break; case EE_CHAR_OVERLINE: - aDebStr.append("FontOverline=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxOverlineItem&>(rItem).GetLineStyle()))); + buffer.append("FontOverline=", rItem.StaticWhichCast(EE_CHAR_OVERLINE)); break; case EE_CHAR_EMPHASISMARK: - aDebStr.append("FontUnderline=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxEmphasisMarkItem&>(rItem).GetEmphasisMark()))); + buffer.append("FontEmphasisMark=", rItem.StaticWhichCast(EE_CHAR_EMPHASISMARK)); break; case EE_CHAR_RELIEF: - aDebStr.append("FontRelief=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxCharReliefItem&>(rItem).GetValue()))); + buffer.append("FontRelief=", rItem.StaticWhichCast(EE_CHAR_RELIEF)); break; case EE_CHAR_STRIKEOUT: - aDebStr.append("FontStrikeout=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxCrossedOutItem&>(rItem).GetStrikeout()))); + buffer.append("FontStrikeout=", rItem.StaticWhichCast(EE_CHAR_STRIKEOUT)); break; case EE_CHAR_ITALIC: + buffer.append("FontPosture=", rItem.StaticWhichCast(EE_CHAR_ITALIC)); + break; case EE_CHAR_ITALIC_CJK: + buffer.append("FontPostureCJK=", rItem.StaticWhichCast(EE_CHAR_ITALIC_CJK)); + break; case EE_CHAR_ITALIC_CTL: - aDebStr.append("FontPosture=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxPostureItem&>(rItem).GetPosture()))); + buffer.append("FontPostureCTL=", rItem.StaticWhichCast(EE_CHAR_ITALIC_CTL)); break; case EE_CHAR_OUTLINE: - aDebStr.append("FontOutline=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxContourItem&>(rItem).GetValue()))); + buffer.append("FontOutline=", rItem.StaticWhichCast(EE_CHAR_OUTLINE)); break; case EE_CHAR_SHADOW: - aDebStr.append("FontShadowed=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxShadowedItem&>(rItem).GetValue()))); + buffer.append("FontShadowed=", rItem.StaticWhichCast(EE_CHAR_SHADOW)); break; case EE_CHAR_ESCAPEMENT: - aDebStr.append("Escape=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxEscapementItem&>(rItem).GetEsc())) - + ", " - + OString::number(static_cast<sal_Int32>(static_cast<const SvxEscapementItem&>(rItem).GetProportionalHeight()))); + buffer.append("Escape=", rItem.StaticWhichCast(EE_CHAR_ESCAPEMENT)); break; case EE_CHAR_PAIRKERNING: - aDebStr.append("PairKerning=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxAutoKernItem&>(rItem).GetValue()))); + buffer.append("PairKerning=", rItem.StaticWhichCast(EE_CHAR_PAIRKERNING)); break; case EE_CHAR_KERNING: - { - aDebStr.append("Kerning=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxKerningItem&>(rItem).GetValue()))); - Size aSz( 0, static_cast<short>(static_cast<const SvxKerningItem&>(rItem).GetValue()) ); - MapUnit eUnit = rPool.GetMetric( rItem.Which() ); - MapMode aItemMapMode(eUnit); - MapMode aPntMap( MapUnit::MapPoint ); - aSz = OutputDevice::LogicToLogic( aSz, aItemMapMode, aPntMap ); - aDebStr.append(" Points=" + OString::number(static_cast<sal_Int32>(aSz.Height()))); - } + buffer.append("Kerning=", rItem.StaticWhichCast(EE_CHAR_KERNING), rPool); break; case EE_CHAR_WLM: - aDebStr.append("WordLineMode=" - + OString::number(static_cast<sal_Int32>(static_cast<const SvxWordLineModeItem&>(rItem).GetValue()))); + buffer.append("WordLineMode=", rItem.StaticWhichCast(EE_CHAR_WLM)); break; case EE_CHAR_XMLATTRIBS: - aDebStr.append("XMLAttribs=..."); + buffer.str.append("XMLAttribs=..."); break; } - return aDebStr.makeStringAndClear(); + return buffer.str.makeStringAndClear(); } static void DbgOutItemSet(FILE* fp, const SfxItemSet& rSet, bool bSearchInParent, bool bShowALL) @@ -355,7 +367,7 @@ void EditEngine::DumpData(const EditEngine* pEE, bool bInfoBox) "\nA" + OString::number(nPortion) + ": " - + OString::number(static_cast<sal_Int32>(rAttr->GetItem()->Which())) + + OString::number(rAttr->GetItem()->Which()) + "\t" + OString::number(rAttr->GetStart()) + "\t" @@ -387,7 +399,7 @@ void EditEngine::DumpData(const EditEngine* pEE, bool bInfoBox) aPortionStr.append(" " + OString::number(rPortion.GetLen()) + "(" - + OString::number(static_cast<sal_Int32>(rPortion.GetSize().Width())) + + OString::number(rPortion.GetSize().Width()) + ")" "[" + OString::number(static_cast<sal_Int32>(rPortion.GetKind()))