summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/inc/patattr.hxx50
-rw-r--r--sc/qa/unit/helper/qahelper.cxx26
-rw-r--r--sc/qa/unit/subsequent_export_test4.cxx4
-rw-r--r--sc/qa/unit/ucalc.cxx2
-rw-r--r--sc/qa/unit/uicalc/uicalc.cxx10
-rw-r--r--sc/qa/unit/uicalc/uicalc2.cxx10
-rw-r--r--sc/source/core/data/column2.cxx6
-rw-r--r--sc/source/core/data/global.cxx2
-rw-r--r--sc/source/core/data/patattr.cxx103
-rw-r--r--sc/source/core/tool/editutil.cxx2
-rw-r--r--sc/source/core/tool/interpr1.cxx4
-rw-r--r--sc/source/filter/excel/xecontent.cxx8
-rw-r--r--sc/source/filter/excel/xehelper.cxx23
-rw-r--r--sc/source/filter/excel/xestyle.cxx16
-rw-r--r--sc/source/filter/excel/xlstyle.cxx18
-rw-r--r--sc/source/filter/inc/xestyle.hxx18
-rw-r--r--sc/source/filter/inc/xlstyle.hxx8
-rw-r--r--sc/source/ui/cctrl/dpcontrol.cxx5
-rw-r--r--sc/source/ui/docshell/docsh3.cxx4
-rw-r--r--sc/source/ui/vba/vbarange.cxx4
-rw-r--r--sc/source/ui/view/cellsh1.cxx8
-rw-r--r--sc/source/ui/view/gridwin4.cxx6
-rw-r--r--sc/source/ui/view/output2.cxx12
-rw-r--r--sc/source/ui/view/printfun.cxx8
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)
{