[ooo-build-commit] Branch 'ooo/OOO310' - 2 commits - vcl/aqua vcl/source vcl/unx vcl/workben

Jan Holesovsky kendy at kemper.freedesktop.org
Tue Jun 30 18:15:46 PDT 2009


 vcl/aqua/inc/salframeview.h            |    1 
 vcl/aqua/source/window/salframe.cxx    |   12 ++++++--
 vcl/aqua/source/window/salframeview.mm |   12 ++++++--
 vcl/source/gdi/pdfwriter_impl.cxx      |   48 ++++++++++++++++++++++++++++-----
 vcl/unx/headless/svpgdi.cxx            |    6 ++--
 vcl/unx/headless/svpvd.cxx             |    4 ++
 vcl/workben/makefile.mk                |    1 
 vcl/workben/svpclient.cxx              |   47 ++++++++++++++++++++++++++++++--
 8 files changed, 113 insertions(+), 18 deletions(-)

New commits:
commit 3f857956f4a51c50090faec553f324f21cc7a423
Author: Kurt Zenker <kz at openoffice.org>
Date:   Tue Jun 30 16:19:56 2009 +0000

    CWS-TOOLING: integrate CWS ooo311gsl04
    2009-06-25 18:59:25 +0200 pl  r273391 : add forgotten patch flags for cws: ooo311gsl01,ooo311gsl02,ooo311gsl03,ooo311gsl04,svp02,c28v001
    2009-06-25 18:05:10 +0200 pl  r273388 : CWS-TOOLING: rebase CWS ooo311gsl04 to branches/OOO310 at 272865 (milestone: OOO310:m13)
    2009-06-15 16:57:19 +0200 pl  r273001 : #i98804# check for nil
    2009-06-11 07:14:52 +0200 hdu  r272842 : #i102603# make rotated+shuffled text export work again

diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 6f2a69a..51f2a60 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -795,7 +795,8 @@ static void appendNonStrokingColor( const Color& rColor, OStringBuffer& rBuffer
 }
 
 // matrix helper class
-namespace vcl
+// TODO: use basegfx matrix class instead or derive from it
+namespace vcl // TODO: use anonymous namespace to keep this class local
 {
 /*	for sparse matrices of the form (2D linear transformations)
  *  f[0] f[1] 0
@@ -815,6 +816,7 @@ public:
     void scale( double sx, double sy );
     void rotate( double angle );
     void translate( double tx, double ty );
+    bool invert();
 
     void append( PDFWriterImpl::PDFPage& rPage, OStringBuffer& rBuffer, Point* pBack = NULL );
 
@@ -891,6 +893,36 @@ void Matrix3::translate( double tx, double ty )
     f[5] += ty;
 }
 
+bool Matrix3::invert()
+{
+    // short circuit trivial cases
+    if( f[1]==f[2] && f[1]==0.0 && f[0]==f[3] && f[0]==1.0 )
+    {
+        f[4] = -f[4];
+        f[5] = -f[5];
+        return true;
+    }
+
+    // check determinant
+    const double fDet = f[0]*f[3]-f[1]*f[2];
+    if( fDet == 0.0 )
+        return false;
+
+    // invert the matrix
+    double fn[6];
+    fn[0] = +f[3] / fDet;
+    fn[1] = -f[1] / fDet;
+    fn[2] = -f[2] / fDet;
+    fn[3] = +f[0] / fDet;
+
+    // apply inversion to translation
+    fn[4] = -(f[4]*fn[0] + f[5]*fn[2]);
+    fn[5] = -(f[4]*fn[1] + f[5]*fn[3]);
+
+    set( fn );
+    return true;
+}
+
 void Matrix3::append( PDFWriterImpl::PDFPage& rPage, OStringBuffer& rBuffer, Point* pBack )
 {
     appendDouble( f[0], rBuffer );
@@ -6644,6 +6676,7 @@ void PDFWriterImpl::drawHorizontalGlyphs(
         // subsequent use of that operator would move
         // the texline matrix relative to what was set before
         // making use of that would drive us into rounding issues
+        Matrix3 aMat;
         if( nRun == 0 && fAngle == 0.0 && fXScale == 1.0 && fSkew == 0.0 )
         {
             m_aPages.back().appendPoint( aCurPos, rLine, false );
@@ -6651,7 +6684,6 @@ void PDFWriterImpl::drawHorizontalGlyphs(
         }
         else
         {
-            Matrix3 aMat;
             if( fSkew != 0.0 )
                 aMat.skew( 0.0, fSkew );
             aMat.scale( fXScale, 1.0 );
@@ -6674,15 +6706,17 @@ void PDFWriterImpl::drawHorizontalGlyphs(
         appendHex( rGlyphs[nBeginRun].m_nMappedGlyphId, aKernedLine );
         appendHex( rGlyphs[nBeginRun].m_nMappedGlyphId, aUnkernedLine );
 
+        aMat.invert();
         bool bNeedKern = false;
         for( sal_uInt32 nPos = nBeginRun+1; nPos < aRunEnds[nRun]; nPos++ )
         {
             appendHex( rGlyphs[nPos].m_nMappedGlyphId, aUnkernedLine );
-            // check for adjustment
-            double fTheoreticalGlyphWidth = rGlyphs[nPos].m_aPos.X() - rGlyphs[nPos-1].m_aPos.X();
-            fTheoreticalGlyphWidth = fabs( fTheoreticalGlyphWidth ); // #i100522# workaround until #i87686# gets fixed
-            fTheoreticalGlyphWidth = 1000.0 * fTheoreticalGlyphWidth / fXScale / double(nPixelFontHeight);
-            sal_Int32 nAdjustment = rGlyphs[nPos-1].m_nNativeWidth - sal_Int32(fTheoreticalGlyphWidth+0.5);
+            // check if glyph advance matches with the width of the previous glyph, else adjust
+            const Point aThisPos = aMat.transform( rGlyphs[nPos].m_aPos );
+            const Point aPrevPos = aMat.transform( rGlyphs[nPos-1].m_aPos );
+            double fAdvance = aThisPos.X() - aPrevPos.X();
+            fAdvance *= 1000.0 / (fXScale * nPixelFontHeight);
+            const sal_Int32 nAdjustment = rGlyphs[nPos-1].m_nNativeWidth - sal_Int32(fAdvance+0.5);
             if( nAdjustment != 0 )
             {
                 bNeedKern = true;
commit 076bf62041927eedfa3f0eb543b19ff86c5af775
Author: Kurt Zenker <kz at openoffice.org>
Date:   Tue Jun 30 15:25:06 2009 +0000

    CWS-TOOLING: integrate CWS ooo311gsl03
    2009-06-08 19:08:54 +0200 pl  r272745 : #159965# add missing link dependency
    2009-06-08 18:14:12 +0200 pl  r272743 : #159965# join svp02, fix copyArea, copyBits and getBitmap from subsetted devices
    2009-06-05 14:55:00 +0200 pl  r272689 : #i101082# adjust GetClientSize to behavior on other platforms
    2009-06-04 20:21:35 +0200 pl  r272658 : #i96031# try key event if special key codes fail

diff --git a/vcl/aqua/inc/salframeview.h b/vcl/aqua/inc/salframeview.h
index e159152..4a26dab 100755
--- a/vcl/aqua/inc/salframeview.h
+++ b/vcl/aqua/inc/salframeview.h
@@ -108,6 +108,7 @@
 -(void)sendMouseEventToFrame:(NSEvent*)pEvent button:(USHORT)nButton eventtype:(USHORT)nEvent;
 -(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar;
 -(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar modifiers: (unsigned int)nMod;
+-(MacOSBOOL)sendKeyToFrameDirect: (USHORT)nKeyCode character: (sal_Unicode)aChar modifiers: (unsigned int)nMod;
 -(MacOSBOOL)sendSingleCharacter:(NSEvent*)pEvent;
 -(MacOSBOOL)handleKeyDownException:(NSEvent*)pEvent;
 /*
diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx
index d4a4223..9d4112c 100644
--- a/vcl/aqua/source/window/salframe.cxx
+++ b/vcl/aqua/source/window/salframe.cxx
@@ -520,8 +520,16 @@ void AquaSalFrame::SetClientSize( long nWidth, long nHeight )
 
 void AquaSalFrame::GetClientSize( long& rWidth, long& rHeight )
 {
-    rWidth  = mbShown ? maGeometry.nWidth : 0;
-    rHeight = mbShown ? maGeometry.nHeight : 0;
+    if( mbShown || mbInitShow )
+    {
+        rWidth  = maGeometry.nWidth;
+        rHeight = maGeometry.nHeight;
+    }
+    else
+    {
+        rWidth  = 0;
+        rHeight = 0;
+    }
 }
 
 // -----------------------------------------------------------------------
diff --git a/vcl/aqua/source/window/salframeview.mm b/vcl/aqua/source/window/salframeview.mm
index 7de43d7..a6213ca 100755
--- a/vcl/aqua/source/window/salframeview.mm
+++ b/vcl/aqua/source/window/salframeview.mm
@@ -1242,12 +1242,18 @@ private:
     }
 }
 
--(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode  character: (sal_Unicode)aChar
+-(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar
 {
     return [self sendKeyInputAndReleaseToFrame: nKeyCode character: aChar modifiers: mpFrame->mnLastModifierFlags];
 }
 
--(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode  character: (sal_Unicode)aChar modifiers: (unsigned int)nMod
+-(MacOSBOOL)sendKeyInputAndReleaseToFrame: (USHORT)nKeyCode character: (sal_Unicode)aChar modifiers: (unsigned int)nMod
+{
+    return [self sendKeyToFrameDirect: nKeyCode character: aChar modifiers: nMod] ||
+           [self sendSingleCharacter: mpLastEvent];
+}
+
+-(MacOSBOOL)sendKeyToFrameDirect: (USHORT)nKeyCode  character: (sal_Unicode)aChar modifiers: (unsigned int)nMod
 {
     YIELD_GUARD;
     
@@ -1283,7 +1289,7 @@ private:
             // don't send unicodes in the private use area
             if( keyChar >= 0xf700 && keyChar < 0xf780 )
                 keyChar = 0;
-            MacOSBOOL bRet = [self sendKeyInputAndReleaseToFrame: nKeyCode character: keyChar];
+            MacOSBOOL bRet = [self sendKeyToFrameDirect: nKeyCode character: keyChar modifiers: mpFrame->mnLastModifierFlags];
             mbInKeyInput = false;
 
             return bRet;
diff --git a/vcl/unx/headless/svpgdi.cxx b/vcl/unx/headless/svpgdi.cxx
index 41cc7b4..7a239ae 100644
--- a/vcl/unx/headless/svpgdi.cxx
+++ b/vcl/unx/headless/svpgdi.cxx
@@ -429,7 +429,7 @@ void SvpSalGraphics::copyArea( long nDestX,
 {
     B2IRange aSrcRect( nSrcX, nSrcY, nSrcX+nSrcWidth, nSrcY+nSrcHeight );
     B2IRange aDestRect( nDestX, nDestY, nDestX+nSrcWidth, nDestY+nSrcHeight );
-    m_aDevice->drawBitmap( m_aDevice, aSrcRect, aDestRect, DrawMode_PAINT, m_aClipMap );
+    m_aDevice->drawBitmap( m_aOrigDevice, aSrcRect, aDestRect, DrawMode_PAINT, m_aClipMap );
     dbgOut( m_aDevice );
 }
 
@@ -444,7 +444,7 @@ void SvpSalGraphics::copyBits( const SalTwoRect* pPosAry,
     B2IRange aDestRect( pPosAry->mnDestX, pPosAry->mnDestY,
                         pPosAry->mnDestX+pPosAry->mnDestWidth,
                         pPosAry->mnDestY+pPosAry->mnDestHeight );
-    m_aDevice->drawBitmap( pSrc->m_aDevice, aSrcRect, aDestRect, DrawMode_PAINT, m_aClipMap );    
+    m_aDevice->drawBitmap( pSrc->m_aOrigDevice, aSrcRect, aDestRect, DrawMode_PAINT, m_aClipMap );    
     dbgOut( m_aDevice );
 }
 
@@ -519,7 +519,7 @@ SalBitmap* SvpSalGraphics::getBitmap( long nX, long nY, long nWidth, long nHeigh
                            m_aDevice );
     B2IRange aSrcRect( nX, nY, nX+nWidth, nY+nHeight );
     B2IRange aDestRect( 0, 0, nWidth, nHeight );
-    aCopy->drawBitmap( m_aDevice, aSrcRect, aDestRect, DrawMode_PAINT );
+    aCopy->drawBitmap( m_aOrigDevice, aSrcRect, aDestRect, DrawMode_PAINT );
 
     SvpSalBitmap* pBitmap = new SvpSalBitmap();
     pBitmap->setBitmap( aCopy );
diff --git a/vcl/unx/headless/svpvd.cxx b/vcl/unx/headless/svpvd.cxx
index bd8ef08..63e0cf8 100644
--- a/vcl/unx/headless/svpvd.cxx
+++ b/vcl/unx/headless/svpvd.cxx
@@ -34,6 +34,8 @@
 #include <basegfx/vector/b2ivector.hxx>
 #include <basebmp/scanlineformats.hxx>
 
+#include "stdio.h"
+
 using namespace basegfx;
 using namespace basebmp;
 
@@ -80,6 +82,7 @@ BOOL SvpSalVirtualDevice::SetSize( long nNewDX, long nNewDY )
 #else
             case 16: nFormat = Format::SIXTEEN_BIT_LSB_TC_MASK; break;
 #endif
+            case 0:
             case 24: nFormat = Format::TWENTYFOUR_BIT_TC_MASK; break;
             case 32: nFormat = Format::THIRTYTWO_BIT_TC_MASK; break;
         }
@@ -90,6 +93,7 @@ BOOL SvpSalVirtualDevice::SetSize( long nNewDX, long nNewDY )
         for( std::list< SvpSalGraphics* >::iterator it = m_aGraphics.begin();
              it != m_aGraphics.end(); ++it )
              (*it)->setDevice( m_aDevice );
+             
     }
     return true;
 }
diff --git a/vcl/workben/makefile.mk b/vcl/workben/makefile.mk
index 82edf86..44942ca 100644
--- a/vcl/workben/makefile.mk
+++ b/vcl/workben/makefile.mk
@@ -125,6 +125,7 @@ APP5OBJS=               $(OBJ)$/svpclient.obj
 APP5STDLIBS=    $(CPPULIB)                      \
                                 $(CPPUHELPERLIB)        \
                                 $(COMPHELPERLIB)        \
+                                $(UCBHELPERLIB)        \
                                 $(VCLLIB)                       \
                                 $(TOOLSLIB)             \
                                 $(SALLIB)                       \
diff --git a/vcl/workben/svpclient.cxx b/vcl/workben/svpclient.cxx
index 67fadc6..6e205b7 100644
--- a/vcl/workben/svpclient.cxx
+++ b/vcl/workben/svpclient.cxx
@@ -50,6 +50,8 @@
 #include <comphelper/processfactory.hxx>
 #include <cppuhelper/servicefactory.hxx>
 #include <cppuhelper/bootstrap.hxx>
+#include "ucbhelper/contentbroker.hxx"
+#include "ucbhelper/configurationkeys.hxx"
 
 #include <errno.h>
 #include <unistd.h>
@@ -60,6 +62,8 @@
 
 
 using namespace rtl;
+using namespace cppu;
+using namespace comphelper;
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::lang;
 // -----------------------------------------------------------------------
@@ -73,10 +77,47 @@ SAL_IMPLEMENT_MAIN()
 {
     tools::extendApplicationEnvironment();
 
-    Reference< XMultiServiceFactory > xMS;
-    xMS = cppu::createRegistryServiceFactory( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "applicat.rdb" ) ), sal_True );
+    //-------------------------------------------------
+    // create the global service-manager
+    //-------------------------------------------------
+    Reference< XMultiServiceFactory > xFactory;
+    try
+    {
+        Reference< XComponentContext > xCtx = defaultBootstrap_InitialComponentContext();
+        xFactory = Reference< XMultiServiceFactory >(  xCtx->getServiceManager(), UNO_QUERY );
+        if( xFactory.is() )
+            setProcessServiceFactory( xFactory );
+    }
+    catch( com::sun::star::uno::Exception& rExc)
+    {
+    }
+    
+    if( ! xFactory.is() )
+    {
+        fprintf( stderr, "Could not bootstrap UNO, installation must be in disorder. Exiting.\n" );
+        exit( 1 );
+    }
+
+    /*
+     *	Create UCB.
+     */
+    Sequence< Any > aArgs( 2 );
+    aArgs[ 0 ] <<= OUString::createFromAscii( UCB_CONFIGURATION_KEY1_LOCAL );
+    aArgs[ 1 ] <<= OUString::createFromAscii( UCB_CONFIGURATION_KEY2_OFFICE );
+#if OSL_DEBUG_LEVEL > 1
+    sal_Bool bSuccess =
+#endif
+        ::ucbhelper::ContentBroker::initialize( xFactory, aArgs );
+
+#if OSL_DEBUG_LEVEL > 1
+    if ( !bSuccess )
+    {
+        fprintf( stderr, "Error creating UCB, installation must be in disorder. Exiting.\n" );
+        exit( 1 );
+    }
+#endif
 
-    InitVCL( xMS );
+    InitVCL( xFactory );
     ::Main();
     DeInitVCL();
 


More information about the ooo-build-commit mailing list