diff options
24 files changed, 210 insertions, 147 deletions
diff --git a/sc/inc/patattr.hxx b/sc/inc/patattr.hxx index 49cae62994b4..ba15cfb1dd27 100644 --- a/sc/inc/patattr.hxx +++ b/sc/inc/patattr.hxx @@ -92,23 +92,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 b5236da1f89e..efb2e68c4fbc 100644 --- a/sc/qa/unit/helper/qahelper.cxx +++ b/sc/qa/unit/helper/qahelper.cxx @@ -176,32 +176,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 @@ -222,7 +226,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_test4.cxx b/sc/qa/unit/subsequent_export_test4.cxx index b34a8fcdadf6..096b1d5603c7 100644 --- a/sc/qa/unit/subsequent_export_test4.cxx +++ b/sc/qa/unit/subsequent_export_test4.cxx @@ -1393,13 +1393,13 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, 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 f966fdecea18..5642654a0d2e 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -1244,7 +1244,7 @@ CPPUNIT_TEST_FIXTURE(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 89bdeeb1fa6d..d96b78b87136 100644 --- a/sc/qa/unit/uicalc/uicalc.cxx +++ b/sc/qa/unit/uicalc/uicalc.cxx @@ -708,7 +708,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, @@ -1674,7 +1674,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"); @@ -1700,7 +1700,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()); } @@ -1729,7 +1729,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"); @@ -1752,7 +1752,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()); } diff --git a/sc/qa/unit/uicalc/uicalc2.cxx b/sc/qa/unit/uicalc/uicalc2.cxx index 69db567f305c..3be123de219d 100644 --- a/sc/qa/unit/uicalc/uicalc2.cxx +++ b/sc/qa/unit/uicalc/uicalc2.cxx @@ -1218,16 +1218,16 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, 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. @@ -1235,9 +1235,9 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, 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()); } diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index 5a4ca1bb2340..38cfe9d9ee41 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 02167599e926..459798d1f26f 100644 --- a/sc/source/core/data/global.cxx +++ b/sc/source/core/data/global.cxx @@ -516,7 +516,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 96abc6676cba..25900b7ac099 100644 --- a/sc/source/core/data/patattr.cxx +++ b/sc/source/core/data/patattr.cxx @@ -246,11 +246,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 @@ -266,7 +281,6 @@ void ScPatternAttr::GetFont( bool bShadow; FontEmphasisMark eEmphasis; FontRelief eRelief; - Color aColor; LanguageType eLang; TypedWhichId<SvxFontItem> nFontId(0); @@ -276,7 +290,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 ) @@ -337,11 +351,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 ); @@ -361,7 +370,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(); } @@ -409,10 +417,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; @@ -422,17 +459,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()) { @@ -470,7 +510,9 @@ void ScPatternAttr::GetFont( aSysTextColor = *pTextConfigColor; } else + { aSysTextColor = SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor; + } // select the resulting color if ( aBackColor.IsDark() && aSysTextColor.IsDark() ) @@ -491,28 +533,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 43d903f60529..ce703b0f6a84 100644 --- a/sc/source/core/tool/editutil.cxx +++ b/sc/source/core/tool/editutil.cxx @@ -425,7 +425,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 fc7fe021702c..fa0c56d5257f 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -2415,8 +2415,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 25a9afffdfd1..15141c161628 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 997c1b2c507d..14fafd8a42ba 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 5d3cd076f623..789737e5f824 100644 --- a/sc/source/ui/docshell/docsh3.cxx +++ b/sc/source/ui/docshell/docsh3.cxx @@ -378,7 +378,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); @@ -386,7 +386,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 089e92f8c948..913b05ceffc9 100644 --- a/sc/source/ui/vba/vbarange.cxx +++ b/sc/source/ui/vba/vbarange.cxx @@ -3834,8 +3834,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 c44cb95e77c9..b35796ff0c2e 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 83cffbd44b2f..bc2521531a37 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(); @@ -1914,8 +1914,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 73eb7430ba71..9eb44e02c70b 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) { |