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>
diff --git a/cppcanvas/source/inc/outdevstate.hxx b/cppcanvas/source/inc/outdevstate.hxx
index 36f4c6f..0c24d5f 100644
--- a/cppcanvas/source/inc/outdevstate.hxx
+++ b/cppcanvas/source/inc/outdevstate.hxx
@@ -50,6 +50,7 @@
                fillColor(),
                textColor(),
                textFillColor(),
                textOverlineColor(),
                textLineColor(),

                xFont(),
@@ -75,6 +76,7 @@
                isLineColorSet( false ),
                isFillColorSet( false ),
                isTextFillColorSet( false ),
                isTextOverlineColorSet( false ),
                isTextLineColorSet( false )
            {
            }
@@ -87,6 +89,7 @@
            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 @@
            bool                                                                     isLineColorSet;
            bool                                                                     isFillColorSet;
            bool                                                                     isTextFillColorSet;
            bool                                                                     isTextOverlineColorSet;
            bool                                                                     isTextLineColorSet;
        };
    }
diff --git a/cppcanvas/source/mtfrenderer/implrenderer.cxx b/cppcanvas/source/mtfrenderer/implrenderer.cxx
index 237f69bf..cee91bc 100644
--- a/cppcanvas/source/mtfrenderer/implrenderer.cxx
+++ b/cppcanvas/source/mtfrenderer/implrenderer.cxx
@@ -356,6 +356,12 @@
                    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 @@
                        }
                        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 @@
                // setup default text color to black
                rState.textColor =
                    rState.textFillColor =
                    rState.textOverlineColor =
                    rState.textLineColor = tools::intSRGBAToDoubleSequence( 0x000000FF );
            }

@@ -2941,9 +2964,11 @@
            {
                ::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() ||