tdf#37636 take care of MetaOverlineColorAction in mtfrenderer.

Keep the overline color in DevOutState so that it can be
used in text actions later.

Change-Id: Ia584de9b78e1adf6862c09fb50cbed1f16e2ad0b
Reviewed-on: https://gerrit.libreoffice.org/62829
Tested-by: Jenkins
Reviewed-by: Mark Hung <marklh9@gmail.com>
This commit is contained in:
Mark Hung
2018-10-31 23:55:31 +08:00
parent 729af05280
commit 9709061a57
2 changed files with 29 additions and 0 deletions

View File

@@ -50,6 +50,7 @@ namespace cppcanvas
fillColor(),
textColor(),
textFillColor(),
textOverlineColor(),
textLineColor(),
xFont(),
@@ -75,6 +76,7 @@ namespace cppcanvas
isLineColorSet( false ),
isFillColorSet( false ),
isTextFillColorSet( false ),
isTextOverlineColorSet( false ),
isTextLineColorSet( false )
{
}
@@ -87,6 +89,7 @@ namespace cppcanvas
css::uno::Sequence< double > fillColor;
css::uno::Sequence< double > textColor;
css::uno::Sequence< double > textFillColor;
css::uno::Sequence< double > textOverlineColor;
css::uno::Sequence< double > textLineColor;
/** Current font.
@@ -116,6 +119,7 @@ namespace cppcanvas
bool isLineColorSet;
bool isFillColorSet;
bool isTextFillColorSet;
bool isTextOverlineColorSet;
bool isTextLineColorSet;
};
}

View File

@@ -356,6 +356,12 @@ namespace cppcanvas
aCalculatedNewState.isTextLineColorSet = rNewState.isTextLineColorSet;
}
if( aCalculatedNewState.pushFlags & PushFlags::OVERLINECOLOR )
{
aCalculatedNewState.textOverlineColor = rNewState.textOverlineColor;
aCalculatedNewState.isTextOverlineColorSet = rNewState.isTextOverlineColorSet;
}
if( aCalculatedNewState.pushFlags & PushFlags::TEXTLAYOUTMODE )
{
aCalculatedNewState.textAlignment = rNewState.textAlignment;
@@ -1473,6 +1479,22 @@ namespace cppcanvas
}
break;
case MetaActionType::OVERLINECOLOR:
if( !rParms.maTextColor.is_initialized() )
{
setStateColor( static_cast<MetaOverlineColorAction*>(pCurrAct),
rStates.getState().isTextOverlineColorSet,
rStates.getState().textOverlineColor,
rCanvas );
}
else
{
bool bSetting(static_cast<MetaOverlineColorAction*>(pCurrAct)->IsSetting());
rStates.getState().isTextOverlineColorSet = bSetting;
}
break;
case MetaActionType::TEXTALIGN:
{
::cppcanvas::internal::OutDevState& rState = rStates.getState();
@@ -2921,6 +2943,7 @@ namespace cppcanvas
// setup default text color to black
rState.textColor =
rState.textFillColor =
rState.textOverlineColor =
rState.textLineColor = tools::intSRGBAToDoubleSequence( 0x000000FF );
}
@@ -2941,9 +2964,11 @@ namespace cppcanvas
{
::cppcanvas::internal::OutDevState& rState = aStateStack.getState();
rState.isTextFillColorSet = true;
rState.isTextOverlineColorSet = true;
rState.isTextLineColorSet = true;
rState.textColor =
rState.textFillColor =
rState.textOverlineColor =
rState.textLineColor = tools::intSRGBAToDoubleSequence( *rParams.maTextColor );
}
if( rParams.maFontName.is_initialized() ||