sc: use ComplexColor for font color (+others) in OOXML export
Change-Id: I2544c7ece152323d84faafe1a544e4f89ca466d5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152014 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
This commit is contained in:
parent
ba29922dcc
commit
7501f89282
19 changed files with 180 additions and 132 deletions
|
@ -133,13 +133,19 @@ public:
|
|||
meType = ColorType::CRGB;
|
||||
}
|
||||
|
||||
void setColor(Color const& rColor)
|
||||
{
|
||||
mnComponent1 = rColor.GetRed();
|
||||
mnComponent2 = rColor.GetGreen();
|
||||
mnComponent3 = rColor.GetBlue();
|
||||
maFinalColor = rColor;
|
||||
meType = ColorType::RGB;
|
||||
}
|
||||
|
||||
void setRGB(sal_Int32 nRGB)
|
||||
{
|
||||
::Color aColor(ColorTransparency, nRGB);
|
||||
mnComponent1 = aColor.GetRed();
|
||||
mnComponent2 = aColor.GetGreen();
|
||||
mnComponent3 = aColor.GetBlue();
|
||||
meType = ColorType::RGB;
|
||||
setColor(aColor);
|
||||
}
|
||||
|
||||
void setHSL(sal_Int32 nH, sal_Int32 nS, sal_Int32 nL)
|
||||
|
|
|
@ -45,6 +45,7 @@ $(eval $(call gb_Library_use_libraries,scqahelper,\
|
|||
comphelper \
|
||||
cppu \
|
||||
cppuhelper \
|
||||
docmodel \
|
||||
editeng \
|
||||
for \
|
||||
sal \
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "fonthelper.hxx"
|
||||
|
||||
namespace vcl { class Font; }
|
||||
namespace model { class ComplexColor; }
|
||||
class OutputDevice;
|
||||
class Fraction;
|
||||
class ScStyleSheet;
|
||||
|
@ -107,19 +108,23 @@ public:
|
|||
SvtScriptType nScript = SvtScriptType::NONE, const Color* pBackConfigColor = 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 void fillColor(model::ComplexColor& rComplexColor,
|
||||
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,
|
||||
void fillColor(model::ComplexColor& rComplexColor,
|
||||
ScAutoFontColorMode eAutoMode,
|
||||
const SfxItemSet* pCondSet = nullptr,
|
||||
const Color* pBackConfigColor = nullptr,
|
||||
const Color* pTextConfigColor = nullptr) const
|
||||
{
|
||||
fillColor(rColor, GetItemSet(), eAutoMode, pCondSet, pBackConfigColor, pTextConfigColor);
|
||||
fillColor(rComplexColor, GetItemSet(), eAutoMode, pCondSet, pBackConfigColor, pTextConfigColor);
|
||||
}
|
||||
|
||||
void fillFontOnly(vcl::Font& rFont,
|
||||
|
|
|
@ -177,12 +177,12 @@ void ScModelTestBase::testFormats(ScDocument* pDoc,std::u16string_view sFormat)
|
|||
//test Sheet2
|
||||
const ScPatternAttr* pPattern = pDoc->GetPattern(0, 0, 1);
|
||||
vcl::Font aFont;
|
||||
Color aColor;
|
||||
model::ComplexColor aComplexColor;
|
||||
|
||||
pPattern->fillFontOnly(aFont);
|
||||
pPattern->fillColor(aColor, ScAutoFontColorMode::Raw);
|
||||
pPattern->fillColor(aComplexColor, ScAutoFontColorMode::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, aColor);
|
||||
CPPUNIT_ASSERT_EQUAL_MESSAGE("font color should be black", COL_AUTO, aComplexColor.getFinalColor());
|
||||
pPattern = pDoc->GetPattern(0,1,1);
|
||||
pPattern->fillFontOnly(aFont);
|
||||
CPPUNIT_ASSERT_EQUAL_MESSAGE("font size should be 12", tools::Long(240), aFont.GetFontSize().getHeight());
|
||||
|
@ -194,8 +194,8 @@ void ScModelTestBase::testFormats(ScDocument* pDoc,std::u16string_view sFormat)
|
|||
CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be bold", WEIGHT_BOLD, aFont.GetWeight());
|
||||
pPattern = pDoc->GetPattern(1,0,1);
|
||||
pPattern->fillFontOnly(aFont);
|
||||
pPattern->fillColor(aColor, ScAutoFontColorMode::Raw);
|
||||
CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be blue", COL_BLUE, aColor);
|
||||
pPattern->fillColor(aComplexColor, ScAutoFontColorMode::Raw);
|
||||
CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be blue", COL_BLUE, aComplexColor.getFinalColor());
|
||||
pPattern = pDoc->GetPattern(1,1,1);
|
||||
pPattern->fillFontOnly(aFont);
|
||||
CPPUNIT_ASSERT_EQUAL_MESSAGE("font should be striked out with a single line", STRIKEOUT_SINGLE, aFont.GetStrikeout());
|
||||
|
@ -227,7 +227,7 @@ void ScModelTestBase::testFormats(ScDocument* pDoc,std::u16string_view sFormat)
|
|||
CPPUNIT_ASSERT_EQUAL( aKnownGoodStr, aTestStr );
|
||||
}
|
||||
pPattern = pDoc->GetPattern(1,4,1);
|
||||
aColor = pPattern->GetItem(ATTR_BACKGROUND).GetColor();
|
||||
Color 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();
|
||||
|
|
|
@ -253,14 +253,14 @@ void ScPatternAttr::fillFont(
|
|||
const SfxItemSet* pCondSet, SvtScriptType nScript,
|
||||
const Color* pBackConfigColor, const Color* pTextConfigColor)
|
||||
{
|
||||
Color aColor;
|
||||
model::ComplexColor aComplexColor;
|
||||
|
||||
// determine effective font color
|
||||
ScPatternAttr::fillFontOnly(rFont, rItemSet, pOutDev, pScale, pCondSet, nScript);
|
||||
ScPatternAttr::fillColor(aColor, rItemSet, eAutoMode, pCondSet, pBackConfigColor, pTextConfigColor);
|
||||
ScPatternAttr::fillColor(aComplexColor, rItemSet, eAutoMode, pCondSet, pBackConfigColor, pTextConfigColor);
|
||||
|
||||
// set font effects
|
||||
rFont.SetColor(aColor);
|
||||
rFont.SetColor(aComplexColor.getFinalColor());
|
||||
}
|
||||
|
||||
void ScPatternAttr::fillFontOnly(
|
||||
|
@ -432,9 +432,11 @@ void ScPatternAttr::fillFontOnly(
|
|||
rFont.SetTransparent( true );
|
||||
}
|
||||
|
||||
void ScPatternAttr::fillColor(Color& rColor, const SfxItemSet& rItemSet, ScAutoFontColorMode eAutoMode, const SfxItemSet* pCondSet, const Color* pBackConfigColor, const Color* pTextConfigColor)
|
||||
void ScPatternAttr::fillColor(model::ComplexColor& rComplexColor, const SfxItemSet& rItemSet, ScAutoFontColorMode eAutoMode, const SfxItemSet* pCondSet, const Color* pBackConfigColor, const Color* pTextConfigColor)
|
||||
{
|
||||
Color aColor = COL_TRANSPARENT;
|
||||
model::ComplexColor aComplexColor;
|
||||
|
||||
Color aColor;
|
||||
|
||||
SvxColorItem const* pColorItem = nullptr;
|
||||
|
||||
|
@ -445,15 +447,24 @@ void ScPatternAttr::fillColor(Color& rColor, const SfxItemSet& rItemSet, ScAutoF
|
|||
pColorItem = &rItemSet.Get(ATTR_FONT_COLOR);
|
||||
|
||||
if (pColorItem)
|
||||
{
|
||||
aComplexColor = pColorItem->getComplexColor();
|
||||
aColor = pColorItem->GetValue();
|
||||
}
|
||||
|
||||
if (aComplexColor.getType() == model::ColorType::Unused)
|
||||
{
|
||||
aComplexColor.setColor(aColor);
|
||||
}
|
||||
|
||||
if ((aColor == COL_AUTO && eAutoMode != ScAutoFontColorMode::Raw)
|
||||
|| eAutoMode == ScAutoFontColorMode::IgnoreFont
|
||||
|| eAutoMode == ScAutoFontColorMode::IgnoreAll)
|
||||
{
|
||||
if ( eAutoMode == ScAutoFontColorMode::Black )
|
||||
if (eAutoMode == ScAutoFontColorMode::Black)
|
||||
{
|
||||
aColor = COL_BLACK;
|
||||
}
|
||||
else
|
||||
{
|
||||
// get background color from conditional or own set
|
||||
|
@ -503,9 +514,11 @@ void ScPatternAttr::fillColor(Color& rColor, const SfxItemSet& rItemSet, ScAutoF
|
|||
|
||||
// get system text color for comparison
|
||||
Color aSysTextColor;
|
||||
if ( eAutoMode == ScAutoFontColorMode::Print )
|
||||
if (eAutoMode == ScAutoFontColorMode::Print)
|
||||
{
|
||||
aSysTextColor = COL_BLACK;
|
||||
else if ( pTextConfigColor )
|
||||
}
|
||||
else if (pTextConfigColor)
|
||||
{
|
||||
// pTextConfigColor can be used to avoid repeated lookup of the configured color
|
||||
aSysTextColor = *pTextConfigColor;
|
||||
|
@ -533,8 +546,8 @@ void ScPatternAttr::fillColor(Color& rColor, const SfxItemSet& rItemSet, ScAutoF
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
rColor = aColor;
|
||||
aComplexColor.setFinalColor(aColor);
|
||||
rComplexColor = aComplexColor;
|
||||
}
|
||||
|
||||
ScDxfFont ScPatternAttr::GetDxfFont(const SfxItemSet& rItemSet, SvtScriptType nScript)
|
||||
|
|
|
@ -801,7 +801,7 @@ void XclExpAutofilter::AddColorEntry(const ScQueryEntry& rEntry)
|
|||
// Ensure that selected color(s) will be added to dxf: selection can be not in list
|
||||
// of already added to dfx colors taken from filter range
|
||||
if (GetDxfs().GetDxfByColor(rItem.maColor) == -1)
|
||||
GetDxfs().AddColor(rItem.maColor);
|
||||
GetDxfs().addColor(rItem.maColor);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1130,8 +1130,8 @@ void XclExpChFontBase::ConvertFontBase( const XclExpChRoot& rRoot, sal_uInt16 nF
|
|||
{
|
||||
if( const XclExpFont* pFont = rRoot.GetFontBuffer().GetFont( nFontIdx ) )
|
||||
{
|
||||
XclExpChFontRef xFont = new XclExpChFont( nFontIdx );
|
||||
SetFont( xFont, pFont->GetFontData().maColor, pFont->GetFontColorId() );
|
||||
XclExpChFontRef xFont = new XclExpChFont(nFontIdx);
|
||||
SetFont(xFont, pFont->GetFontData().maComplexColor, pFont->GetFontColorId());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1152,11 +1152,11 @@ XclExpChText::XclExpChText( const XclExpChRoot& rRoot ) :
|
|||
{
|
||||
}
|
||||
|
||||
void XclExpChText::SetFont( XclExpChFontRef xFont, const Color& rColor, sal_uInt32 nColorId )
|
||||
void XclExpChText::SetFont( XclExpChFontRef xFont, model::ComplexColor const& rComplexColor, sal_uInt32 nColorId )
|
||||
{
|
||||
mxFont = xFont;
|
||||
maData.maTextColor = rColor;
|
||||
::set_flag( maData.mnFlags, EXC_CHTEXT_AUTOCOLOR, rColor == COL_AUTO );
|
||||
maData.maTextComplexColor = rComplexColor;
|
||||
::set_flag(maData.mnFlags, EXC_CHTEXT_AUTOCOLOR, rComplexColor.getFinalColor() == COL_AUTO);
|
||||
mnTextColorId = nColorId;
|
||||
}
|
||||
|
||||
|
@ -1386,7 +1386,7 @@ void XclExpChText::WriteBody( XclExpStream& rStrm )
|
|||
rStrm << maData.mnHAlign
|
||||
<< maData.mnVAlign
|
||||
<< maData.mnBackMode
|
||||
<< maData.maTextColor
|
||||
<< maData.maTextComplexColor.getFinalColor()
|
||||
<< maData.maRect
|
||||
<< maData.mnFlags;
|
||||
|
||||
|
@ -2845,10 +2845,10 @@ void XclExpChTick::Convert( const ScfPropertySet& rPropSet, const XclChExtTypeIn
|
|||
}
|
||||
}
|
||||
|
||||
void XclExpChTick::SetFontColor( const Color& rColor, sal_uInt32 nColorId )
|
||||
void XclExpChTick::SetFontColor(model::ComplexColor const& rComplexColor, sal_uInt32 nColorId )
|
||||
{
|
||||
maData.maTextColor = rColor;
|
||||
::set_flag( maData.mnFlags, EXC_CHTICK_AUTOCOLOR, rColor == COL_AUTO );
|
||||
maData.maTextComplexColor = rComplexColor;
|
||||
::set_flag(maData.mnFlags, EXC_CHTICK_AUTOCOLOR, rComplexColor.getFinalColor() == COL_AUTO);
|
||||
mnTextColorId = nColorId;
|
||||
}
|
||||
|
||||
|
@ -2866,7 +2866,7 @@ void XclExpChTick::WriteBody( XclExpStream& rStrm )
|
|||
<< maData.mnLabelPos
|
||||
<< maData.mnBackMode;
|
||||
rStrm.WriteZeroBytes( 16 );
|
||||
rStrm << maData.maTextColor
|
||||
rStrm << maData.maTextComplexColor.getFinalColor()
|
||||
<< maData.mnFlags;
|
||||
if( GetBiff() == EXC_BIFF8 )
|
||||
rStrm << GetPalette().GetColorIndex( mnTextColorId ) << maData.mnRotation;
|
||||
|
@ -2922,11 +2922,11 @@ XclExpChAxis::XclExpChAxis( const XclExpChRoot& rRoot, sal_uInt16 nAxisType ) :
|
|||
maData.mnType = nAxisType;
|
||||
}
|
||||
|
||||
void XclExpChAxis::SetFont( XclExpChFontRef xFont, const Color& rColor, sal_uInt32 nColorId )
|
||||
void XclExpChAxis::SetFont( XclExpChFontRef xFont, model::ComplexColor const& rComplexColor, sal_uInt32 nColorId )
|
||||
{
|
||||
mxFont = xFont;
|
||||
if( mxTick )
|
||||
mxTick->SetFontColor( rColor, nColorId );
|
||||
mxTick->SetFontColor(rComplexColor, nColorId);
|
||||
}
|
||||
|
||||
void XclExpChAxis::SetRotation( sal_uInt16 nRotation )
|
||||
|
|
|
@ -668,11 +668,11 @@ XclExpCFImpl::XclExpCFImpl( const XclExpRoot& rRoot, const ScCondFormatEntry& rF
|
|||
if( mbFontUsed )
|
||||
{
|
||||
vcl::Font aFont;
|
||||
::Color aColor;
|
||||
model::ComplexColor aComplexColor;
|
||||
ScPatternAttr::fillFontOnly(aFont, rItemSet);
|
||||
ScPatternAttr::fillColor(aColor, rItemSet, ScAutoFontColorMode::Raw);
|
||||
maFontData.FillFromVclFont(aFont, aColor);
|
||||
mnFontColorId = GetPalette().InsertColor(maFontData.maColor, EXC_COLOR_CELLTEXT);
|
||||
ScPatternAttr::fillColor(aComplexColor, rItemSet, ScAutoFontColorMode::Raw);
|
||||
maFontData.FillFromVclFont(aFont, aComplexColor);
|
||||
mnFontColorId = GetPalette().InsertColor(maFontData.maComplexColor.getFinalColor(), EXC_COLOR_CELLTEXT);
|
||||
}
|
||||
|
||||
// border
|
||||
|
|
|
@ -389,8 +389,8 @@ XclExpStringRef lclCreateFormattedString(
|
|||
|
||||
// construct font from current text portion
|
||||
SvxFont aFont(XclExpFontHelper::GetFontFromItemSet(rRoot, rItemSet, nScript));
|
||||
Color aColor;
|
||||
ScPatternAttr::fillColor(aColor, rItemSet, ScAutoFontColorMode::Raw);
|
||||
model::ComplexColor aComplexColor;
|
||||
ScPatternAttr::fillColor(aComplexColor, rItemSet, ScAutoFontColorMode::Raw);
|
||||
|
||||
// Excel start position of this portion
|
||||
sal_Int32 nXclPortionStart = xString->Len();
|
||||
|
@ -399,7 +399,7 @@ XclExpStringRef lclCreateFormattedString(
|
|||
if( nXclPortionStart < xString->Len() )
|
||||
{
|
||||
// insert font into buffer
|
||||
sal_uInt16 nFontIdx = rFontBuffer.Insert(aFont, aColor, EXC_COLOR_CELLTEXT);
|
||||
sal_uInt16 nFontIdx = rFontBuffer.Insert(aFont, aComplexColor, EXC_COLOR_CELLTEXT);
|
||||
// insert font index into format run vector
|
||||
xString->AppendFormat( nXclPortionStart, nFontIdx );
|
||||
}
|
||||
|
@ -503,8 +503,8 @@ XclExpStringRef lclCreateFormattedString(
|
|||
if( nScript == ApiScriptType::WEAK )
|
||||
nScript = nLastScript;
|
||||
SvxFont aFont( XclExpFontHelper::GetFontFromItemSet(rRoot, aItemSet, nScript));
|
||||
Color aColor;
|
||||
ScPatternAttr::fillColor(aColor, aItemSet, ScAutoFontColorMode::Raw);
|
||||
model::ComplexColor aComplexColor;
|
||||
ScPatternAttr::fillColor(aComplexColor, aItemSet, ScAutoFontColorMode::Raw);
|
||||
|
||||
nLastScript = nScript;
|
||||
|
||||
|
@ -512,10 +512,10 @@ XclExpStringRef lclCreateFormattedString(
|
|||
aFont.SetEscapement( nEsc );
|
||||
// modify automatic font color for hyperlinks
|
||||
if (bIsHyperlink && aItemSet.Get(ATTR_FONT_COLOR).GetValue() == COL_AUTO)
|
||||
aColor = COL_LIGHTBLUE;
|
||||
aComplexColor.setFinalColor(COL_LIGHTBLUE);
|
||||
|
||||
// insert font into buffer
|
||||
sal_uInt16 nFontIdx = rFontBuffer.Insert(aFont, aColor, EXC_COLOR_CELLTEXT);
|
||||
sal_uInt16 nFontIdx = rFontBuffer.Insert(aFont, aComplexColor, EXC_COLOR_CELLTEXT);
|
||||
// insert font index into format run vector
|
||||
xString->AppendFormat( nXclPortionStart, nFontIdx );
|
||||
}
|
||||
|
@ -731,12 +731,12 @@ void XclExpHFConverter::AppendPortion( const EditTextObject* pTextObj, sal_Unico
|
|||
// --- font attributes ---
|
||||
|
||||
vcl::Font aFont;
|
||||
Color aColor;
|
||||
model::ComplexColor aComplexColor;
|
||||
aItemSet.ClearItem();
|
||||
SfxItemSet aEditSet( mrEE.GetAttribs( aSel ) );
|
||||
ScPatternAttr::GetFromEditItemSet( aItemSet, aEditSet );
|
||||
ScPatternAttr::fillFontOnly(aFont, aItemSet);
|
||||
ScPatternAttr::fillColor(aColor, aItemSet, ScAutoFontColorMode::Raw);
|
||||
ScPatternAttr::fillColor(aComplexColor, aItemSet, ScAutoFontColorMode::Raw);
|
||||
|
||||
// font name and style
|
||||
aNewData.maName = XclTools::GetXclFontName( aFont.GetFamilyName() );
|
||||
|
@ -789,10 +789,12 @@ void XclExpHFConverter::AppendPortion( const EditTextObject* pTextObj, sal_Unico
|
|||
}
|
||||
|
||||
// font color
|
||||
aNewData.maColor = aColor;
|
||||
if ( !aFontData.maColor.IsRGBEqual( aNewData.maColor ) )
|
||||
aNewData.maComplexColor = aComplexColor;
|
||||
Color aNewColor = aNewData.maComplexColor.getFinalColor();
|
||||
|
||||
if (!aFontData.maComplexColor.getFinalColor().IsRGBEqual(aNewColor))
|
||||
{
|
||||
aParaText.append("&K" + aNewData.maColor.AsRGBHexString());
|
||||
aParaText.append("&K" + aNewColor.AsRGBHexString());
|
||||
}
|
||||
|
||||
// strikeout
|
||||
|
|
|
@ -883,14 +883,17 @@ sax_fastparser::FSHelperPtr XclXmlUtils::WriteFontData( sax_fastparser::FSHelper
|
|||
if (bHaveVertAlign)
|
||||
pStream->singleElement(XML_vertAlign, XML_val, pVertAlign);
|
||||
pStream->singleElement(XML_sz, XML_val, OString::number( rFontData.mnHeight / 20.0 )); // Twips->Pt
|
||||
if( rFontData.maColor != Color( ColorAlpha, 0, 0xFF, 0xFF, 0xFF ) )
|
||||
pStream->singleElement( XML_color,
|
||||
|
||||
if (rFontData.maComplexColor.getFinalColor() != Color( ColorAlpha, 0, 0xFF, 0xFF, 0xFF))
|
||||
{
|
||||
pStream->singleElement(XML_color,
|
||||
// OOXTODO: XML_auto, bool
|
||||
// OOXTODO: XML_indexed, uint
|
||||
XML_rgb, XclXmlUtils::ToOString(rFontData.maColor)
|
||||
XML_rgb, XclXmlUtils::ToOString(rFontData.maComplexColor.getFinalColor())
|
||||
// OOXTODO: XML_theme, index into <clrScheme/>
|
||||
// OOXTODO: XML_tint, double
|
||||
);
|
||||
}
|
||||
pStream->singleElement(nFontId, XML_val, rFontData.maName);
|
||||
pStream->singleElement(XML_family, XML_val, OString::number( rFontData.mnFamily ));
|
||||
if (rFontData.mnCharSet != 0)
|
||||
|
|
|
@ -938,21 +938,22 @@ bool XclExpFontHelper::CheckItems( const XclExpRoot& rRoot, const SfxItemSet& rI
|
|||
|
||||
namespace {
|
||||
|
||||
sal_uInt32 lclCalcHash( const XclFontData& rFontData )
|
||||
std::size_t lclCalcHash( const XclFontData& rFontData )
|
||||
{
|
||||
sal_uInt32 nHash = rFontData.maName.getLength();
|
||||
nHash += sal_uInt32(rFontData.maColor) * 2;
|
||||
nHash += rFontData.mnWeight * 3;
|
||||
nHash += rFontData.mnCharSet * 5;
|
||||
nHash += rFontData.mnFamily * 7;
|
||||
nHash += rFontData.mnHeight * 11;
|
||||
nHash += rFontData.mnUnderline * 13;
|
||||
nHash += rFontData.mnEscapem * 17;
|
||||
if( rFontData.mbItalic ) nHash += 19;
|
||||
if( rFontData.mbStrikeout ) nHash += 23;
|
||||
if( rFontData.mbOutline ) nHash += 29;
|
||||
if( rFontData.mbShadow ) nHash += 31;
|
||||
return nHash;
|
||||
std::size_t seed = 0;
|
||||
o3tl::hash_combine(seed, rFontData.maName);
|
||||
o3tl::hash_combine(seed, rFontData.maComplexColor);
|
||||
o3tl::hash_combine(seed, rFontData.mnWeight);
|
||||
o3tl::hash_combine(seed, rFontData.mnCharSet);
|
||||
o3tl::hash_combine(seed, rFontData.mnFamily);
|
||||
o3tl::hash_combine(seed, rFontData.mnHeight);
|
||||
o3tl::hash_combine(seed, rFontData.mnUnderline);
|
||||
o3tl::hash_combine(seed, rFontData.mnEscapem);
|
||||
o3tl::hash_combine(seed, rFontData.mbItalic);
|
||||
o3tl::hash_combine(seed, rFontData.mbStrikeout);
|
||||
o3tl::hash_combine(seed, rFontData.mbOutline);
|
||||
o3tl::hash_combine(seed, rFontData.mbShadow);
|
||||
return seed;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -964,7 +965,7 @@ XclExpFont::XclExpFont( const XclExpRoot& rRoot,
|
|||
maData( rFontData )
|
||||
{
|
||||
// insert font color into palette
|
||||
mnColorId = rRoot.GetPalette().InsertColor( rFontData.maColor, eColorType, EXC_COLOR_FONTAUTO );
|
||||
mnColorId = rRoot.GetPalette().InsertColor(rFontData.maComplexColor.getFinalColor(), eColorType, EXC_COLOR_FONTAUTO);
|
||||
// hash value for faster comparison
|
||||
mnHash = lclCalcHash( maData );
|
||||
// record size
|
||||
|
@ -1222,18 +1223,18 @@ sal_uInt16 XclExpFontBuffer::Insert(
|
|||
return static_cast< sal_uInt16 >( nPos );
|
||||
}
|
||||
|
||||
sal_uInt16 XclExpFontBuffer::Insert(const SvxFont& rFont, Color const& rColor, XclExpColorType eColorType )
|
||||
sal_uInt16 XclExpFontBuffer::Insert(const SvxFont& rFont, model::ComplexColor const& rComplexColor, XclExpColorType eColorType )
|
||||
{
|
||||
return Insert(XclFontData(rFont, rColor), eColorType);
|
||||
return Insert(XclFontData(rFont, rComplexColor), eColorType);
|
||||
}
|
||||
|
||||
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);
|
||||
Color aColor;
|
||||
ScPatternAttr::fillColor(aColor, rItemSet, ScAutoFontColorMode::Raw);
|
||||
return Insert(XclFontData(aFont, aColor), eColorType, bAppFont );
|
||||
model::ComplexColor aComplexColor;
|
||||
ScPatternAttr::fillColor(aComplexColor, rItemSet, ScAutoFontColorMode::Raw);
|
||||
return Insert(XclFontData(aFont, aComplexColor), eColorType, bAppFont );
|
||||
}
|
||||
|
||||
void XclExpFontBuffer::Save( XclExpStream& rStrm )
|
||||
|
@ -3208,7 +3209,7 @@ sal_Int32 XclExpDxfs::GetDxfByColor(Color aColor) const
|
|||
return -1;
|
||||
}
|
||||
|
||||
void XclExpDxfs::AddColor(Color aColor)
|
||||
void XclExpDxfs::addColor(Color aColor)
|
||||
{
|
||||
maColorToDxfId.emplace(aColor, maDxf.size());
|
||||
|
||||
|
|
|
@ -949,14 +949,19 @@ void XclImpChText::ReadHeaderRecord( XclImpStream& rStrm )
|
|||
maData.mnHAlign = rStrm.ReaduInt8();
|
||||
maData.mnVAlign = rStrm.ReaduInt8();
|
||||
maData.mnBackMode = rStrm.ReaduInt16();
|
||||
rStrm >> maData.maTextColor
|
||||
>> maData.maRect;
|
||||
|
||||
Color aColor;
|
||||
rStrm >> aColor;
|
||||
maData.maTextComplexColor.setColor(aColor);
|
||||
|
||||
rStrm >> maData.maRect;
|
||||
maData.mnFlags = rStrm.ReaduInt16();
|
||||
|
||||
if( GetBiff() == EXC_BIFF8 )
|
||||
{
|
||||
// BIFF8: index into palette used instead of RGB data
|
||||
maData.maTextColor = GetPalette().GetColor( rStrm.ReaduInt16() );
|
||||
aColor = GetPalette().GetColor(rStrm.ReaduInt16());
|
||||
maData.maTextComplexColor.setColor(aColor);
|
||||
// placement and rotation
|
||||
maData.mnFlags2 = rStrm.ReaduInt16();
|
||||
maData.mnRotation = rStrm.ReaduInt16();
|
||||
|
@ -1015,7 +1020,7 @@ sal_uInt16 XclImpChText::GetFontIndex() const
|
|||
|
||||
Color XclImpChText::GetFontColor() const
|
||||
{
|
||||
return ::get_flag( maData.mnFlags, EXC_CHTEXT_AUTOCOLOR ) ? GetFontAutoColor() : maData.maTextColor;
|
||||
return ::get_flag(maData.mnFlags, EXC_CHTEXT_AUTOCOLOR) ? GetFontAutoColor() : maData.maTextComplexColor.getFinalColor();
|
||||
}
|
||||
|
||||
sal_uInt16 XclImpChText::GetRotation() const
|
||||
|
@ -1042,8 +1047,8 @@ void XclImpChText::UpdateText( const XclImpChText* pParentText )
|
|||
{
|
||||
mxFont = pParentText->mxFont;
|
||||
// text color is taken from CHTEXT record, not from font in CHFONT
|
||||
::set_flag( maData.mnFlags, EXC_CHTEXT_AUTOCOLOR, ::get_flag( pParentText->maData.mnFlags, EXC_CHTEXT_AUTOCOLOR ) );
|
||||
maData.maTextColor = pParentText->maData.maTextColor;
|
||||
::set_flag(maData.mnFlags, EXC_CHTEXT_AUTOCOLOR, ::get_flag(pParentText->maData.mnFlags, EXC_CHTEXT_AUTOCOLOR));
|
||||
maData.maTextComplexColor = pParentText->maData.maTextComplexColor;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3193,13 +3198,15 @@ void XclImpChTick::ReadChTick( XclImpStream& rStrm )
|
|||
maData.mnLabelPos = rStrm.ReaduInt8();
|
||||
maData.mnBackMode = rStrm.ReaduInt8();
|
||||
rStrm.Ignore( 16 );
|
||||
rStrm >> maData.maTextColor;
|
||||
Color aColor;
|
||||
rStrm >> aColor;
|
||||
maData.maTextComplexColor.setColor(aColor);
|
||||
maData.mnFlags = rStrm.ReaduInt16();
|
||||
|
||||
if( GetBiff() == EXC_BIFF8 )
|
||||
{
|
||||
// BIFF8: index into palette used instead of RGB data
|
||||
maData.maTextColor = GetPalette().GetColor( rStrm.ReaduInt16() );
|
||||
maData.maTextComplexColor.setColor(GetPalette().GetColor(rStrm.ReaduInt16()));
|
||||
// rotation
|
||||
maData.mnRotation = rStrm.ReaduInt16();
|
||||
}
|
||||
|
@ -3213,7 +3220,7 @@ void XclImpChTick::ReadChTick( XclImpStream& rStrm )
|
|||
|
||||
Color XclImpChTick::GetFontColor() const
|
||||
{
|
||||
return ::get_flag( maData.mnFlags, EXC_CHTICK_AUTOCOLOR ) ? GetFontAutoColor() : maData.maTextColor;
|
||||
return ::get_flag(maData.mnFlags, EXC_CHTICK_AUTOCOLOR) ? GetFontAutoColor() : maData.maTextComplexColor.getFinalColor();
|
||||
}
|
||||
|
||||
sal_uInt16 XclImpChTick::GetRotation() const
|
||||
|
|
|
@ -309,7 +309,7 @@ void XclImpFont::ReadCFFontBlock( XclImpStream& rStrm )
|
|||
if( (mbUnderlUsed = !::get_flag( nFontFlags3, EXC_CF_FONT_UNDERL ) && (nUnderl <= 0x7F)) )
|
||||
maData.mnUnderline = nUnderl;
|
||||
if( (mbColorUsed = (nColor <= 0x7FFF)) )
|
||||
maData.maColor = GetPalette().GetColor( static_cast< sal_uInt16 >( nColor ) );
|
||||
maData.maComplexColor.setColor(GetPalette().GetColor(sal_uInt16(nColor)));
|
||||
if( (mbStrikeUsed = !::get_flag( nFontFlags1, EXC_CF_FONT_STRIKEOUT )) )
|
||||
maData.mbStrikeout = ::get_flag( nStyle, EXC_CF_FONT_STRIKEOUT );
|
||||
}
|
||||
|
@ -368,7 +368,7 @@ void XclImpFont::FillToItemSet( SfxItemSet& rItemSet, XclFontItemType eType, boo
|
|||
|
||||
// Font color - pass AUTO_COL to item
|
||||
if( mbColorUsed )
|
||||
PUTITEM( SvxColorItem( maData.maColor, ATTR_FONT_COLOR ), ATTR_FONT_COLOR, EE_CHAR_COLOR );
|
||||
PUTITEM(SvxColorItem(maData.maComplexColor.getFinalColor(), maData.maComplexColor, ATTR_FONT_COLOR ), ATTR_FONT_COLOR, EE_CHAR_COLOR);
|
||||
|
||||
// Font weight (for all script types)
|
||||
if( mbWeightUsed )
|
||||
|
@ -455,7 +455,7 @@ void XclImpFont::ReadFontData5( XclImpStream& rStrm )
|
|||
|
||||
void XclImpFont::ReadFontColor( XclImpStream& rStrm )
|
||||
{
|
||||
maData.maColor = GetPalette().GetColor( rStrm.ReaduInt16() );
|
||||
maData.maComplexColor.setColor(GetPalette().GetColor(rStrm.ReaduInt16()));
|
||||
}
|
||||
|
||||
void XclImpFont::ReadFontName2( XclImpStream& rStrm )
|
||||
|
|
|
@ -153,7 +153,6 @@ XclChFrLabelProps::XclChFrLabelProps() :
|
|||
}
|
||||
|
||||
XclChText::XclChText() :
|
||||
maTextColor( COL_BLACK ),
|
||||
mnHAlign( EXC_CHTEXT_ALIGN_CENTER ),
|
||||
mnVAlign( EXC_CHTEXT_ALIGN_CENTER ),
|
||||
mnBackMode( EXC_CHTEXT_TRANSPARENT ),
|
||||
|
@ -161,6 +160,7 @@ XclChText::XclChText() :
|
|||
mnFlags2( EXC_CHTEXT_POS_DEFAULT ),
|
||||
mnRotation( EXC_ROT_NONE )
|
||||
{
|
||||
maTextComplexColor.setColor(COL_BLACK);
|
||||
}
|
||||
|
||||
// Data series ================================================================
|
||||
|
@ -303,7 +303,6 @@ XclChValueRange::XclChValueRange() :
|
|||
}
|
||||
|
||||
XclChTick::XclChTick() :
|
||||
maTextColor( COL_BLACK ),
|
||||
mnMajor( EXC_CHTICK_INSIDE | EXC_CHTICK_OUTSIDE ),
|
||||
mnMinor( 0 ),
|
||||
mnLabelPos( EXC_CHTICK_NEXT ),
|
||||
|
@ -311,6 +310,7 @@ XclChTick::XclChTick() :
|
|||
mnFlags( EXC_CHTICK_AUTOCOLOR | EXC_CHTICK_AUTOROT ),
|
||||
mnRotation( EXC_ROT_NONE )
|
||||
{
|
||||
maTextComplexColor.setColor(COL_BLACK);
|
||||
}
|
||||
|
||||
XclChAxis::XclChAxis() :
|
||||
|
|
|
@ -174,22 +174,22 @@ XclFontData::XclFontData()
|
|||
Clear();
|
||||
}
|
||||
|
||||
XclFontData::XclFontData(const vcl::Font& rFont, Color const& rColor)
|
||||
XclFontData::XclFontData(const vcl::Font& rFont, model::ComplexColor const& rComplexColor)
|
||||
{
|
||||
Clear();
|
||||
FillFromVclFont(rFont, rColor);
|
||||
FillFromVclFont(rFont, rComplexColor);
|
||||
}
|
||||
|
||||
XclFontData::XclFontData(const SvxFont& rFont, Color const& rColor)
|
||||
XclFontData::XclFontData(const SvxFont& rFont, model::ComplexColor const& rComplexColor)
|
||||
{
|
||||
FillFromSvxFont(rFont, rColor);
|
||||
FillFromSvxFont(rFont, rComplexColor);
|
||||
}
|
||||
|
||||
void XclFontData::Clear()
|
||||
{
|
||||
maName.clear();
|
||||
maStyle.clear();
|
||||
maColor = COL_AUTO;
|
||||
maComplexColor.setColor(COL_AUTO);
|
||||
mnHeight = 0;
|
||||
mnWeight = EXC_FONTWGHT_DONTKNOW;
|
||||
mnEscapem = EXC_FONTESC_NONE;
|
||||
|
@ -199,11 +199,10 @@ void XclFontData::Clear()
|
|||
mbItalic = mbStrikeout = mbOutline = mbShadow = false;
|
||||
}
|
||||
|
||||
void XclFontData::FillFromVclFont(const vcl::Font& rFont, Color const& rColor)
|
||||
void XclFontData::FillFromVclFont(const vcl::Font& rFont, model::ComplexColor const& rComplexColor)
|
||||
{
|
||||
maName = XclTools::GetXclFontName( rFont.GetFamilyName() ); // substitute with MS fonts
|
||||
maStyle.clear();
|
||||
maColor = rColor;
|
||||
SetScUnderline( rFont.GetUnderline() );
|
||||
mnEscapem = EXC_FONTESC_NONE;
|
||||
SetScHeight( rFont.GetFontSize().Height() );
|
||||
|
@ -214,11 +213,13 @@ void XclFontData::FillFromVclFont(const vcl::Font& rFont, Color const& rColor)
|
|||
SetScStrikeout( rFont.GetStrikeout() );
|
||||
mbOutline = rFont.IsOutline();
|
||||
mbShadow = rFont.IsShadow();
|
||||
|
||||
maComplexColor = rComplexColor;
|
||||
}
|
||||
|
||||
void XclFontData::FillFromSvxFont(const SvxFont& rFont, Color const& rColor)
|
||||
void XclFontData::FillFromSvxFont(const SvxFont& rFont, model::ComplexColor const& rComplexColor)
|
||||
{
|
||||
FillFromVclFont(rFont, rColor);
|
||||
FillFromVclFont(rFont, rComplexColor);
|
||||
SetScEscapement(rFont.GetEscapement());
|
||||
}
|
||||
|
||||
|
@ -520,7 +521,7 @@ bool operator==( const XclFontData& rLeft, const XclFontData& rRight )
|
|||
(rLeft.mnHeight == rRight.mnHeight) &&
|
||||
(rLeft.mnWeight == rRight.mnWeight) &&
|
||||
(rLeft.mnUnderline == rRight.mnUnderline) &&
|
||||
(rLeft.maColor == rRight.maColor) &&
|
||||
(rLeft.maComplexColor == rRight.maComplexColor) &&
|
||||
(rLeft.mnEscapem == rRight.mnEscapem) &&
|
||||
(rLeft.mnFamily == rRight.mnFamily) &&
|
||||
(rLeft.mnCharSet == rRight.mnCharSet) &&
|
||||
|
@ -638,11 +639,13 @@ void XclFontPropSetHelper::ReadFontProperties( XclFontData& rFontData,
|
|||
rPropSetHlp >> aApiFontName >> fApiHeight >> eApiPosture >> fApiWeight;
|
||||
// read common properties
|
||||
maHlpChCommon.ReadFromPropertySet( rPropSet );
|
||||
maHlpChCommon >> nApiUnderl
|
||||
>> nApiStrikeout
|
||||
>> rFontData.maColor
|
||||
>> rFontData.mbOutline
|
||||
>> rFontData.mbShadow;
|
||||
maHlpChCommon >> nApiUnderl;
|
||||
maHlpChCommon >> nApiStrikeout;
|
||||
Color aColor;
|
||||
maHlpChCommon >> aColor;
|
||||
rFontData.maComplexColor.setColor(aColor);
|
||||
maHlpChCommon >> rFontData.mbOutline;
|
||||
maHlpChCommon >> rFontData.mbShadow;
|
||||
|
||||
// convert API property values to Excel settings
|
||||
lclSetApiFontSettings( rFontData, aApiFontName,
|
||||
|
@ -667,15 +670,17 @@ void XclFontPropSetHelper::ReadFontProperties( XclFontData& rFontData,
|
|||
|
||||
// read font properties
|
||||
maHlpControl.ReadFromPropertySet( rPropSet );
|
||||
maHlpControl >> aApiFontName
|
||||
>> nApiFamily
|
||||
>> nApiCharSet
|
||||
>> fApiHeight
|
||||
>> nApiPosture
|
||||
>> fApiWeight
|
||||
>> nApiUnderl
|
||||
>> nApiStrikeout
|
||||
>> rFontData.maColor;
|
||||
maHlpControl >> aApiFontName;
|
||||
maHlpControl >> nApiFamily;
|
||||
maHlpControl >> nApiCharSet;
|
||||
maHlpControl >> fApiHeight;
|
||||
maHlpControl >> nApiPosture;
|
||||
maHlpControl >> fApiWeight;
|
||||
maHlpControl >> nApiUnderl;
|
||||
maHlpControl >> nApiStrikeout;
|
||||
Color aColor;
|
||||
maHlpControl >> aColor;
|
||||
rFontData.maComplexColor.setColor(aColor);
|
||||
|
||||
// convert API property values to Excel settings
|
||||
Awt::FontSlant eApiPosture = static_cast< Awt::FontSlant >( nApiPosture );
|
||||
|
@ -699,10 +704,10 @@ void XclFontPropSetHelper::WriteFontProperties(
|
|||
{
|
||||
// write common properties
|
||||
maHlpChCommon.InitializeWrite();
|
||||
const Color& rColor = pFontColor ? *pFontColor : rFontData.maColor;
|
||||
Color aColor = pFontColor ? *pFontColor : rFontData.maComplexColor.getFinalColor();
|
||||
maHlpChCommon << rFontData.GetApiUnderline()
|
||||
<< rFontData.GetApiStrikeout()
|
||||
<< rColor
|
||||
<< aColor
|
||||
<< rFontData.mbOutline
|
||||
<< rFontData.mbShadow;
|
||||
maHlpChCommon.WriteToPropertySet( rPropSet );
|
||||
|
@ -733,7 +738,7 @@ void XclFontPropSetHelper::WriteFontProperties(
|
|||
<< rFontData.GetApiWeight()
|
||||
<< rFontData.GetApiUnderline()
|
||||
<< rFontData.GetApiStrikeout()
|
||||
<< rFontData.maColor;
|
||||
<< rFontData.maComplexColor.getFinalColor();
|
||||
maHlpControl.WriteToPropertySet( rPropSet );
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -473,7 +473,7 @@ public:
|
|||
virtual ~XclExpChFontBase();
|
||||
|
||||
/** Derived classes set font color and color identifier to internal data structures. */
|
||||
virtual void SetFont( XclExpChFontRef xFont, const Color& rColor, sal_uInt32 nColorId ) = 0;
|
||||
virtual void SetFont( XclExpChFontRef xFont, const model::ComplexColor& rComplexColor, sal_uInt32 nColorId ) = 0;
|
||||
/** Derived classes set text rotation to internal data structures. */
|
||||
virtual void SetRotation( sal_uInt16 nRotation ) = 0;
|
||||
|
||||
|
@ -496,7 +496,7 @@ public:
|
|||
explicit XclExpChText( const XclExpChRoot& rRoot );
|
||||
|
||||
/** Sets font color and color identifier to internal data structures. */
|
||||
virtual void SetFont( XclExpChFontRef xFont, const Color& rColor, sal_uInt32 nColorId ) override;
|
||||
virtual void SetFont( XclExpChFontRef xFont, model::ComplexColor const& rComplexColor, sal_uInt32 nColorId ) override;
|
||||
/** Sets text rotation to internal data structures. */
|
||||
virtual void SetRotation( sal_uInt16 nRotation ) override;
|
||||
|
||||
|
@ -993,7 +993,8 @@ public:
|
|||
/** Converts axis tick mark settings. */
|
||||
void Convert( const ScfPropertySet& rPropSet, const XclChExtTypeInfo& rTypeInfo, sal_uInt16 nAxisType );
|
||||
/** Sets font color and color identifier to internal data structures. */
|
||||
void SetFontColor( const Color& rColor, sal_uInt32 nColorId );
|
||||
void SetFontColor(model::ComplexColor const& rComplexColor, sal_uInt32 nColorId);
|
||||
|
||||
/** Sets text rotation to internal data structures. */
|
||||
void SetRotation( sal_uInt16 nRotation );
|
||||
|
||||
|
@ -1019,7 +1020,7 @@ public:
|
|||
explicit XclExpChAxis( const XclExpChRoot& rRoot, sal_uInt16 nAxisType );
|
||||
|
||||
/** Sets font color and color identifier to internal data structures. */
|
||||
virtual void SetFont( XclExpChFontRef xFont, const Color& rColor, sal_uInt32 nColorId ) override;
|
||||
virtual void SetFont( XclExpChFontRef xFont, model::ComplexColor const& rComplexColor, sal_uInt32 nColorId ) override;
|
||||
/** Sets text rotation to internal data structures. */
|
||||
virtual void SetRotation( sal_uInt16 nRotation ) override;
|
||||
|
||||
|
|
|
@ -221,7 +221,7 @@ public:
|
|||
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, Color const& rColor, XclExpColorType eColorType);
|
||||
sal_uInt16 Insert(const SvxFont& rFont, model::ComplexColor const& rComplexColor, 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.
|
||||
|
@ -756,7 +756,7 @@ public:
|
|||
|
||||
sal_Int32 GetDxfId(const OUString& rName) const;
|
||||
sal_Int32 GetDxfByColor(Color aColor) const;
|
||||
void AddColor(Color aColor);
|
||||
void addColor(Color aColor);
|
||||
|
||||
virtual void SaveXml( XclExpXmlStream& rStrm) override;
|
||||
void Finalize();
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <tools/gen.hxx>
|
||||
#include <docmodel/color/ComplexColor.hxx>
|
||||
#include "fapihelper.hxx"
|
||||
#include <map>
|
||||
#include <memory>
|
||||
|
@ -870,7 +871,8 @@ struct XclChFrLabelProps
|
|||
struct XclChText
|
||||
{
|
||||
XclChRectangle maRect; /// Position of the text object.
|
||||
Color maTextColor; /// Text color.
|
||||
//Color maTextColor; /// Text color.
|
||||
model::ComplexColor maTextComplexColor;
|
||||
sal_uInt8 mnHAlign; /// Horizontal alignment.
|
||||
sal_uInt8 mnVAlign; /// Vertical alignment.
|
||||
sal_uInt16 mnBackMode; /// Background mode: transparent, opaque.
|
||||
|
@ -1042,7 +1044,7 @@ struct XclChValueRange
|
|||
|
||||
struct XclChTick
|
||||
{
|
||||
Color maTextColor; /// Tick labels color.
|
||||
model::ComplexColor maTextComplexColor; /// Tick labels color.
|
||||
sal_uInt8 mnMajor; /// Type of tick marks of major grid.
|
||||
sal_uInt8 mnMinor; /// Type of tick marks of minor grid.
|
||||
sal_uInt8 mnLabelPos; /// Position of labels relative to axis.
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include <map>
|
||||
#include <com/sun/star/awt/FontSlant.hpp>
|
||||
#include <docmodel/color/ComplexColor.hxx>
|
||||
#include <tools/color.hxx>
|
||||
#include <tools/fontenum.hxx>
|
||||
#include <editeng/svxenum.hxx>
|
||||
|
@ -284,7 +285,6 @@ struct XclFontData
|
|||
{
|
||||
OUString maName; /// Font name.
|
||||
OUString maStyle; /// String with styles (bold, italic).
|
||||
Color maColor; /// Font color.
|
||||
sal_uInt16 mnHeight; /// Font height in twips (1/20 of a point).
|
||||
sal_uInt16 mnWeight; /// Boldness: 400=normal, 700=bold.
|
||||
sal_uInt16 mnEscapem; /// Escapement type.
|
||||
|
@ -296,19 +296,21 @@ struct XclFontData
|
|||
bool mbOutline; /// true = Outlined.
|
||||
bool mbShadow; /// true = Shadowed.
|
||||
|
||||
model::ComplexColor maComplexColor; /// Font color.
|
||||
|
||||
/** Constructs an empty font data structure. */
|
||||
explicit XclFontData();
|
||||
explicit XclFontData();
|
||||
/** Constructs a font data structure and fills it with the passed font attributes (except color). */
|
||||
explicit XclFontData(const vcl::Font& rFont, Color const& aColor);
|
||||
explicit XclFontData(const vcl::Font& rFont, model::ComplexColor const& rComplexColor);
|
||||
/** As directly above but also fills in the escapement member. */
|
||||
explicit XclFontData(const SvxFont& rFont, Color const& aColor);
|
||||
explicit XclFontData(const SvxFont& rFont, model::ComplexColor const& rComplexColor);
|
||||
|
||||
/** 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, Color const& rColor);
|
||||
void FillFromVclFont(const vcl::Font& rFont, model::ComplexColor const& rComplexColor);
|
||||
/** Fills all members (except color) from the passed SVX font. */
|
||||
void FillFromSvxFont(const SvxFont& rFont, Color const& rColor);
|
||||
void FillFromSvxFont(const SvxFont& rFont, model::ComplexColor const& rComplexColor);
|
||||
|
||||
// *** conversion of VCL/SVX constants *** ------------------------------------
|
||||
|
||||
|
|
Loading…
Reference in a new issue