diff options
author | Olivier R <olivier.dev@grammalecte.net> | 2019-06-03 20:33:21 +0200 |
---|---|---|
committer | Michael Stahl <Michael.Stahl@cib.de> | 2019-06-05 13:58:23 +0200 |
commit | cdd69ce780dc7758047a27ed3c76bdc01b5ffb89 (patch) | |
tree | 6694d1f9dd5521884f31cf2a4ebb2de12e9d9a3c | |
parent | e770bacc85a0eec96de77068d61b03f374b3cdec (diff) |
Linguistic: new underlining styles for grammar checkers
This patch adds two new underlining styles:
- BOLDWAVE: a thicker version of the default WAVE style
- BOLD: a thick straight line
No default setting changed. It's up to the grammar checkers to specify
the underlining style they want.
This contribution to LibreOffice is licensed under the MPLv2/LGPLv3+ dual license.
modified : include/vcl/outdev.hxx
modified : offapi/com/sun/star/text/TextMarkupDescriptor.idl
modified : sw/source/core/inc/wrong.hxx
modified : sw/source/core/txtnode/fntcache.cxx
modified : vcl/source/outdev/textline.cxx
modified : vcl/workben/outdevgrind.cxx
Change-Id: I5629253905ba40c51cc748a7ceeb84170ef5d94c
Reviewed-on: https://gerrit.libreoffice.org/73412
Tested-by: Jenkins
Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
-rw-r--r-- | include/vcl/outdev.hxx | 2 | ||||
-rw-r--r-- | offapi/com/sun/star/text/TextMarkupDescriptor.idl | 4 | ||||
-rw-r--r-- | sw/source/core/inc/wrong.hxx | 22 | ||||
-rw-r--r-- | sw/source/core/txtnode/fntcache.cxx | 31 | ||||
-rw-r--r-- | vcl/source/outdev/textline.cxx | 7 | ||||
-rw-r--r-- | vcl/workben/outdevgrind.cxx | 9 |
6 files changed, 52 insertions, 23 deletions
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 8e79c0f646ee..8f8c009fa291 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -988,7 +988,7 @@ public: void ImplDrawTextLines( SalLayout&, FontStrikeout eStrikeout, FontLineStyle eUnderline, FontLineStyle eOverline, bool bWordLine, bool bUnderlineAbove ); - void DrawWaveLine( const Point& rStartPos, const Point& rEndPos ); + void DrawWaveLine( const Point& rStartPos, const Point& rEndPos, long nLineWidth = 1 ); bool ImplDrawRotateText( SalLayout& ); diff --git a/offapi/com/sun/star/text/TextMarkupDescriptor.idl b/offapi/com/sun/star/text/TextMarkupDescriptor.idl index f78cb28c07ce..2afd054a74aa 100644 --- a/offapi/com/sun/star/text/TextMarkupDescriptor.idl +++ b/offapi/com/sun/star/text/TextMarkupDescriptor.idl @@ -54,7 +54,9 @@ struct TextMarkupDescriptor nType | aKey ------------------------- | ------------- PROOFREADING or SMARTTAG | "LineColor": changes the markup color from default to RGB aValue (int32) - PROOFREADING or SMARTTAG | "LineType": changes the wiggly line type from default to aValue (short) (WAVE or DASH) + PROOFREADING or SMARTTAG | "LineType": changes the underlining style to aValue (short): WAVE, DASH + | @since 6.3: BOLDWAVE, BOLD + | See: com::sun::star::awt::FontUnderline */ com::sun::star::container::XStringKeyMap xMarkupInfoContainer; }; diff --git a/sw/source/core/inc/wrong.hxx b/sw/source/core/inc/wrong.hxx index 3fe7cb7bf75b..53581720e853 100644 --- a/sw/source/core/inc/wrong.hxx +++ b/sw/source/core/inc/wrong.hxx @@ -47,9 +47,11 @@ class SwWrongList; enum WrongAreaLineType { - WRONGAREA_DASHED, + WRONGAREA_NONE, WRONGAREA_WAVE, - WRONGAREA_NONE + WRONGAREA_BOLDWAVE, + WRONGAREA_BOLD, + WRONGAREA_DASHED }; enum WrongListType @@ -125,6 +127,14 @@ private: { return WRONGAREA_WAVE; } + if (css::awt::FontUnderline::BOLDWAVE == lineType) + { + return WRONGAREA_BOLDWAVE; + } + if (css::awt::FontUnderline::BOLD == lineType) + { + return WRONGAREA_BOLD; + } if (css::awt::FontUnderline::DASH == lineType) { return WRONGAREA_DASHED; @@ -189,6 +199,14 @@ private: { return WRONGAREA_WAVE; } + if (css::awt::FontUnderline::BOLDWAVE == lineType) + { + return WRONGAREA_BOLDWAVE; + } + if (css::awt::FontUnderline::BOLD == lineType) + { + return WRONGAREA_BOLD; + } if (css::awt::FontUnderline::SMALLWAVE == lineType) { return WRONGAREA_WAVE; //Code draws wave height based on space that fits. diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx index ed312422a361..871f9ce655ca 100644 --- a/sw/source/core/txtnode/fntcache.cxx +++ b/sw/source/core/txtnode/fntcache.cxx @@ -784,25 +784,42 @@ static void lcl_DrawLineForWrongListData( SwWrongArea const*const wrongArea = pWList->GetWrongElement(nNextStart + rInf.GetIdx()); if (wrongArea != nullptr) { - if (WRONGAREA_DASHED == wrongArea->mLineType) + if (WRONGAREA_WAVE == wrongArea->mLineType) + { + rInf.GetOut().SetLineColor( wrongArea->mColor ); + + rInf.GetOut().DrawWaveLine( aStart, aEnd, 1 ); + } + else if (WRONGAREA_BOLDWAVE == wrongArea->mLineType) + { + rInf.GetOut().SetLineColor( wrongArea->mColor ); + + rInf.GetOut().DrawWaveLine( aStart, aEnd, 2 ); + } + else if (WRONGAREA_BOLD == wrongArea->mLineType) { rInf.GetOut().SetLineColor( wrongArea->mColor ); aStart.AdjustY(30 ); aEnd.AdjustY(30 ); - LineInfo aLineInfo( LineStyle::Dash ); - aLineInfo.SetDistance( 40 ); - aLineInfo.SetDashLen( 1 ); - aLineInfo.SetDashCount(1); + LineInfo aLineInfo( LineStyle::Solid, 26 ); rInf.GetOut().DrawLine( aStart, aEnd, aLineInfo ); } - else if (WRONGAREA_WAVE == wrongArea->mLineType) + else if (WRONGAREA_DASHED == wrongArea->mLineType) { rInf.GetOut().SetLineColor( wrongArea->mColor ); - rInf.GetOut().DrawWaveLine( aStart, aEnd ); + aStart.AdjustY(30 ); + aEnd.AdjustY(30 ); + + LineInfo aLineInfo( LineStyle::Dash ); + aLineInfo.SetDistance( 40 ); + aLineInfo.SetDashLen( 1 ); + aLineInfo.SetDashCount(1); + + rInf.GetOut().DrawLine( aStart, aEnd, aLineInfo ); } } } diff --git a/vcl/source/outdev/textline.cxx b/vcl/source/outdev/textline.cxx index 2c88586618bf..67feda6c4030 100644 --- a/vcl/source/outdev/textline.cxx +++ b/vcl/source/outdev/textline.cxx @@ -936,7 +936,7 @@ void OutputDevice::DrawTextLine( const Point& rPos, long nWidth, mpAlphaVDev->DrawTextLine( rPos, nWidth, eStrikeout, eUnderline, eOverline, bUnderlineAbove ); } -void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos ) +void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos, long nLineWidth ) { assert(!is_double_buffered_window()); @@ -998,13 +998,14 @@ void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos ) if( nWaveHeight > pFontInstance->mxFontMetric->GetWavelineUnderlineSize() ) { nWaveHeight = pFontInstance->mxFontMetric->GetWavelineUnderlineSize(); + nLineWidth = 1; } ImplDrawWaveLine(nStartX, nStartY, 0, 0, nEndX-nStartX, nWaveHeight, - fScaleFactor, nOrientation, GetLineColor()); + nLineWidth, nOrientation, GetLineColor()); if( mpAlphaVDev ) - mpAlphaVDev->DrawWaveLine( rStartPos, rEndPos ); + mpAlphaVDev->DrawWaveLine( rStartPos, rEndPos, nLineWidth ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/workben/outdevgrind.cxx b/vcl/workben/outdevgrind.cxx index 317762eaa861..ac6f12aaa373 100644 --- a/vcl/workben/outdevgrind.cxx +++ b/vcl/workben/outdevgrind.cxx @@ -550,15 +550,6 @@ void setupMethodStubs( functor_vector_type& res ) return pDev->DrawWallpaper(aRect2, aWallpaper); }); -#ifdef FIXME_HAVE_WAVE_NORMAL - /* void DrawWaveLine( const Point& rStartPos, const Point& rEndPos, sal_uInt16 nStyle ); */ - add(res, - "DrawWaveLine", - [&] (OutputDevice * pDev) { - return pDev->DrawWaveLine(aPt1, aPt2, (sal_uInt16)WAVE_NORMAL); - }); -#endif - /* void DrawGrid( const Rectangle& rRect, const Size& rDist, sal_uLong nFlags ); */ add(res, "DrawGrid", |