[Libreoffice-commits] core.git: vcl/headless vcl/inc vcl/quartz

Tor Lillqvist tml at collabora.com
Wed Mar 26 02:21:05 PDT 2014


 vcl/headless/svpframe.cxx   |    6 +++
 vcl/headless/svpgdi.cxx     |   35 ++---------------
 vcl/inc/headless/svpgdi.hxx |   36 +++++++++---------
 vcl/quartz/salgdi.cxx       |   86 +-------------------------------------------
 vcl/quartz/salgdicommon.cxx |   12 ++++--
 5 files changed, 41 insertions(+), 134 deletions(-)

New commits:
commit 628b07cfc0417e87a6f2558543608aba04089d6a
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Mar 24 19:02:37 2014 +0200

    Seems we don't need any basebmp stuff in AquaSalGraphics on iOS
    
    No repeatable visible differences in TiledLibreOffice for my test
    docs.
    
    Probably we should unify the iOS vcl code even harder with the OS X
    code, get rid of the last remains of the pre-tiled-rendering basebmp
    bitmap-based stuff.
    
    Change-Id: I2484585d3d0ef5ce758d0a654717d23464464c1a

diff --git a/vcl/headless/svpframe.cxx b/vcl/headless/svpframe.cxx
index 68aa4d0..6e12d6a 100644
--- a/vcl/headless/svpframe.cxx
+++ b/vcl/headless/svpframe.cxx
@@ -170,7 +170,9 @@ void SvpSalFrame::LoseFocus()
 SalGraphics* SvpSalFrame::AcquireGraphics()
 {
     SvpSalGraphics* pGraphics = new SvpSalGraphics();
+#ifndef IOS
     pGraphics->setDevice( m_aFrame );
+#endif
     m_aGraphics.push_back( pGraphics );
     return pGraphics;
 }
@@ -293,7 +295,11 @@ void SvpSalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_u
         // update device in existing graphics
         for( std::list< SvpSalGraphics* >::iterator it = m_aGraphics.begin();
              it != m_aGraphics.end(); ++it )
+        {
+#ifndef IOS
              (*it)->setDevice( m_aFrame );
+#endif
+        }
     }
     if( m_bVisible )
         m_pInstance->PostEvent( this, NULL, SALEVENT_RESIZE );
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 4ba8ca0..e7c458c 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -88,9 +88,6 @@ bool SvpSalGraphics::drawAlphaRect( long /*nX*/, long /*nY*/, long /*nWidth*/, l
     // TODO(P3) implement alpha blending
     return false;
 }
-#endif
-
-#ifndef IOS
 
 SvpSalGraphics::SvpSalGraphics() :
     m_bUseLineColor( true ),
@@ -110,14 +107,11 @@ SvpSalGraphics::~SvpSalGraphics()
 {
 }
 
-#endif
-
 void SvpSalGraphics::setDevice( basebmp::BitmapDeviceSharedPtr& rDevice )
 {
     m_aOrigDevice = rDevice;
     ResetClipRegion();
 
-#ifndef IOS
     // determine matching bitmap format for masks
     basebmp::Format nDeviceFmt = m_aDevice->getScanlineFormat();
     switch( nDeviceFmt )
@@ -136,9 +130,10 @@ void SvpSalGraphics::setDevice( basebmp::BitmapDeviceSharedPtr& rDevice )
             m_eTextFmt = basebmp::FORMAT_ONE_BIT_LSB_GREY;
             break;
     }
-#endif
 }
 
+#endif
+
 void SvpSalGraphics::GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY )
 {
     rDPIX = rDPIY = 96;
@@ -151,8 +146,6 @@ sal_uInt16 SvpSalGraphics::GetBitCount() const
     return SvpSalBitmap::getBitCountFromScanlineFormat( m_aDevice->getScanlineFormat() );
 }
 
-#endif
-
 long SvpSalGraphics::GetGraphicsWidth() const
 {
     if( m_aDevice.get() )
@@ -163,8 +156,6 @@ long SvpSalGraphics::GetGraphicsWidth() const
     return 0;
 }
 
-#ifndef IOS
-
 void SvpSalGraphics::ResetClipRegion()
 {
     m_aDevice = m_aOrigDevice;
@@ -174,8 +165,6 @@ void SvpSalGraphics::ResetClipRegion()
 }
 
 
-#endif
-
 // verify clip for the whole area is setup
 void SvpSalGraphics::ensureClip()
 {
@@ -284,8 +273,6 @@ bool SvpSalGraphics::isClippedSetup( const basegfx::B2IBox &aRange, SvpSalGraphi
     return false;
 }
 
-#ifndef IOS
-
 // Clipping by creating unconditional mask bitmaps is horribly
 // slow so defer it, as much as possible. It is common to get
 // 3 rectangles pushed, and have to create a vast off-screen
@@ -389,7 +376,6 @@ void SvpSalGraphics::SetROPFillColor( SalROPColor nROPColor )
 }
 
 
-#ifndef IOS
 void SvpSalGraphics::drawPixel( long nX, long nY )
 {
     if( m_bUseLineColor )
@@ -562,8 +548,6 @@ bool SvpSalGraphics::drawPolyPolygon( const basegfx::B2DPolyPolygon&, double /*f
     return false;
 }
 
-#endif
-
 void SvpSalGraphics::copyArea( long nDestX,
                                       long nDestY,
                                       long nSrcX,
@@ -603,7 +587,6 @@ void SvpSalGraphics::copyBits( const SalTwoRect& rPosAry,
     dbgOut( m_aDevice );
 }
 
-#ifndef IOS
 void SvpSalGraphics::drawBitmap( const SalTwoRect& rPosAry,
                                  const SalBitmap& rSalBitmap )
 {
@@ -678,8 +661,6 @@ void SvpSalGraphics::drawMask( const SalTwoRect& rPosAry,
     dbgOut( m_aDevice );
 }
 
-#endif
-
 SalBitmap* SvpSalGraphics::getBitmap( long nX, long nY, long nWidth, long nHeight )
 {
     basebmp::BitmapDeviceSharedPtr aCopy =
@@ -697,16 +678,12 @@ SalBitmap* SvpSalGraphics::getBitmap( long nX, long nY, long nWidth, long nHeigh
     return pBitmap;
 }
 
-#endif
-
 SalColor SvpSalGraphics::getPixel( long nX, long nY )
 {
     basebmp::Color aColor( m_aOrigDevice->getPixel( basegfx::B2IPoint( nX, nY ) ) );
     return aColor.toInt32();
 }
 
-#ifndef IOS
-
 void SvpSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInvert /*nFlags*/ )
 {
     // FIXME: handle SAL_INVERT_50 and SAL_INVERT_TRACKFRAME
@@ -740,13 +717,13 @@ bool SvpSalGraphics::drawEPS( long, long, long, long, void*, sal_uLong )
     return false;
 }
 
+#ifndef IOS
+
 SystemGraphicsData SvpSalGraphics::GetGraphicsData() const
 {
     return SystemGraphicsData();
 }
 
-#ifndef IOS
-
 bool SvpSalGraphics::supportsOperation( OutDevSupportType ) const
 {
     return false;
@@ -756,10 +733,8 @@ bool SvpSalGraphics::supportsOperation( OutDevSupportType ) const
 
 #ifdef IOS
 
-void  SvpSalGraphics::RefreshRect(float lX, float lY, float lWidth, float lHeight)
+void  SvpSalGraphics::RefreshRect(float /* lX */, float /* lY */, float /* lWidth */, float /* lHeight */)
 {
-    if (m_aDevice && m_aDevice->getDamageTracker() != NULL)
-        m_aDevice->getDamageTracker()->damaged(basegfx::B2IBox( basegfx::fround(lX), basegfx::fround(lY), basegfx::fround(lX + lWidth), basegfx::fround(lY + lHeight)));
 }
 
 #endif
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index 18cb71a..fdcd5ea 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -47,10 +47,12 @@ class ServerFont;
 
 class SvpSalGraphics : public SalGraphics
 {
+#ifndef IOS
     basebmp::BitmapDeviceSharedPtr       m_aDevice;
     basebmp::BitmapDeviceSharedPtr       m_aOrigDevice;
 
-#ifndef IOS
+    basebmp::BitmapDeviceSharedPtr       m_aClipMap;
+
     bool                                 m_bUseLineColor;
     basebmp::Color                       m_aLineColor;
     bool                                 m_bUseFillColor;
@@ -63,6 +65,22 @@ class SvpSalGraphics : public SalGraphics
     basebmp::Color                       m_aTextColor;
     ServerFont*                          m_pServerFont[ MAX_FALLBACK ];
     basebmp::Format                      m_eTextFmt;
+
+protected:
+    basegfx::B2IVector                   GetSize() { return m_aOrigDevice->getSize(); }
+
+private:
+    bool                                 m_bClipSetup;
+    struct ClipUndoHandle {
+        SvpSalGraphics                &m_rGfx;
+        basebmp::BitmapDeviceSharedPtr m_aDevice;
+        ClipUndoHandle( SvpSalGraphics *pGfx ) : m_rGfx( *pGfx ) {}
+        ~ClipUndoHandle();
+    };
+
+public:
+    void setDevice( basebmp::BitmapDeviceSharedPtr& rDevice );
+
 #else
     friend class CTLayout;
 
@@ -98,22 +116,8 @@ class SvpSalGraphics : public SalGraphics
     bool                                    mbVirDev;
 #endif
 
-    basebmp::BitmapDeviceSharedPtr       m_aClipMap;
-
 protected:
     Region                               m_aClipRegion;
-    basegfx::B2IVector                   GetSize() { return m_aOrigDevice->getSize(); }
-
-private:
-    bool                                 m_bClipSetup;
-    struct ClipUndoHandle {
-        SvpSalGraphics                &m_rGfx;
-        basebmp::BitmapDeviceSharedPtr m_aDevice;
-        ClipUndoHandle( SvpSalGraphics *pGfx ) : m_rGfx( *pGfx ) {}
-        ~ClipUndoHandle();
-    };
-    bool isClippedSetup( const basegfx::B2IBox &aRange, ClipUndoHandle &rUndo );
-    void ensureClip();
 
 protected:
     virtual bool drawAlphaBitmap( const SalTwoRect&, const SalBitmap& rSourceBitmap, const SalBitmap& rAlphaBitmap );
@@ -129,8 +133,6 @@ public:
     SvpSalGraphics();
     virtual ~SvpSalGraphics();
 
-    void setDevice( basebmp::BitmapDeviceSharedPtr& rDevice );
-
     virtual void            GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY );
     virtual sal_uInt16      GetBitCount() const;
     virtual long            GetGraphicsWidth() const;
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index 4579729..916926d 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -830,91 +830,9 @@ bool SvpSalGraphics::CheckContext()
         return true;
     }
 
-    if(m_aDevice == NULL) // fix tiledrendering crash when changing content size
-    {
-        SAL_INFO( "vcl.ios", "CheckContext() this=" << this << ",  m_aDevice==NULL, return false");
-        return false;
-    }
-
-    const basegfx::B2IVector size = m_aDevice->getSize();
-    const basegfx::B2IVector bufferSize = m_aDevice->getBufferSize();
-    const sal_Int32 scanlineStride = m_aDevice->getScanlineStride();
-    basebmp::RawMemorySharedArray pixelBuffer = m_aDevice->getBuffer();
-    bool warned = false;
-
-    SAL_INFO( "vcl.ios",
-              "CheckContext: device=" << m_aDevice.get() <<
-              " size=" << size.getX() << "x" << size.getY() <<
-              (m_aDevice->isTopDown() ? " top-down" : " bottom-up") <<
-              " stride=" << scanlineStride <<
-              " bufferSize=(" << bufferSize.getX() << "," << bufferSize.getY() << ")" );
-
-    switch( m_aDevice->getScanlineFormat() ) {
-    case basebmp::FORMAT_EIGHT_BIT_PAL:
-        mrContext = CGBitmapContextCreate(pixelBuffer.get(),
-                                          bufferSize.getX(), bufferSize.getY(),
-                                          8, scanlineStride,
-                                          CGColorSpaceCreateDeviceGray(),
-                                          kCGImageAlphaNone);
-        break;
-    case basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_RGBA:
-    case basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_ARGB:
-    case basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_ABGR:
-    case basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA:
-        mrContext = CGBitmapContextCreate(pixelBuffer.get(),
-                                          bufferSize.getX(), bufferSize.getY(),
-                                          8, scanlineStride,
-                                          CGColorSpaceCreateDeviceRGB(),
-                                          kCGImageAlphaNoneSkipFirst);//kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Little);
-        break;
-    default:
-        SAL_WARN( "vcl.ios", "CheckContext: unsupported color format " << basebmp::formatName( m_aDevice->getScanlineFormat() ) );
-        warned = true;
-    }
-
-    SAL_WARN_IF( mrContext == NULL && !warned, "vcl.ios", "CheckContext: CGBitmapContextCreate() failed" );
-
-    // Should we also clip the context? (Then we need to add a
-    // getBounds() function to BitmapDevice.)
-
-    if( mrContext != NULL && m_aDevice->isTopDown() )
-    {
-        CGContextTranslateCTM( mrContext, 0, bufferSize.getY() );
-        CGContextScaleCTM( mrContext, 1, -1 );
-    }
-
-
-    if (mrContext)
-    {
-        RectangleVector aRectangles;
-        m_aClipRegion.GetRegionRectangles(aRectangles);
-
-        CGContextBeginPath( mrContext );
-
-        for(RectangleVector::const_iterator aRectIter(aRectangles.begin()); aRectIter != aRectangles.end(); ++aRectIter)
-        {
-            const long nW(aRectIter->Right() - aRectIter->Left() + 1); // uses +1 logic in original
-
-            if(nW)
-            {
-                const long nH(aRectIter->Bottom() - aRectIter->Top() + 1); // uses +1 logic in original
-
-                if(nH)
-                {
-                    CGRect aRect = {{ (CGFloat) aRectIter->Left(), (CGFloat) aRectIter->Top() }, { (CGFloat) nW, (CGFloat) nH }};
-                    CGContextAddRect( mrContext, aRect );
-                }
-            }
-        }
-
-        if (!CGContextIsPathEmpty(mrContext))
-            CGContextClip(mrContext);
-    }
-
-
-    SAL_INFO( "vcl.ios", "CheckContext: context=" << mrContext );
+    SAL_INFO( "vcl.ios", "CheckContext() this=" << this << ",  not foreign, return false");
+    return false;
 
-    return ( mrContext != NULL );
 }
 
 CGContextRef SvpSalGraphics::GetContext()
diff --git a/vcl/quartz/salgdicommon.cxx b/vcl/quartz/salgdicommon.cxx
index d923cc6..8d4b035 100644
--- a/vcl/quartz/salgdicommon.cxx
+++ b/vcl/quartz/salgdicommon.cxx
@@ -1175,8 +1175,6 @@ SalBitmap* AquaSalGraphics::getBitmap( long  nX, long  nY, long  nDX, long  nDY
     return pBitmap;
 }
 
-#ifndef IOS
-
 SystemGraphicsData AquaSalGraphics::GetGraphicsData() const
 {
     SystemGraphicsData aRes;
@@ -1188,11 +1186,16 @@ SystemGraphicsData AquaSalGraphics::GetGraphicsData() const
 long AquaSalGraphics::GetGraphicsWidth() const
 {
     long w = 0;
-    if( mrContext && (mbWindow || mbVirDev) )
+    if( mrContext && (
+#ifndef IOS
+                      mbWindow ||
+#endif
+                      mbVirDev) )
     {
         w = mnWidth;
     }
 
+#ifndef IOS
     if( w == 0 )
     {
         if( mbWindow && mpFrame )
@@ -1200,6 +1203,7 @@ long AquaSalGraphics::GetGraphicsWidth() const
             w = mpFrame->maGeometry.nWidth;
         }
     }
+#endif
     return w;
 }
 
@@ -1242,6 +1246,8 @@ SalColor AquaSalGraphics::getPixel( long nX, long nY )
     return nSalColor;
 }
 
+#ifndef IOS
+
 void AquaSalGraphics::GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY )
 {
     if( !mnRealDPIY )


More information about the Libreoffice-commits mailing list