sc/inc/patattr.hxx | 50 +++++++++++++--- sc/qa/unit/helper/qahelper.cxx | 26 ++++---- sc/qa/unit/subsequent_export_test2.cxx | 4 - sc/qa/unit/ucalc.cxx | 2 sc/qa/unit/uicalc/uicalc.cxx | 26 ++++---- sc/source/core/data/column2.cxx | 6 - sc/source/core/data/global.cxx | 2 sc/source/core/data/patattr.cxx | 103 +++++++++++++++++++-------------- sc/source/core/tool/editutil.cxx | 2 sc/source/core/tool/interpr1.cxx | 4 - sc/source/filter/excel/xecontent.cxx | 8 +- sc/source/filter/excel/xehelper.cxx | 23 ++++--- sc/source/filter/excel/xestyle.cxx | 16 ++--- sc/source/filter/excel/xlstyle.cxx | 18 ++--- sc/source/filter/inc/xestyle.hxx | 18 ++--- sc/source/filter/inc/xlstyle.hxx | 8 +- sc/source/ui/cctrl/dpcontrol.cxx | 5 - sc/source/ui/docshell/docsh3.cxx | 4 - sc/source/ui/vba/vbarange.cxx | 4 - sc/source/ui/view/cellsh1.cxx | 8 +- sc/source/ui/view/gridwin4.cxx | 6 - sc/source/ui/view/output2.cxx | 12 +-- sc/source/ui/view/printfun.cxx | 8 +- 23 files changed, 214 insertions(+), 149 deletions(-)
New commits: commit 01938c0447e395f15fb370f6f5b231fee424aa1c Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Tue May 16 22:10:10 2023 +0900 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Fri Aug 11 09:13:48 2023 +0200 sc: factor out color from setting vcl::Font from a ItemSet vcl::Font color parameter is deprecated so we need to handle the color separately from font data. This refactors GetFont into 2 separate functions - fillFontOnly and fillColor, where fillFont now does the same as previously GetFont function did. All GetFont calls have been changed depending on if we need only the font data or also color - where the color is now treated in a different call. There are a couple of calls where fillFont was used, because to change that needs a more complex refactoring. Change-Id: I0a2ce50a0cb28d196fcff87e1e80099a2bb60a9e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151858 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> (cherry picked from commit 3537cef02c25c2c2459d7900eed13eeec533b7ae) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155549 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/sc/inc/patattr.hxx b/sc/inc/patattr.hxx index d78509ca74e3..842a28632ad9 100644 --- a/sc/inc/patattr.hxx +++ b/sc/inc/patattr.hxx @@ -93,23 +93,55 @@ public: SvxCellOrientation GetCellOrientation( const SfxItemSet* pCondSet = nullptr ) const; /** Static helper function to fill a font object from the passed item set. */ - static void GetFont( vcl::Font& rFont, const SfxItemSet& rItemSet, + static void fillFontOnly(vcl::Font& rFont, const SfxItemSet& rItemSet, + const OutputDevice* pOutDev = nullptr, + const Fraction* pScale = nullptr, + const SfxItemSet* pCondSet = nullptr, + SvtScriptType nScript = SvtScriptType::NONE); + + static void fillFont( vcl::Font& rFont, const SfxItemSet& rItemSet, ScAutoFontColorMode eAutoMode, const OutputDevice* pOutDev = nullptr, const Fraction* pScale = nullptr, const SfxItemSet* pCondSet = nullptr, SvtScriptType nScript = SvtScriptType::NONE, const Color* pBackConfigColor = nullptr, - const Color* pTextConfigColor = nullptr ); + const Color* pTextConfigColor = nullptr); + + static void fillColor(Color& rColor, const SfxItemSet& rItemSet, ScAutoFontColorMode eAutoMode, const SfxItemSet* pCondSet = nullptr, + const Color* pBackConfigColor = nullptr, const Color* pTextConfigColor = nullptr); + static ScDxfFont GetDxfFont(const SfxItemSet& rSet, SvtScriptType nScript); + + void fillColor(Color& rColor, + ScAutoFontColorMode eAutoMode, + const SfxItemSet* pCondSet = nullptr, + const Color* pBackConfigColor = nullptr, + const Color* pTextConfigColor = nullptr) const + { + fillColor(rColor, GetItemSet(), eAutoMode, pCondSet, pBackConfigColor, pTextConfigColor); + } + + void fillFontOnly(vcl::Font& rFont, + const OutputDevice* pOutDev = nullptr, + const Fraction* pScale = nullptr, + const SfxItemSet* pCondSet = nullptr, + SvtScriptType nScript = SvtScriptType::NONE) const + { + fillFontOnly(rFont, GetItemSet(), pOutDev, pScale, pCondSet, nScript); + } + /** Fills a font object from the own item set. */ - void GetFont( vcl::Font& rFont, ScAutoFontColorMode eAutoMode, - const OutputDevice* pOutDev = nullptr, - const Fraction* pScale = nullptr, - const SfxItemSet* pCondSet = nullptr, - SvtScriptType nScript = SvtScriptType::NONE, - const Color* pBackConfigColor = nullptr, - const Color* pTextConfigColor = nullptr ) const; + void fillFont(vcl::Font& rFont, ScAutoFontColorMode eAutoMode, + const OutputDevice* pOutDev = nullptr, + const Fraction* pScale = nullptr, + const SfxItemSet* pCondSet = nullptr, + SvtScriptType nScript = SvtScriptType::NONE, + const Color* pBackConfigColor = nullptr, + const Color* pTextConfigColor = nullptr) const + { + fillFont(rFont, GetItemSet(), eAutoMode, pOutDev, pScale, pCondSet, nScript, pBackConfigColor, pTextConfigColor); + } /** Converts all Calc items contained in rSrcSet to edit engine items and puts them into rEditSet. */ static void FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& rSrcSet, const SfxItemSet* pCondSet = nullptr ); diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx index d21571def5a3..3e63cce49abe 100644 --- a/sc/qa/unit/helper/qahelper.cxx +++ b/sc/qa/unit/helper/qahelper.cxx @@ -168,32 +168,36 @@ void ScModelTestBase::testFormats(ScDocument* pDoc,std::u16string_view sFormat) //test Sheet2 const ScPatternAttr* pPattern = pDoc->GetPattern(0, 0, 1); vcl::Font aFont; - pPattern->GetFont(aFont,SC_AUTOCOL_RAW); + Color aColor; + + pPattern->fillFontOnly(aFont); + pPattern->fillColor(aColor, SC_AUTOCOL_RAW); CPPUNIT_ASSERT_EQUAL_MESSAGE("font size should be 10", tools::Long(200), aFont.GetFontSize().getHeight()); - CPPUNIT_ASSERT_EQUAL_MESSAGE("font color should be black", COL_AUTO, aFont.GetColor()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("font color should be black", COL_AUTO, aColor); pPattern = pDoc->GetPattern(0,1,1); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font size should be 12", tools::Long(240), aFont.GetFontSize().getHeight()); pPattern = pDoc->GetPattern(0,2,1); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be italic", ITALIC_NORMAL, aFont.GetItalic()); pPattern = pDoc->GetPattern(0,4,1); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); pPattern = pDoc->GetPattern(1,0,1); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); - CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be blue", COL_BLUE, aFont.GetColor()); + pPattern->fillFontOnly(aFont); + pPattern->fillColor(aColor, SC_AUTOCOL_RAW); + CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be blue", COL_BLUE, aColor); pPattern = pDoc->GetPattern(1,1,1); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be striked out with a single line", STRIKEOUT_SINGLE, aFont.GetStrikeout()); //some tests on sheet2 only for ods if (sFormat == u"calc8") { pPattern = pDoc->GetPattern(1,2,1); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be striked out with a double line", STRIKEOUT_DOUBLE, aFont.GetStrikeout()); pPattern = pDoc->GetPattern(1,3,1); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be underlined with a dotted line", LINESTYLE_DOTTED, aFont.GetUnderline()); //check row height import //disable for now until we figure out cause of win tinderboxes test failures @@ -214,7 +218,7 @@ void ScModelTestBase::testFormats(ScDocument* pDoc,std::u16string_view sFormat) CPPUNIT_ASSERT_EQUAL( aKnownGoodStr, aTestStr ); } pPattern = pDoc->GetPattern(1,4,1); - Color aColor = pPattern->GetItem(ATTR_BACKGROUND).GetColor(); + aColor = pPattern->GetItem(ATTR_BACKGROUND).GetColor(); CPPUNIT_ASSERT_EQUAL_MESSAGE("background color should be green", COL_LIGHTGREEN, aColor); pPattern = pDoc->GetPattern(2,0,1); SvxCellHorJustify eHorJustify = pPattern->GetItem(ATTR_HOR_JUSTIFY).GetValue(); diff --git a/sc/qa/unit/subsequent_export_test2.cxx b/sc/qa/unit/subsequent_export_test2.cxx index d1920de3c3cb..30d32986ca69 100644 --- a/sc/qa/unit/subsequent_export_test2.cxx +++ b/sc/qa/unit/subsequent_export_test2.cxx @@ -2804,13 +2804,13 @@ void ScExportTest2::testWholeRowBold() ScDocument* pDoc = getScDoc(); CPPUNIT_ASSERT_EQUAL(SCCOL(INITIALCOLCOUNT), pDoc->GetAllocatedColumnsCount(0)); vcl::Font aFont; - pDoc->GetPattern(pDoc->MaxCol(), 1, 0)->GetFont(aFont, SC_AUTOCOL_RAW); + pDoc->GetPattern(pDoc->MaxCol(), 1, 0)->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); saveAndReload("Calc Office Open XML"); pDoc = getScDoc(); CPPUNIT_ASSERT_EQUAL(SCCOL(INITIALCOLCOUNT), pDoc->GetAllocatedColumnsCount(0)); - pDoc->GetPattern(pDoc->MaxCol(), 1, 0)->GetFont(aFont, SC_AUTOCOL_RAW); + pDoc->GetPattern(pDoc->MaxCol(), 1, 0)->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); } diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 84ffe142ef81..b6761d3d04bf 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -1485,7 +1485,7 @@ void Test::testIteratorsUnallocatedColumnsAttributes() CPPUNIT_ASSERT_EQUAL(allocatedColsCount, m_pDoc->GetAllocatedColumnsCount(0)); vcl::Font aFont; const ScPatternAttr* pattern = m_pDoc->GetPattern(m_pDoc->MaxCol(), 1, 0); - pattern->GetFont(aFont, SC_AUTOCOL_RAW); + pattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); // Test iterators. diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx index 1b35263bccae..7aa6109fa02d 100644 --- a/sc/qa/unit/uicalc/uicalc.cxx +++ b/sc/qa/unit/uicalc/uicalc.cxx @@ -739,7 +739,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf124820) vcl::Font aFont; const ScPatternAttr* pPattern = pDoc->GetPattern(1, 1, 0); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); // Without the fix in place, this test would have failed here CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be striked out", STRIKEOUT_SINGLE, @@ -1503,7 +1503,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testPasteTransposed) CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", pDoc->HasNote(ScAddress(0, 0, 0))); const ScPatternAttr* pPattern = pDoc->GetPattern(0, 1, 0); vcl::Font aFont; - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); goToCell("A1:A3"); @@ -1529,7 +1529,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testPasteTransposed) CPPUNIT_ASSERT_EQUAL(OUString("Note in A1"), pDoc->GetNote(ScAddress(0, 0, 0))->GetText()); pPattern = pDoc->GetPattern(1, 0, 0); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); } @@ -1558,7 +1558,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testPasteAsLink) CPPUNIT_ASSERT_MESSAGE("There should be a note on A1", pDoc->HasNote(ScAddress(0, 0, 0))); const ScPatternAttr* pPattern = pDoc->GetPattern(0, 1, 0); vcl::Font aFont; - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); goToCell("A1:A3"); @@ -1581,7 +1581,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testPasteAsLink) CPPUNIT_ASSERT_MESSAGE("There should be no note on C1", !pDoc->HasNote(ScAddress(2, 0, 0))); pPattern = pDoc->GetPattern(2, 1, 0); - pPattern->GetFont(aFont, SC_AUTOCOL_RAW); + pPattern->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be normal (cell attributes should not be copied)", WEIGHT_NORMAL, aFont.GetWeight()); } @@ -2990,16 +2990,16 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testUnallocatedColumnsAttributes) // That shouldn't need allocating more columns, just changing the default attribute. CPPUNIT_ASSERT_EQUAL(INITIALCOLCOUNT, pDoc->GetAllocatedColumnsCount(0)); vcl::Font aFont; - pDoc->GetPattern(pDoc->MaxCol(), 0, 0)->GetFont(aFont, SC_AUTOCOL_RAW); + pDoc->GetPattern(pDoc->MaxCol(), 0, 0)->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); goToCell("A2:CV2"); // first 100 cells in row 2 dispatchCommand(mxComponent, ".uno:Bold", {}); // These need to be explicitly allocated. CPPUNIT_ASSERT_EQUAL(SCCOL(100), pDoc->GetAllocatedColumnsCount(0)); - pDoc->GetPattern(99, 1, 0)->GetFont(aFont, SC_AUTOCOL_RAW); + pDoc->GetPattern(99, 1, 0)->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); - pDoc->GetPattern(100, 1, 0)->GetFont(aFont, SC_AUTOCOL_RAW); + pDoc->GetPattern(100, 1, 0)->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should not be bold", WEIGHT_NORMAL, aFont.GetWeight()); goToCell("CW3:" + pDoc->MaxColAsString() + "3"); // All but first 100 cells in row 3. @@ -3007,9 +3007,9 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testUnallocatedColumnsAttributes) // First 100 columns need to be allocated to not be bold, the rest should be handled // by the default attribute. CPPUNIT_ASSERT_EQUAL(SCCOL(100), pDoc->GetAllocatedColumnsCount(0)); - pDoc->GetPattern(99, 2, 0)->GetFont(aFont, SC_AUTOCOL_RAW); + pDoc->GetPattern(99, 2, 0)->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should not be bold", WEIGHT_NORMAL, aFont.GetWeight()); - pDoc->GetPattern(100, 2, 0)->GetFont(aFont, SC_AUTOCOL_RAW); + pDoc->GetPattern(100, 2, 0)->fillFontOnly(aFont); CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight()); } @@ -3123,9 +3123,11 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testMouseMergeRef) Point aA6 = pViewShell->GetViewData().GetPrintTwipsPos(0, 5); Point aA7 = pViewShell->GetViewData().GetPrintTwipsPos(0, 6); - pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN, aA1.X() + 5, aA1.Y() + 5, 1, MOUSE_LEFT, 0); + pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN, aA1.X() + 5, aA1.Y() + 5, 1, + MOUSE_LEFT, 0); pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEMOVE, aA6.X() + 5, aA6.Y() + 5, 1, MOUSE_LEFT, 0); - pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP, aA7.X() + 5, aA7.Y() + 5, 1, MOUSE_LEFT, 0); + pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP, aA7.X() + 5, aA7.Y() + 5, 1, MOUSE_LEFT, + 0); Scheduler::ProcessEventsToIdle(); CPPUNIT_ASSERT(pViewShell->IsRefInputMode()); diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index d20dd4bdb207..e01a3458f6fc 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -284,7 +284,7 @@ tools::Long ScColumn::GetNeededSize( Fraction aFontZoom = ( eOrient == SvxCellOrientation::Standard ) ? rZoomX : rZoomY; vcl::Font aFont; // font color doesn't matter here - pPattern->GetFont( aFont, SC_AUTOCOL_BLACK, pDev, &aFontZoom, pCondSet, nScript ); + pPattern->fillFontOnly(aFont, pDev, &aFontZoom, pCondSet, nScript); pDev->SetFont(aFont); } @@ -755,8 +755,8 @@ sal_uInt16 ScColumn::GetOptimalColWidth( const ScPatternAttr* pPattern = GetPattern( nRow ); vcl::Font aFont; // font color doesn't matter here - pPattern->GetFont( aFont, SC_AUTOCOL_BLACK, pDev, &rZoomX ); - pDev->SetFont( aFont ); + pPattern->fillFontOnly(aFont, pDev, &rZoomX); + pDev->SetFont(aFont); const SvxMarginItem* pMargin = &pPattern->GetItem(ATTR_MARGIN); tools::Long nMargin = static_cast<tools::Long>( pMargin->GetLeftMargin() * nPPTX ) + static_cast<tools::Long>( pMargin->GetRightMargin() * nPPTX ); diff --git a/sc/source/core/data/global.cxx b/sc/source/core/data/global.cxx index b0a91cb397d8..1e8a0cb2158c 100644 --- a/sc/source/core/data/global.cxx +++ b/sc/source/core/data/global.cxx @@ -514,7 +514,7 @@ void ScGlobal::InitTextHeight(const SfxItemPool* pPool) ScopedVclPtrInstance< VirtualDevice > pVirtWindow( *pDefaultDev ); pVirtWindow->SetMapMode(MapMode(MapUnit::MapPixel)); vcl::Font aDefFont; - rPattern.GetFont(aDefFont, SC_AUTOCOL_BLACK, pVirtWindow); // Font color doesn't matter here + rPattern.fillFontOnly(aDefFont, pVirtWindow); // Font color doesn't matter here pVirtWindow->SetFont(aDefFont); sal_uInt16 nTest = static_cast<sal_uInt16>( pVirtWindow->PixelToLogic(Size(0, pVirtWindow->GetTextHeight()), MapMode(MapUnit::MapTwip)).Height()); diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx index 09ea27cb1e3d..3eb8e1178fe2 100644 --- a/sc/source/core/data/patattr.cxx +++ b/sc/source/core/data/patattr.cxx @@ -250,11 +250,26 @@ void getFontIDsByScriptType(SvtScriptType nScript, } -void ScPatternAttr::GetFont( +void ScPatternAttr::fillFont( vcl::Font& rFont, const SfxItemSet& rItemSet, ScAutoFontColorMode eAutoMode, const OutputDevice* pOutDev, const Fraction* pScale, const SfxItemSet* pCondSet, SvtScriptType nScript, - const Color* pBackConfigColor, const Color* pTextConfigColor ) + const Color* pBackConfigColor, const Color* pTextConfigColor) +{ + Color aColor; + + // determine effective font color + ScPatternAttr::fillFontOnly(rFont, rItemSet, pOutDev, pScale, pCondSet, nScript); + ScPatternAttr::fillColor(aColor, rItemSet, eAutoMode, pCondSet, pBackConfigColor, pTextConfigColor); + + // set font effects + rFont.SetColor(aColor); +} + +void ScPatternAttr::fillFontOnly( + vcl::Font& rFont, const SfxItemSet& rItemSet, + const OutputDevice* pOutDev, const Fraction* pScale, + const SfxItemSet* pCondSet, SvtScriptType nScript) { // Read items @@ -270,7 +285,6 @@ void ScPatternAttr::GetFont( bool bShadow; FontEmphasisMark eEmphasis; FontRelief eRelief; - Color aColor; LanguageType eLang; TypedWhichId<SvxFontItem> nFontId(0); @@ -280,7 +294,7 @@ void ScPatternAttr::GetFont( TypedWhichId<SvxLanguageItem> nLangId(0); getFontIDsByScriptType(nScript, nFontId, nHeightId, nWeightId, nPostureId, nLangId); - if ( pCondSet ) + if (pCondSet) { pFontAttr = pCondSet->GetItemIfSet( nFontId ); if ( !pFontAttr ) @@ -341,11 +355,6 @@ void ScPatternAttr::GetFont( pCharReliefItem = &rItemSet.Get( ATTR_FONT_RELIEF ); eRelief = pCharReliefItem->GetValue(); - const SvxColorItem* pColorItem = pCondSet->GetItemIfSet( ATTR_FONT_COLOR ); - if ( !pColorItem ) - pColorItem = &rItemSet.Get( ATTR_FONT_COLOR ); - aColor = pColorItem->GetValue(); - const SvxLanguageItem* pLanguageItem = pCondSet->GetItemIfSet( nLangId ); if ( !pLanguageItem ) pLanguageItem = &rItemSet.Get( nLangId ); @@ -365,7 +374,6 @@ void ScPatternAttr::GetFont( bShadow = rItemSet.Get( ATTR_FONT_SHADOWED ).GetValue(); eEmphasis = rItemSet.Get( ATTR_FONT_EMPHASISMARK ).GetEmphasisMark(); eRelief = rItemSet.Get( ATTR_FONT_RELIEF ).GetValue(); - aColor = rItemSet.Get( ATTR_FONT_COLOR ).GetValue(); // for graphite language features eLang = rItemSet.Get( nLangId ).GetLanguage(); } @@ -413,10 +421,39 @@ void ScPatternAttr::GetFont( rFont.SetFontSize( Size( 0, static_cast<tools::Long>(nFontHeight) ) ); } - // determine effective font color + // set font effects + rFont.SetWeight( eWeight ); + rFont.SetItalic( eItalic ); + rFont.SetUnderline( eUnder ); + rFont.SetOverline( eOver ); + rFont.SetWordLineMode( bWordLine ); + rFont.SetStrikeout( eStrike ); + rFont.SetOutline( bOutline ); + rFont.SetShadow( bShadow ); + rFont.SetEmphasisMark( eEmphasis ); + rFont.SetRelief( eRelief ); + rFont.SetTransparent( true ); +} + +void ScPatternAttr::fillColor(Color& rColor, const SfxItemSet& rItemSet, ScAutoFontColorMode eAutoMode, const SfxItemSet* pCondSet, const Color* pBackConfigColor, const Color* pTextConfigColor) +{ + Color aColor = COL_TRANSPARENT; + + SvxColorItem const* pColorItem = nullptr; + + if (pCondSet) + pColorItem = pCondSet->GetItemIfSet(ATTR_FONT_COLOR); + + if (!pColorItem) + pColorItem = &rItemSet.Get(ATTR_FONT_COLOR); + + if (pColorItem) + aColor = pColorItem->GetValue(); + - if ( ( aColor == COL_AUTO && eAutoMode != SC_AUTOCOL_RAW ) || - eAutoMode == SC_AUTOCOL_IGNOREFONT || eAutoMode == SC_AUTOCOL_IGNOREALL ) + if ((aColor == COL_AUTO && eAutoMode != SC_AUTOCOL_RAW) + || eAutoMode == SC_AUTOCOL_IGNOREFONT + || eAutoMode == SC_AUTOCOL_IGNOREALL) { if ( eAutoMode == SC_AUTOCOL_BLACK ) aColor = COL_BLACK; @@ -426,17 +463,20 @@ void ScPatternAttr::GetFont( Color aBackColor; if ( pCondSet ) { - const SvxBrushItem* pItem = pCondSet->GetItemIfSet( ATTR_BACKGROUND ); - if ( !pItem ) - pItem = &rItemSet.Get( ATTR_BACKGROUND ); + const SvxBrushItem* pItem = pCondSet->GetItemIfSet(ATTR_BACKGROUND); + if (!pItem) + pItem = &rItemSet.Get(ATTR_BACKGROUND); aBackColor = pItem->GetColor(); } else - aBackColor = rItemSet.Get( ATTR_BACKGROUND ).GetColor(); + { + aBackColor = rItemSet.Get(ATTR_BACKGROUND).GetColor(); + } // if background color attribute is transparent, use window color for brightness comparisons - if ( aBackColor == COL_TRANSPARENT || - eAutoMode == SC_AUTOCOL_IGNOREBACK || eAutoMode == SC_AUTOCOL_IGNOREALL ) + if (aBackColor == COL_TRANSPARENT + || eAutoMode == SC_AUTOCOL_IGNOREBACK + || eAutoMode == SC_AUTOCOL_IGNOREALL) { if (!comphelper::LibreOfficeKit::isActive()) { @@ -474,7 +514,9 @@ void ScPatternAttr::GetFont( aSysTextColor = *pTextConfigColor; } else + { aSysTextColor = SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor; + } // select the resulting color if ( aBackColor.IsDark() && aSysTextColor.IsDark() ) @@ -495,28 +537,7 @@ void ScPatternAttr::GetFont( } } - // set font effects - rFont.SetWeight( eWeight ); - rFont.SetItalic( eItalic ); - rFont.SetUnderline( eUnder ); - rFont.SetOverline( eOver ); - rFont.SetWordLineMode( bWordLine ); - rFont.SetStrikeout( eStrike ); - rFont.SetOutline( bOutline ); - rFont.SetShadow( bShadow ); - rFont.SetEmphasisMark( eEmphasis ); - rFont.SetRelief( eRelief ); - rFont.SetColor( aColor ); - rFont.SetTransparent( true ); -} - -void ScPatternAttr::GetFont( - vcl::Font& rFont, ScAutoFontColorMode eAutoMode, - const OutputDevice* pOutDev, const Fraction* pScale, - const SfxItemSet* pCondSet, SvtScriptType nScript, - const Color* pBackConfigColor, const Color* pTextConfigColor ) const -{ - GetFont( rFont, GetItemSet(), eAutoMode, pOutDev, pScale, pCondSet, nScript, pBackConfigColor, pTextConfigColor ); + rColor = aColor; } ScDxfFont ScPatternAttr::GetDxfFont(const SfxItemSet& rItemSet, SvtScriptType nScript) diff --git a/sc/source/core/tool/editutil.cxx b/sc/source/core/tool/editutil.cxx index c7e0c0cb6830..c68b668bf0bc 100644 --- a/sc/source/core/tool/editutil.cxx +++ b/sc/source/core/tool/editutil.cxx @@ -422,7 +422,7 @@ tools::Rectangle ScEditUtil::GetEditArea( const ScPatternAttr* pPattern, bool bF { // empty cell vcl::Font aFont; // font color doesn't matter here - pPattern->GetFont( aFont, SC_AUTOCOL_BLACK, pDev, &aZoomY ); + pPattern->fillFontOnly(aFont, pDev, &aZoomY ); pDev->SetFont(aFont); nTextHeight = pDev->GetTextHeight() + nTopMargin + nBottomMargin; } diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 1fbe376edff1..d2b171dd76bb 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -2397,8 +2397,8 @@ void ScInterpreter::ScCell() pPrinter->SetMapMode(MapMode(MapUnit::MapTwip)); // font color doesn't matter here - mrDoc.GetDefPattern()->GetFont( aDefFont, SC_AUTOCOL_BLACK, pPrinter ); - pPrinter->SetFont( aDefFont ); + mrDoc.GetDefPattern()->fillFontOnly(aDefFont, pPrinter); + pPrinter->SetFont(aDefFont); tools::Long nZeroWidth = pPrinter->GetTextWidth( OUString( '0' ) ); assert(nZeroWidth != 0); pPrinter->SetFont( aOldFont ); diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index 3dc1e3803d4c..5fcbd52e790b 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -668,9 +668,11 @@ XclExpCFImpl::XclExpCFImpl( const XclExpRoot& rRoot, const ScCondFormatEntry& rF if( mbFontUsed ) { vcl::Font aFont; - ScPatternAttr::GetFont( aFont, rItemSet, SC_AUTOCOL_RAW ); - maFontData.FillFromVclFont( aFont ); - mnFontColorId = GetPalette().InsertColor( maFontData.maColor, EXC_COLOR_CELLTEXT ); + ::Color aColor; + ScPatternAttr::fillFontOnly(aFont, rItemSet); + ScPatternAttr::fillColor(aColor, rItemSet, SC_AUTOCOL_RAW); + maFontData.FillFromVclFont(aFont, aColor); + mnFontColorId = GetPalette().InsertColor(maFontData.maColor, EXC_COLOR_CELLTEXT); } // border diff --git a/sc/source/filter/excel/xehelper.cxx b/sc/source/filter/excel/xehelper.cxx index 2025e65a7bd2..defae7114dbd 100644 --- a/sc/source/filter/excel/xehelper.cxx +++ b/sc/source/filter/excel/xehelper.cxx @@ -388,7 +388,9 @@ XclExpStringRef lclCreateFormattedString( nScript = nLastScript; // construct font from current text portion - SvxFont aFont( XclExpFontHelper::GetFontFromItemSet( rRoot, rItemSet, nScript ) ); + SvxFont aFont(XclExpFontHelper::GetFontFromItemSet(rRoot, rItemSet, nScript)); + Color aColor; + ScPatternAttr::fillColor(aColor, rItemSet, SC_AUTOCOL_RAW); // Excel start position of this portion sal_Int32 nXclPortionStart = xString->Len(); @@ -397,7 +399,7 @@ XclExpStringRef lclCreateFormattedString( if( nXclPortionStart < xString->Len() ) { // insert font into buffer - sal_uInt16 nFontIdx = rFontBuffer.Insert( aFont, EXC_COLOR_CELLTEXT ); + sal_uInt16 nFontIdx = rFontBuffer.Insert(aFont, aColor, EXC_COLOR_CELLTEXT); // insert font index into format run vector xString->AppendFormat( nXclPortionStart, nFontIdx ); } @@ -500,17 +502,20 @@ XclExpStringRef lclCreateFormattedString( sal_Int16 nScript = xBreakIt->getScriptType( aXclPortionText, 0 ); if( nScript == ApiScriptType::WEAK ) nScript = nLastScript; - SvxFont aFont( XclExpFontHelper::GetFontFromItemSet( rRoot, aItemSet, nScript ) ); + SvxFont aFont( XclExpFontHelper::GetFontFromItemSet(rRoot, aItemSet, nScript)); + Color aColor; + ScPatternAttr::fillColor(aColor, aItemSet, SC_AUTOCOL_RAW); + nLastScript = nScript; // add escapement aFont.SetEscapement( nEsc ); // modify automatic font color for hyperlinks - if( bIsHyperlink && aItemSet.Get( ATTR_FONT_COLOR ).GetValue() == COL_AUTO) - aFont.SetColor( COL_LIGHTBLUE ); + if (bIsHyperlink && aItemSet.Get(ATTR_FONT_COLOR).GetValue() == COL_AUTO) + aColor = COL_LIGHTBLUE; // insert font into buffer - sal_uInt16 nFontIdx = rFontBuffer.Insert( aFont, EXC_COLOR_CELLTEXT ); + sal_uInt16 nFontIdx = rFontBuffer.Insert(aFont, aColor, EXC_COLOR_CELLTEXT); // insert font index into format run vector xString->AppendFormat( nXclPortionStart, nFontIdx ); } @@ -726,10 +731,12 @@ void XclExpHFConverter::AppendPortion( const EditTextObject* pTextObj, sal_Unico // --- font attributes --- vcl::Font aFont; + Color aColor; aItemSet.ClearItem(); SfxItemSet aEditSet( mrEE.GetAttribs( aSel ) ); ScPatternAttr::GetFromEditItemSet( aItemSet, aEditSet ); - ScPatternAttr::GetFont( aFont, aItemSet, SC_AUTOCOL_RAW ); + ScPatternAttr::fillFontOnly(aFont, aItemSet); + ScPatternAttr::fillColor(aColor, aItemSet, SC_AUTOCOL_RAW); // font name and style aNewData.maName = XclTools::GetXclFontName( aFont.GetFamilyName() ); @@ -782,7 +789,7 @@ void XclExpHFConverter::AppendPortion( const EditTextObject* pTextObj, sal_Unico } // font color - aNewData.maColor = aFont.GetColor(); + aNewData.maColor = aColor; if ( !aFontData.maColor.IsRGBEqual( aNewData.maColor ) ) { aParaText.append("&K" + aNewData.maColor.AsRGBHexString()); diff --git a/sc/source/filter/excel/xestyle.cxx b/sc/source/filter/excel/xestyle.cxx index 3e335a50110c..33c2f2db8987 100644 --- a/sc/source/filter/excel/xestyle.cxx +++ b/sc/source/filter/excel/xestyle.cxx @@ -892,7 +892,7 @@ vcl::Font XclExpFontHelper::GetFontFromItemSet( const XclExpRoot& rRoot, const S // fill the font object vcl::Font aFont; - ScPatternAttr::GetFont( aFont, rItemSet, SC_AUTOCOL_RAW, nullptr, nullptr, nullptr, nScScript ); + ScPatternAttr::fillFontOnly(aFont, rItemSet, nullptr, nullptr, nullptr, nScScript); return aFont; } @@ -1222,18 +1222,18 @@ sal_uInt16 XclExpFontBuffer::Insert( return static_cast< sal_uInt16 >( nPos ); } -sal_uInt16 XclExpFontBuffer::Insert( - const SvxFont& rFont, XclExpColorType eColorType ) +sal_uInt16 XclExpFontBuffer::Insert(const SvxFont& rFont, Color const& rColor, XclExpColorType eColorType ) { - return Insert( XclFontData( rFont ), eColorType ); + return Insert(XclFontData(rFont, rColor), eColorType); } -sal_uInt16 XclExpFontBuffer::Insert( const SfxItemSet& rItemSet, - sal_Int16 nScript, XclExpColorType eColorType, bool bAppFont ) +sal_uInt16 XclExpFontBuffer::Insert(const SfxItemSet& rItemSet, sal_Int16 nScript, XclExpColorType eColorType, bool bAppFont ) { // #i17050# script type now provided by caller - vcl::Font aFont = XclExpFontHelper::GetFontFromItemSet( GetRoot(), rItemSet, nScript ); - return Insert( XclFontData( aFont ), eColorType, bAppFont ); + vcl::Font aFont = XclExpFontHelper::GetFontFromItemSet(GetRoot(), rItemSet, nScript); + Color aColor; + ScPatternAttr::fillColor(aColor, rItemSet, SC_AUTOCOL_RAW); + return Insert(XclFontData(aFont, aColor), eColorType, bAppFont ); } void XclExpFontBuffer::Save( XclExpStream& rStrm ) diff --git a/sc/source/filter/excel/xlstyle.cxx b/sc/source/filter/excel/xlstyle.cxx index ae4a6f1f6f37..f42d30edc574 100644 --- a/sc/source/filter/excel/xlstyle.cxx +++ b/sc/source/filter/excel/xlstyle.cxx @@ -174,15 +174,15 @@ XclFontData::XclFontData() Clear(); } -XclFontData::XclFontData( const vcl::Font& rFont ) +XclFontData::XclFontData(const vcl::Font& rFont, Color const& rColor) { Clear(); - FillFromVclFont( rFont ); + FillFromVclFont(rFont, rColor); } -XclFontData::XclFontData( const SvxFont& rFont ) +XclFontData::XclFontData(const SvxFont& rFont, Color const& rColor) { - FillFromSvxFont( rFont ); + FillFromSvxFont(rFont, rColor); } void XclFontData::Clear() @@ -199,11 +199,11 @@ void XclFontData::Clear() mbItalic = mbStrikeout = mbOutline = mbShadow = false; } -void XclFontData::FillFromVclFont( const vcl::Font& rFont ) +void XclFontData::FillFromVclFont(const vcl::Font& rFont, Color const& rColor) { maName = XclTools::GetXclFontName( rFont.GetFamilyName() ); // substitute with MS fonts maStyle.clear(); - maColor = rFont.GetColor(); + maColor = rColor; SetScUnderline( rFont.GetUnderline() ); mnEscapem = EXC_FONTESC_NONE; SetScHeight( rFont.GetFontSize().Height() ); @@ -216,10 +216,10 @@ void XclFontData::FillFromVclFont( const vcl::Font& rFont ) mbShadow = rFont.IsShadow(); } -void XclFontData::FillFromSvxFont( const SvxFont& rFont ) +void XclFontData::FillFromSvxFont(const SvxFont& rFont, Color const& rColor) { - FillFromVclFont( rFont ); - SetScEscapement( rFont.GetEscapement() ); + FillFromVclFont(rFont, rColor); + SetScEscapement(rFont.GetEscapement()); } // *** conversion of VCL/SVX constants *** ------------------------------------ diff --git a/sc/source/filter/inc/xestyle.hxx b/sc/source/filter/inc/xestyle.hxx index 8c3493d352f3..bd72f8aa5552 100644 --- a/sc/source/filter/inc/xestyle.hxx +++ b/sc/source/filter/inc/xestyle.hxx @@ -217,18 +217,15 @@ public: /** Inserts a new font with the passed font data into the buffer if not present. @param bAppFont true = Sets the application font; false = Inserts a new font. @return The resulting Excel font index. */ - sal_uInt16 Insert( const XclFontData& rFontData, - XclExpColorType eColorType, bool bAppFont = false ); + sal_uInt16 Insert(const XclFontData& rFontData, XclExpColorType eColorType, bool bAppFont = false ); /** Inserts the SvxFont into the buffer if not present, e.g. where escapements are used. @return The resulting Excel font index. */ - sal_uInt16 Insert( const SvxFont& rFont, - XclExpColorType eColorType ); + sal_uInt16 Insert(const SvxFont& rFont, Color const& rColor, XclExpColorType eColorType); /** Inserts the font contained in the passed item set into the buffer, if not present. @param nScript The script type of the font properties to be used. @param bAppFont true = Sets the application font; false = Inserts a new font. @return The resulting Excel font index. */ - sal_uInt16 Insert( const SfxItemSet& rItemSet, sal_Int16 nScript, - XclExpColorType eColorType, bool bAppFont ); + sal_uInt16 Insert(const SfxItemSet& rItemSet, sal_Int16 nScript, XclExpColorType eColorType, bool bAppFont); /** Writes all FONT records contained in this buffer. */ virtual void Save( XclExpStream& rStrm ) override; @@ -372,13 +369,14 @@ struct XclExpCellBorder : public XclCellBorder @descr Provides functions to fill from item sets and to fill to Excel record data. */ struct XclExpCellArea : public XclCellArea { - sal_uInt32 mnForeColorId; /// Foreground color ID. - sal_uInt32 mnBackColorId; /// Background color ID. + sal_uInt32 mnForeColorId; /// Foreground color ID. + sal_uInt32 mnBackColorId; /// Background color ID. + Color maForeColor; // Actual foreground color Color maBackColor; // Actual background color - explicit XclExpCellArea(); - explicit XclExpCellArea(Color aForeColor, Color aBackColor); + explicit XclExpCellArea(); + explicit XclExpCellArea(Color aForeColor, Color aBackColor); /** Fills the area attributes from the passed item set. @return true = At least one area item is set. */ diff --git a/sc/source/filter/inc/xlstyle.hxx b/sc/source/filter/inc/xlstyle.hxx index 098d2d3346b8..d1faabc51ae6 100644 --- a/sc/source/filter/inc/xlstyle.hxx +++ b/sc/source/filter/inc/xlstyle.hxx @@ -299,16 +299,16 @@ struct XclFontData /** Constructs an empty font data structure. */ explicit XclFontData(); /** Constructs a font data structure and fills it with the passed font attributes (except color). */ - explicit XclFontData( const vcl::Font& rFont ); + explicit XclFontData(const vcl::Font& rFont, Color const& aColor); /** As directly above but also fills in the escapement member. */ - explicit XclFontData( const SvxFont& rFont ); + explicit XclFontData(const SvxFont& rFont, Color const& aColor); /** Resets all members to default (empty) values. */ void Clear(); /** Fills all members (except color and escapement) from the passed font. */ - void FillFromVclFont( const vcl::Font& rFont ); + void FillFromVclFont(const vcl::Font& rFont, Color const& rColor); /** Fills all members (except color) from the passed SVX font. */ - void FillFromSvxFont( const SvxFont& rFont ); + void FillFromSvxFont(const SvxFont& rFont, Color const& rColor); // *** conversion of VCL/SVX constants *** ------------------------------------ diff --git a/sc/source/ui/cctrl/dpcontrol.cxx b/sc/source/ui/cctrl/dpcontrol.cxx index 34eea011ee05..cbb1aaa456c8 100644 --- a/sc/source/ui/cctrl/dpcontrol.cxx +++ b/sc/source/ui/cctrl/dpcontrol.cxx @@ -138,9 +138,8 @@ void ScDPFieldButton::draw() { // use ScPatternAttr::GetFont only for font size vcl::Font aAttrFont; - mpDoc->GetPool()->GetDefaultItem(ATTR_PATTERN). - GetFont( aAttrFont, SC_AUTOCOL_BLACK, mpOutDev, &maZoomY ); - aTextFont.SetFontSize( aAttrFont.GetFontSize() ); + mpDoc->GetPool()->GetDefaultItem(ATTR_PATTERN).fillFontOnly(aAttrFont, mpOutDev, &maZoomY); + aTextFont.SetFontSize(aAttrFont.GetFontSize()); } mpOutDev->SetFont(aTextFont); mpOutDev->SetTextColor(mpStyle->GetButtonTextColor()); diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx index 1cec4abeb3fd..8b24cf81d727 100644 --- a/sc/source/ui/docshell/docsh3.cxx +++ b/sc/source/ui/docshell/docsh3.cxx @@ -381,7 +381,7 @@ void ScDocShell::CalcOutputFactor() vcl::Font aOldFont = pRefDev->GetFont(); pRefDev->SetMapMode(MapMode(MapUnit::MapPixel)); - pPattern->GetFont(aDefFont, SC_AUTOCOL_BLACK, pRefDev); // font color doesn't matter here + pPattern->fillFontOnly(aDefFont, pRefDev); // font color doesn't matter here pRefDev->SetFont(aDefFont); nPrinterWidth = pRefDev->PixelToLogic(Size(pRefDev->GetTextWidth(aTestString), 0), MapMode(MapUnit::Map100thMM)).Width(); pRefDev->SetFont(aOldFont); @@ -389,7 +389,7 @@ void ScDocShell::CalcOutputFactor() ScopedVclPtrInstance< VirtualDevice > pVirtWindow( *Application::GetDefaultDevice() ); pVirtWindow->SetMapMode(MapMode(MapUnit::MapPixel)); - pPattern->GetFont(aDefFont, SC_AUTOCOL_BLACK, pVirtWindow); // font color doesn't matter here + pPattern->fillFontOnly(aDefFont, pVirtWindow); // font color doesn't matter here pVirtWindow->SetFont(aDefFont); double nWindowWidth = pVirtWindow->GetTextWidth(aTestString) / ScGlobal::nScreenPPTX; nWindowWidth = o3tl::convert(nWindowWidth, o3tl::Length::twip, o3tl::Length::mm100); diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx index d2bd37db518d..0ee8c73b38f1 100644 --- a/sc/source/ui/vba/vbarange.cxx +++ b/sc/source/ui/vba/vbarange.cxx @@ -3831,8 +3831,8 @@ static double getDefaultCharWidth( ScDocShell* pDocShell ) OutputDevice* pRefDevice = rDoc.GetRefDevice(); ScPatternAttr* pAttr = rDoc.GetDefPattern(); vcl::Font aDefFont; - pAttr->GetFont( aDefFont, SC_AUTOCOL_BLACK, pRefDevice ); - pRefDevice->SetFont( aDefFont ); + pAttr->fillFontOnly(aDefFont, pRefDevice); + pRefDevice->SetFont(aDefFont); tools::Long nCharWidth = pRefDevice->GetTextWidth( OUString( '0' ) ); // 1/100th mm return o3tl::convert<double>(nCharWidth, o3tl::Length::mm100, o3tl::Length::pt); } diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index 88c1470bc8db..d1ec4f50f04a 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -2643,7 +2643,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) if ( !aChars.isEmpty() ) { vcl::Font aFont; - pTabViewShell->GetSelectionPattern()->GetFont( aFont, SC_AUTOCOL_BLACK, nullptr, nullptr, nullptr, + pTabViewShell->GetSelectionPattern()->fillFontOnly(aFont, nullptr, nullptr, nullptr, pTabViewShell->GetSelectionScriptType() ); if ( !aFontName.isEmpty() ) aFont = vcl::Font( aFontName, Size(1,1) ); @@ -2657,9 +2657,9 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); // font color doesn't matter here - vcl::Font aCurFont; - pTabViewShell->GetSelectionPattern()->GetFont( aCurFont, SC_AUTOCOL_BLACK, nullptr, nullptr, nullptr, - pTabViewShell->GetSelectionScriptType() ); + vcl::Font aCurFont; + pTabViewShell->GetSelectionPattern()->fillFontOnly(aCurFont, nullptr, nullptr, nullptr, + pTabViewShell->GetSelectionScriptType()); SfxAllItemSet aSet( GetPool() ); aSet.Put( SfxBoolItem( FN_PARAM_1, false ) ); diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index 426238e75fb5..235fb8d3a38b 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -120,7 +120,7 @@ static void lcl_DrawOneFrame( vcl::RenderContext* pDev, const tools::Rectangle& // use ScPatternAttr::GetFont only for font size vcl::Font aAttrFont; rDoc.GetPool()->GetDefaultItem(ATTR_PATTERN). - GetFont(aAttrFont,SC_AUTOCOL_BLACK,pDev,&rZoomY); + fillFontOnly(aAttrFont, pDev, &rZoomY); // everything else from application font vcl::Font aAppFont = pDev->GetSettings().GetStyleSettings().GetAppFont(); @@ -1911,8 +1911,8 @@ void ScGridWindow::DrawPagePreview( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, if ( nPageScript == SvtScriptType::LATIN ) { // use single font and call DrawText directly - rDefPattern.GetFont( aFont, SC_AUTOCOL_BLACK ); - aFont.SetColor( COL_LIGHTGRAY ); + rDefPattern.fillFontOnly(aFont); + aFont.SetColor(COL_LIGHTGRAY); // font size is set as needed } else diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx index fe8d06684517..d8dfb064e605 100644 --- a/sc/source/ui/view/output2.cxx +++ b/sc/source/ui/view/output2.cxx @@ -249,7 +249,8 @@ void ScDrawStringsVars::SetShrinkScale( tools::Long nScale, SvtScriptType nScrip if ( !bPixelToLogic ) aFraction *= pOutput->aZoomY; vcl::Font aTmpFont; - pPattern->GetFont( aTmpFont, SC_AUTOCOL_RAW, pFmtDevice, &aFraction, pCondSet, nScript ); + pPattern->fillFontOnly(aTmpFont, pFmtDevice, &aFraction, pCondSet, nScript); + // only need font height tools::Long nNewHeight = aTmpFont.GetFontHeight(); if ( nNewHeight > 0 ) aFont.SetFontHeight( nNewHeight ); @@ -331,12 +332,11 @@ void ScDrawStringsVars::SetPattern( else eColorMode = SC_AUTOCOL_PRINT; - if ( bPixelToLogic ) - pPattern->GetFont( aFont, eColorMode, pFmtDevice, nullptr, pCondSet, nScript, - &aBackConfigColor, &aTextConfigColor ); + if (bPixelToLogic) + pPattern->fillFont(aFont, eColorMode, pFmtDevice, nullptr, pCondSet, nScript, &aBackConfigColor, &aTextConfigColor); else - pPattern->GetFont( aFont, eColorMode, pFmtDevice, &pOutput->aZoomY, pCondSet, nScript, - &aBackConfigColor, &aTextConfigColor ); + pPattern->fillFont(aFont, eColorMode, pFmtDevice, &pOutput->aZoomY, pCondSet, nScript, &aBackConfigColor, &aTextConfigColor ); + aFont.SetAlignment(ALIGN_BASELINE); // orientation diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx index c07abc7100ac..7b42e184334c 100644 --- a/sc/source/ui/view/printfun.cxx +++ b/sc/source/ui/view/printfun.cxx @@ -1908,8 +1908,8 @@ tools::Long ScPrintFunc::DoNotes( tools::Long nNoteStart, bool bDoPrint, ScPrevi vcl::Font aMarkFont; ScAutoFontColorMode eColorMode = bUseStyleColor ? SC_AUTOCOL_DISPLAY : SC_AUTOCOL_PRINT; - rDoc.GetPool()->GetDefaultItem(ATTR_PATTERN).GetFont( aMarkFont, eColorMode ); - pDev->SetFont( aMarkFont ); + rDoc.GetPool()->GetDefaultItem(ATTR_PATTERN).fillFont(aMarkFont, eColorMode); + pDev->SetFont(aMarkFont); tools::Long nMarkLen = pDev->GetTextWidth("GW99999:"); // without Space-Char, because it rarely arrives there @@ -2323,8 +2323,8 @@ void ScPrintFunc::PrintPage( tools::Long nPageNo, SCCOL nX1, SCROW nY1, SCCOL nX ScPatternAttr aPattern( rDoc.GetPool() ); vcl::Font aFont; ScAutoFontColorMode eColorMode = bUseStyleColor ? SC_AUTOCOL_DISPLAY : SC_AUTOCOL_PRINT; - aPattern.GetFont( aFont, eColorMode, pDev ); - pDev->SetFont( aFont ); + aPattern.fillFont(aFont, eColorMode, pDev); + pDev->SetFont(aFont); if (bDoRepCol) {