[libreoffice] fix up patch

Caolan McNamara caolanm at fedoraproject.org
Tue Mar 29 14:07:14 UTC 2011


commit 519194a1372657a15203806ad7e0bc5149868448
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Mar 29 15:07:07 2011 +0100

    fix up patch

 ...bz-684580-X-and-strike-through-escapes-ra.patch |   57 ++++++++------------
 1 files changed, 22 insertions(+), 35 deletions(-)
---
diff --git a/0001-Resolves-rhbz-684580-X-and-strike-through-escapes-ra.patch b/0001-Resolves-rhbz-684580-X-and-strike-through-escapes-ra.patch
index 85c3dec..52b46da 100644
--- a/0001-Resolves-rhbz-684580-X-and-strike-through-escapes-ra.patch
+++ b/0001-Resolves-rhbz-684580-X-and-strike-through-escapes-ra.patch
@@ -13,7 +13,7 @@ diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
 index 02febe3..d43c163 100644
 --- a/vcl/source/gdi/outdev3.cxx
 +++ b/vcl/source/gdi/outdev3.cxx
-@@ -4005,6 +4005,11 @@ void OutputDevice::ImplDrawStrikeoutChar( long nBaseX, long nBaseY,
+@@ -3967,6 +3967,11 @@
                                            FontStrikeout eStrikeout,
                                            Color aColor )
  {
@@ -25,50 +25,37 @@ index 02febe3..d43c163 100644
      // PDF-export does its own strikeout drawing... why again?
      if( mpPDFWriter && mpPDFWriter->isBuiltinFont(mpFontEntry->maFontSelData.mpFontData) )
          return;
-@@ -4017,35 +4022,23 @@ void OutputDevice::ImplDrawStrikeoutChar( long nBaseX, long nBaseY,
-         cStrikeoutChar = 'X';
-     static const int nTestStrLen = 4;
-     static const int nMaxStrikeStrLen = 2048;
--    xub_Unicode aChars[ nMaxStrikeStrLen +1]; // +1 for valgrind...
-+    xub_Unicode aChars[nMaxStrikeStrLen+1]; // +1 for valgrind...
-     for( int i = 0; i < nTestStrLen; ++i)
+@@ -3984,25 +3989,7 @@
          aChars[i] = cStrikeoutChar;
      const String aStrikeoutTest( aChars, nTestStrLen );
  
-     // calculate approximation of strikeout atom size
+-    // calculate approximation of strikeout atom size
 -    long nStrikeoutWidth = nWidth;
-+    long nStrikeoutWidth = 0;
-     SalLayout* pLayout = ImplLayout( aStrikeoutTest, 0, nTestStrLen );
-     if( pLayout )
-     {
+-    SalLayout* pLayout = ImplLayout( aStrikeoutTest, 0, nTestStrLen );
+-    if( pLayout )
+-    {
 -        nStrikeoutWidth = (pLayout->GetTextWidth() +nTestStrLen/2) / (nTestStrLen * pLayout->GetUnitsPerPixel());        
-+        nStrikeoutWidth = pLayout->GetTextWidth() / (nTestStrLen * pLayout->GetUnitsPerPixel());
-         pLayout->Release();
-     }
-     if( nStrikeoutWidth <= 0 ) // sanity check
-         return;
- 
+-        pLayout->Release();
+-    }
+-    if( nStrikeoutWidth <= 0 ) // sanity check
+-        return;
+-
 -    // calculate acceptable strikeout length
 -    // allow the strikeout to be one pixel larger than the text it strikes out
--    long nMaxWidth = nStrikeoutWidth * 3 / 4;
+-    long nMaxWidth = nStrikeoutWidth / 2;
 -    if ( nMaxWidth < 2 )
 -        nMaxWidth = 2;
 -    nMaxWidth += nWidth + 1;
 -
--    int nStrikeStrLen = (nMaxWidth - 1) / nStrikeoutWidth;
--    // if the text width is smaller than the strikeout text, then do not
--    // strike out at all. This case requires user interaction, e.g. adding
--    // a space to the text
--    if( nStrikeStrLen <= 0 )
--        return;
+-    int nStrikeStrLen = (nMaxWidth + nStrikeoutWidth - 1) / nStrikeoutWidth;
 +    int nStrikeStrLen = (nWidth+(nStrikeoutWidth-1)) / nStrikeoutWidth;
-     if( nStrikeStrLen > nMaxStrikeStrLen )
-         nStrikeStrLen = nMaxStrikeStrLen;
- 
-@@ -4074,8 +4067,29 @@ void OutputDevice::ImplDrawStrikeoutChar( long nBaseX, long nBaseY,
+     // if the text width is smaller than the strikeout text, then do not
+     // strike out at all. This case requires user interaction, e.g. adding
+     // a space to the text
+@@ -4034,8 +4021,28 @@
      ImplInitTextColor();
  
-     pLayout->DrawBase() = Point( nBaseX+mnTextOffX, nBaseY+mnTextOffY );
+     pLayout->DrawBase() = Point( nX+mnTextOffX, nY+mnTextOffY );
 +
 +    Rectangle aPixelRect;
 +    aPixelRect.nLeft = nBaseX+mnTextOffX;
@@ -89,7 +76,6 @@ index 02febe3..d43c163 100644
 +        ImplInitClipRegion();
 +
      pLayout->DrawText( *mpGraphics );
-+
      pLayout->Release();
 +    Pop();
  
@@ -99,7 +85,7 @@ diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.c
 index 442a25d..485dad3 100644
 --- a/vcl/source/gdi/pdfwriter_impl.cxx
 +++ b/vcl/source/gdi/pdfwriter_impl.cxx
-@@ -8264,6 +8264,9 @@ void PDFWriterImpl::drawStrikeoutLine( OStringBuffer& aLine, long nWidth, FontSt
+@@ -8223,6 +8223,9 @@
  
  void PDFWriterImpl::drawStrikeoutChar( const Point& rPos, long nWidth, FontStrikeout eStrikeout )
  {
@@ -109,9 +95,9 @@ index 442a25d..485dad3 100644
      String aStrikeoutChar = String::CreateFromAscii( eStrikeout == STRIKEOUT_SLASH ? "/" : "X" );
      String aStrikeout = aStrikeoutChar;
      while( m_pReferenceDevice->GetTextWidth( aStrikeout ) < nWidth )
-@@ -8285,7 +8288,27 @@ void PDFWriterImpl::drawStrikeoutChar( const Point& rPos, long nWidth, FontStrik
+@@ -8244,7 +8247,28 @@
      // strikeout string is left aligned non-CTL text
-     sal_uLong nOrigTLM = m_pReferenceDevice->GetLayoutMode();
+     ULONG nOrigTLM = m_pReferenceDevice->GetLayoutMode();
      m_pReferenceDevice->SetLayoutMode( TEXT_LAYOUT_BIDI_STRONG|TEXT_LAYOUT_COMPLEX_DISABLED );
 +
 +    push( PUSH_CLIPREGION );
@@ -131,6 +117,7 @@ index 442a25d..485dad3 100644
 +    }
 +
 +    intersectClipRegion( aRect );
++
      drawText( rPos, aStrikeout, 0, aStrikeout.Len(), false );
 +    pop();
 +


More information about the scm-commits mailing list