drawinglayer/source/processor2d/helperwrongspellrenderer.cxx | 14 ---- editeng/source/editeng/impedit3.cxx | 16 ---- include/vcl/outdev.hxx | 7 -- sw/source/core/inc/wrong.hxx | 7 -- sw/source/core/txtnode/fntcache.cxx | 34 ---------- vcl/source/gdi/outdev3.cxx | 37 +++-------- 6 files changed, 22 insertions(+), 93 deletions(-)
New commits: commit ff6f3164dfc454354bee79eac30d6cc279b8a0ec Author: Keith Curtis <keit...@gmail.com> Date: Sat Feb 22 05:30:00 2014 -0500 Simplify DrawWave This patch simplifies the DrawWave logic. Callers of that code would try to figure out what size wave to draw and pass down a style integer to DrawWaveLine, but DrawWaveLine already has logic which trims the height of the wave so it doesn't need the hint. This doesn't change the UNO API (::com::sun::star::awt::FontUnderline::SMALLWAVE), but it does get rid of internal usages and maps those small waves to normal. Note that changing the zoom in Calc right now causes spelling underlines to disappear. That bug is not related to these changes. Conflicts: editeng/source/editeng/impedit3.cxx Change-Id: I3caa2a74a0f5228b924d4e1b0a77f96eaef5fa00 Reviewed-on: https://gerrit.libreoffice.org/8168 Tested-by: Caolán McNamara <caol...@redhat.com> Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx index 8d1e69f..13a015f 100644 --- a/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx +++ b/drawinglayer/source/processor2d/helperwrongspellrenderer.cxx @@ -42,8 +42,6 @@ namespace drawinglayer const sal_uInt32 nFontPixelHeight(basegfx::fround(aFontVectorPixel.getLength())); static const sal_uInt32 nMinimumFontHeight(5); // #define WRONG_SHOW_MIN 5 - static const sal_uInt32 nSmallFontHeight(11); // #define WRONG_SHOW_SMALL 11 - static const sal_uInt32 nMediumFontHeight(15); // #define WRONG_SHOW_MEDIUM 15 if(nFontPixelHeight > nMinimumFontHeight) { @@ -51,16 +49,6 @@ namespace drawinglayer const basegfx::B2DPoint aStop(aLocalTransform * basegfx::B2DPoint(rWrongSpellCandidate.getStop(), 0.0)); const Point aVclStart(basegfx::fround(aStart.getX()), basegfx::fround(aStart.getY())); const Point aVclStop(basegfx::fround(aStop.getX()), basegfx::fround(aStop.getY())); - sal_uInt16 nWaveStyle(WAVE_FLAT); - - if(nFontPixelHeight > nMediumFontHeight) - { - nWaveStyle = WAVE_NORMAL; - } - else if(nFontPixelHeight > nSmallFontHeight) - { - nWaveStyle = WAVE_SMALL; - } // #i101075# draw it. Do not forget to use the evtl. offsetted origin of the target device, // e.g. when used with mask/transparence buffer device @@ -72,7 +60,7 @@ namespace drawinglayer rOutputDevice.EnableMapMode(false); rOutputDevice.SetLineColor(Color(aProcessedColor)); rOutputDevice.SetFillColor(); - rOutputDevice.DrawWaveLine(aOrigin + aVclStart, aOrigin + aVclStop, nWaveStyle); + rOutputDevice.DrawWaveLine(aOrigin + aVclStart, aOrigin + aVclStop); rOutputDevice.EnableMapMode(bMapModeEnabledState); } diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 1ee1a1b..c095ba2 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -83,8 +83,6 @@ using namespace ::com::sun::star::linguistic2; #define RESDIFF 10 #define WRONG_SHOW_MIN 5 -#define WRONG_SHOW_SMALL 11 -#define WRONG_SHOW_MEDIUM 15 struct TabInfo { @@ -169,14 +167,6 @@ static void lcl_DrawRedLines( long nHght = pOutDev->LogicToPixel( Size( 0, nFontHeight ) ).Height(); if( WRONG_SHOW_MIN < nHght ) { - sal_uInt16 nStyle; - if( WRONG_SHOW_MEDIUM < nHght ) - nStyle = WAVE_NORMAL; - else if( WRONG_SHOW_SMALL < nHght ) - nStyle = WAVE_SMALL; - else - nStyle = WAVE_FLAT; - size_t nEnd, nStart = nIndex; bool bWrong = pWrongs->NextWrong( nStart, nEnd ); while ( bWrong ) @@ -189,12 +179,12 @@ static void lcl_DrawRedLines( if ( nEnd > nMaxEnd ) nEnd = nMaxEnd; Point aPnt1( rPnt ); - if ( bVertical && ( nStyle != WAVE_FLAT ) ) + if ( bVertical ) { // VCL doesn't know that the text is vertical, and is manipulating // the positions a little bit in y direction... long nOnePixel = pOutDev->PixelToLogic( Size( 0, 1 ) ).Height(); - long nCorrect = ( nStyle == WAVE_NORMAL ) ? 2*nOnePixel : nOnePixel; + long nCorrect = 2*nOnePixel; aPnt1.Y() -= nCorrect; aPnt1.X() -= nCorrect; } @@ -227,7 +217,7 @@ static void lcl_DrawRedLines( aPnt2 = Rotate( aPnt2, nOrientation, rOrigin ); } - pOutDev->DrawWaveLine( aPnt1, aPnt2, nStyle ); + pOutDev->DrawWaveLine( aPnt1, aPnt2 ); nStart = nEnd+1; if ( nEnd < nMaxEnd ) diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 1e5659a..6ee194b 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -177,11 +177,6 @@ struct ImplThresholdRes #define IMAGE_DRAW_COLORTRANSFORM ((sal_uInt16)0x0008) #define IMAGE_DRAW_SEMITRANSPARENT ((sal_uInt16)0x0010) -// WaveLine -#define WAVE_FLAT 1 -#define WAVE_SMALL 2 -#define WAVE_NORMAL 3 - // Grid #define GRID_DOTS ((sal_uLong)0x00000001) #define GRID_HORZLINES ((sal_uLong)0x00000002) @@ -1046,7 +1041,7 @@ public: #endif void DrawWallpaper( const Rectangle& rRect, const Wallpaper& rWallpaper ); - void DrawWaveLine( const Point& rStartPos, const Point& rEndPos, sal_uInt16 nStyle ); + void DrawWaveLine( const Point& rStartPos, const Point& rEndPos ); void DrawGrid( const Rectangle& rRect, const Size& rDist, sal_uLong nFlags ); void DrawTransparent( const PolyPolygon& rPolyPoly, sal_uInt16 nTransparencePercent ); diff --git a/sw/source/core/inc/wrong.hxx b/sw/source/core/inc/wrong.hxx index 89d6c0b..f2a8831 100644 --- a/sw/source/core/inc/wrong.hxx +++ b/sw/source/core/inc/wrong.hxx @@ -38,9 +38,6 @@ enum WrongAreaLineType { WRONGAREA_DASHED, WRONGAREA_WAVE, - WRONGAREA_WAVE_NORMAL, - WRONGAREA_WAVE_SMALL, - WRONGAREA_WAVE_FLAT, WRONGAREA_NONE }; @@ -122,11 +119,11 @@ private: } if (::com::sun::star::awt::FontUnderline::WAVE == lineType) { - return WRONGAREA_WAVE_NORMAL; + return WRONGAREA_WAVE; } if (::com::sun::star::awt::FontUnderline::SMALLWAVE == lineType) { - return WRONGAREA_WAVE_SMALL; + 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 3bcbb08..66efedb 100644 --- a/sw/source/core/txtnode/fntcache.cxx +++ b/sw/source/core/txtnode/fntcache.cxx @@ -628,8 +628,6 @@ void SwFntObj::SetDevFont( const SwViewShell *pSh, OutputDevice& rOut ) } #define WRONG_SHOW_MIN 5 -#define WRONG_SHOW_SMALL 11 -#define WRONG_SHOW_MEDIUM 15 /************************************************************************* * @@ -775,31 +773,7 @@ static void lcl_DrawLineForWrongListData( { rInf.GetOut().SetLineColor( wrongArea->mColor ); - // get wavy line type to use - sal_uInt16 nWave = - WRONG_SHOW_MEDIUM < nHght ? WAVE_NORMAL : - ( WRONG_SHOW_SMALL < nHght ? WAVE_SMALL : WAVE_FLAT ); - - rInf.GetOut().DrawWaveLine( aStart, aEnd, nWave ); - } - else if (WRONGAREA_WAVE_NORMAL == wrongArea->mLineType) - { - rInf.GetOut().SetLineColor( wrongArea->mColor ); - - rInf.GetOut().DrawWaveLine( aStart, aEnd, WAVE_NORMAL); - } - - else if (WRONGAREA_WAVE_SMALL == wrongArea->mLineType) - { - rInf.GetOut().SetLineColor( wrongArea->mColor ); - - rInf.GetOut().DrawWaveLine( aStart, aEnd, WAVE_SMALL); - } - else if (WRONGAREA_WAVE_FLAT == wrongArea->mLineType) - { - rInf.GetOut().SetLineColor( wrongArea->mColor ); - - rInf.GetOut().DrawWaveLine( aStart, aEnd, WAVE_FLAT); + rInf.GetOut().DrawWaveLine( aStart, aEnd ); } } } @@ -1702,10 +1676,6 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf ) if ( rInf.GetOut().GetConnectMetaFile() ) rInf.GetOut().Push(); - sal_uInt16 nWave = - WRONG_SHOW_MEDIUM < nHght ? WAVE_NORMAL : - ( WRONG_SHOW_SMALL < nHght ? WAVE_SMALL : - WAVE_FLAT ); Color aCol( rInf.GetOut().GetLineColor() ); bool bColSave = aCol != *pWaveCol; if ( bColSave ) @@ -1753,7 +1723,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf ) rInf.GetFrm()->SwitchHorizontalToVertical( aCurrPos ); rInf.GetFrm()->SwitchHorizontalToVertical( aEnd ); } - rInf.GetOut().DrawWaveLine( aCurrPos, aEnd, nWave ); + rInf.GetOut().DrawWaveLine( aCurrPos, aEnd ); if ( bColSave ) rInf.GetOut().SetLineColor( aCol ); diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx index c9ded12..74cd8e7 100644 --- a/vcl/source/gdi/outdev3.cxx +++ b/vcl/source/gdi/outdev3.cxx @@ -5303,8 +5303,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, - sal_uInt16 nStyle ) +void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos ) { if ( !IsDeviceOutputNecessary() || ImplIsRecordLayout() ) @@ -5344,32 +5343,22 @@ void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos, long nWaveHeight; - if ( nStyle == WAVE_NORMAL ) + nWaveHeight = 3; + nStartY++; + nEndY++; + + if (mnDPIScaleFactor > 1) { - nWaveHeight = 3; - nStartY++; - nEndY++; + nWaveHeight *= mnDPIScaleFactor; - if (mnDPIScaleFactor > 1) - { - nWaveHeight *= mnDPIScaleFactor; + nStartY += mnDPIScaleFactor - 1; // Shift down additional pixel(s) to create more visual separation. - // odd heights look better than even - if (mnDPIScaleFactor % 2 == 0) - { - nStartY++; // Shift down an additional pixel to create more visual separation. - nWaveHeight--; - } + // odd heights look better than even + if (mnDPIScaleFactor % 2 == 0) + { + nWaveHeight--; } } - else if( nStyle == WAVE_SMALL ) - { - nWaveHeight = 2; - nStartY++; - nEndY++; - } - else // WAVE_FLAT - nWaveHeight = 1; // #109280# make sure the waveline does not exceed the descent to avoid paint problems ImplFontEntry* pFontEntry = mpFontEntry; @@ -5381,7 +5370,7 @@ void OutputDevice::DrawWaveLine( const Point& rStartPos, const Point& rEndPos, mnDPIScaleFactor, nOrientation, GetLineColor()); if( mpAlphaVDev ) - mpAlphaVDev->DrawWaveLine( rStartPos, rEndPos, nStyle ); + mpAlphaVDev->DrawWaveLine( rStartPos, rEndPos ); } void OutputDevice::DrawText( const Point& rStartPt, const OUString& rStr,
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits