ios/MobileLibreOffice/MobileLibreOffice.xcodeproj/project.pbxproj  |    2 
 ios/experimental/LibreOffice/LibreOffice.xcodeproj/project.pbxproj |    6 
 sw/source/core/view/viewsh.cxx                                     |   27 
 vcl/Library_vcl.mk                                                 |    4 
 vcl/headless/svpgdi.cxx                                            |    8 
 vcl/headless/svpinst.cxx                                           |   28 
 vcl/inc/headless/svpframe.hxx                                      |    1 
 vcl/inc/headless/svpgdi.hxx                                        |   75 ++
 vcl/inc/headless/svpinst.hxx                                       |    4 
 vcl/inc/osx/saldata.hxx                                            |    6 
 vcl/inc/osx/salinst.h                                              |    3 
 vcl/inc/osx/salvd.h                                                |   85 --
 vcl/inc/quartz/salbmp.h                                            |    2 
 vcl/inc/quartz/salvd.h                                             |   69 ++
 vcl/inc/saldatabasic.hxx                                           |    3 
 vcl/ios/iosinst.cxx                                                |    4 
 vcl/osx/salinst.cxx                                                |    2 
 vcl/osx/salvd.cxx                                                  |  261 
---------
 vcl/quartz/salbmp.cxx                                              |    6 
 vcl/quartz/salgdi.cxx                                              |   33 -
 vcl/quartz/salgdicommon.cxx                                        |   92 ++-
 vcl/quartz/salvd.cxx                                               |  284 
++++++++++
 22 files changed, 562 insertions(+), 443 deletions(-)

New commits:
commit 6265876ae9f1bb862440182d2d2c9b9b5b322668
Author: Tor Lillqvist <t...@collabora.com>
Date:   Mon Dec 9 21:53:23 2013 +0200

    iOS tiled rendering work
    
    Possibly quite broken intermediate commit. But anyway, now it is
    possible to render the tile diretly to a CGContext. Can be seen in
    the MobileLibreOffice app when build in the Debug_tile_tester
    configuration. See touch_lo_draw_tile() in viewsh.cxx. Unfortunately
    the old plain LibreOffice test app is now broken, though, and
    displays nothing at all.
    
    This refactoring and hacking in vcl was done in a quite ugly fashion,
    with ifdefs etc. But trust me, I did try, several times, for many
    days, to get where I wanted in an elegant and clean fashion. But doing
    it cleanly meant not being able to actually build it for days while
    trying to figure ut which bits go where and which class should be
    split into what base and derived class(es), and it was too much for my
    limited brain capacity. I just couldn't juggle all the vcl class
    structure in my head, especially as I don't have any good
    understanding of the general design of it all.
    
    Change-Id: Ia59d6a9cce15a63e63f94e8d8574bef21993fb1f

diff --git a/ios/MobileLibreOffice/MobileLibreOffice.xcodeproj/project.pbxproj 
b/ios/MobileLibreOffice/MobileLibreOffice.xcodeproj/project.pbxproj
index 858beb7..ce34006 100644
--- a/ios/MobileLibreOffice/MobileLibreOffice.xcodeproj/project.pbxproj
+++ b/ios/MobileLibreOffice/MobileLibreOffice.xcodeproj/project.pbxproj
@@ -268,6 +268,7 @@
                BE82BE4D1822D10F00A447B5 /* ctlayout.cxx */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ctlayout.cxx; 
path = ../../vcl/quartz/ctlayout.cxx; sourceTree = "<group>"; };
                BE82BE4E1822D10F00A447B5 /* salgdi.cxx */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salgdi.cxx; 
path = ../../vcl/quartz/salgdi.cxx; sourceTree = "<group>"; };
                BEC9DABC1858BA39009CCCB3 /* svdpagv.cxx */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = svdpagv.cxx; 
path = ../../svx/source/svdraw/svdpagv.cxx; sourceTree = "<group>"; };
+               BEDB0EFB185A05BE009A6F26 /* salvd.cxx */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salvd.cxx; 
path = ../../vcl/quartz/salvd.cxx; sourceTree = "<group>"; };
                BEE68B5D185715EE0049ECE0 /* salbmp.cxx */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = salbmp.cxx; 
path = ../../vcl/quartz/salbmp.cxx; sourceTree = "<group>"; };
                BEE68B5E185715EE0049ECE0 /* salgdicommon.cxx */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = 
salgdicommon.cxx; path = ../../vcl/quartz/salgdicommon.cxx; sourceTree = 
"<group>"; };
                BEE68B5F185715EE0049ECE0 /* salgdiutils.cxx */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = 
salgdiutils.cxx; path = ../../vcl/quartz/salgdiutils.cxx; sourceTree = 
"<group>"; };
@@ -700,6 +701,7 @@
                                BEE68B5E185715EE0049ECE0 /* salgdicommon.cxx */,
                                BEE68B5F185715EE0049ECE0 /* salgdiutils.cxx */,
                                BEE68B60185715EE0049ECE0 /* salmathutils.cxx */,
+                               BEDB0EFB185A05BE009A6F26 /* salvd.cxx */,
                                BEE68B61185715EE0049ECE0 /* utils.cxx */,
                        );
                        name = quartz;
diff --git a/ios/experimental/LibreOffice/LibreOffice.xcodeproj/project.pbxproj 
b/ios/experimental/LibreOffice/LibreOffice.xcodeproj/project.pbxproj
index 8108649..26b1df6 100644
--- a/ios/experimental/LibreOffice/LibreOffice.xcodeproj/project.pbxproj
+++ b/ios/experimental/LibreOffice/LibreOffice.xcodeproj/project.pbxproj
@@ -99,6 +99,7 @@
                BECB749A17185F48001BEB85 /* view0.cxx */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
name = view0.cxx; path = ../../../../sw/source/ui/uiview/view0.cxx; sourceTree 
= "<group>"; };
                BECB749B17185F48001BEB85 /* view1.cxx */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
name = view1.cxx; path = ../../../../sw/source/ui/uiview/view1.cxx; sourceTree 
= "<group>"; };
                BECB749C17185F48001BEB85 /* view2.cxx */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
name = view2.cxx; path = ../../../../sw/source/ui/uiview/view2.cxx; sourceTree 
= "<group>"; };
+               BEDB0EFA1859C206009A6F26 /* outdev2.cxx */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = outdev2.cxx; 
path = ../../../../vcl/source/gdi/outdev2.cxx; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -144,6 +145,7 @@
                        children = (
                                BE9A8D56181DBC70002A11AD /* cursor.cxx */,
                                BE954A2E1704F9500040D517 /* iosinst.cxx */,
+                               BEDB0EFA1859C206009A6F26 /* outdev2.cxx */,
                                BEB752BD180C90D0005B5696 /* outmap.cxx */,
                                BE96AEB7181973DA00BD1AC4 /* salbmp.cxx */,
                                BEBF3E3A17002D0200C454AC /* svapp.cxx */,
@@ -469,7 +471,7 @@
                                GCC_PREFIX_HEADER = 
"LibreOffice/LibreOffice-Prefix.pch";
                                INFOPLIST_FILE = 
"LibreOffice/LibreOffice-Info.plist";
                                IPHONEOS_DEPLOYMENT_TARGET = 6.1;
-                               LIBRARY_SEARCH_PATHS = 
"../../../workdir/LinkTarget/Library";
+                               LIBRARY_SEARCH_PATHS = 
../../../workdir/LinkTarget/Library;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                WRAPPER_EXTENSION = app;
                        };
@@ -482,7 +484,7 @@
                                GCC_PREFIX_HEADER = 
"LibreOffice/LibreOffice-Prefix.pch";
                                INFOPLIST_FILE = 
"LibreOffice/LibreOffice-Info.plist";
                                IPHONEOS_DEPLOYMENT_TARGET = 6.1;
-                               LIBRARY_SEARCH_PATHS = 
"../../../workdir/LinkTarget/Library";
+                               LIBRARY_SEARCH_PATHS = 
../../../workdir/LinkTarget/Library;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                WRAPPER_EXTENSION = app;
                        };
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index add342d..0193376 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -67,6 +67,7 @@
 #include "../../ui/inc/view.hxx"
 #include <PostItMgr.hxx>
 #include <vcl/dibtools.hxx>
+#include <vcl/sysdata.hxx>
 #include <vcl/virdev.hxx>
 #include <vcl/svapp.hxx>
 #include <svx/sdrpaintwindow.hxx>
@@ -1756,6 +1757,9 @@ void SwViewShell::PaintTile(VirtualDevice &rDevice, int 
contextWidth, int contex
     mbTiledRendering = true;
     mpOut = &rDevice;
 
+    // resizes the virtual device so to contain the entrie context
+    rDevice.SetOutputSizePixel(Size(contextWidth, contextHeight));
+
     // setup the output device to draw the tile
     MapMode aMapMode(rDevice.GetMapMode());
     aMapMode.SetMapUnit(MAP_TWIP);
@@ -1769,9 +1773,6 @@ void SwViewShell::PaintTile(VirtualDevice &rDevice, int 
contextWidth, int contex
     aMapMode.SetScaleY(scaleY);
     rDevice.SetMapMode(aMapMode);
 
-    // resizes the virtual device so to contain the entrie context
-    rDevice.SetOutputSizePixel(Size(contextWidth, contextHeight));
-
     // scroll the requested area into view if necessary
     MakeVisible(SwRect(Point(tilePosX, tilePosY), 
rDevice.PixelToLogic(Size(contextWidth, contextHeight))));
 
@@ -1813,25 +1814,11 @@ void touch_lo_draw_tile(void *context, int 
contextWidth, int contextHeight, MLOD
     Application::AcquireSolarMutex(1);
     if (pViewShell)
     {
-        // TODO create a VirtualDevice based on SystemGraphicsData instead so
-        // that we get direct rendering; something like:
-        //
-        VirtualDevice aDevice;
-
+        SystemGraphicsData aData;
+        aData.rCGContext = (CGContextRef) context;
+        VirtualDevice aDevice(&aData, (sal_uInt16)0);
         // paint to it
         pViewShell->PaintTile(aDevice, contextWidth, contextHeight, tilePosX, 
tilePosY, tileWidth, tileHeight);
-
-        // copy the aDevice content to mpImage
-        Bitmap aBitmap(aDevice.GetBitmap(aDevice.PixelToLogic(Point(0,0)), 
aDevice.PixelToLogic(Size(contextWidth, contextHeight))));
-        BitmapReadAccess * readAccess = aBitmap.AcquireReadAccess();
-        touch_lo_copy_buffer((void *) readAccess->GetBuffer(),
-                             contextWidth,
-                             contextHeight,
-                             readAccess-> GetScanlineSize(),
-                             context,
-                             contextWidth,
-                             contextHeight);
-        aBitmap.ReleaseAccess(readAccess);
     }
     Application::ReleaseSolarMutex();
 #else
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 72d665a..e178412 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -339,6 +339,8 @@ endif
 vcl_quartz_code= \
     vcl/quartz/salbmp \
     vcl/quartz/utils \
+    vcl/quartz/salgdicommon \
+    vcl/quartz/salvd \
 
 vcl_coretext_code= \
     vcl/quartz/ctfonts \
@@ -419,12 +421,10 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/osx/clipboard \
     vcl/osx/service_entry \
     $(vcl_quartz_code) \
-    vcl/quartz/salgdicommon \
     vcl/quartz/salgdiutils \
     vcl/quartz/salmathutils \
     vcl/osx/salnativewidgets \
     vcl/osx/salprn \
-    vcl/osx/salvd \
     vcl/osx/salframe \
     vcl/osx/salmenu \
     vcl/osx/salobj \
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 2a1035f..0917f9e 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -286,6 +286,10 @@ bool SvpSalGraphics::isClippedSetup( const basegfx::B2IBox 
&aRange, SvpSalGraphi
 // bitmapdevice instead.
 bool SvpSalGraphics::setClipRegion( const Region& i_rClip )
 {
+#ifdef IOS
+    if (mbForeignContext)
+        return true;
+#endif
     m_aClipRegion = i_rClip;
     m_aClipMap.reset();
     if( i_rClip.IsEmpty() )
@@ -314,6 +318,8 @@ bool SvpSalGraphics::setClipRegion( const Region& i_rClip )
     return true;
 }
 
+#ifndef IOS
+
 void SvpSalGraphics::SetLineColor()
 {
     m_bUseLineColor = false;
@@ -677,6 +683,8 @@ 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 
) ) );
diff --git a/vcl/headless/svpinst.cxx b/vcl/headless/svpinst.cxx
index 340f4f4..7a43eb1 100644
--- a/vcl/headless/svpinst.cxx
+++ b/vcl/headless/svpinst.cxx
@@ -30,6 +30,12 @@
 #include "headless/svpframe.hxx"
 #include "headless/svpdummies.hxx"
 #include "headless/svpvd.hxx"
+#ifdef IOS
+#include "headless/svpgdi.hxx"
+#include "quartz/salbmp.h"
+#include "quartz/salgdi.h"
+#include "quartz/salvd.h"
+#endif
 #include "headless/svpbmp.hxx"
 
 #include <salframe.hxx>
@@ -211,13 +217,27 @@ void SvpSalInstance::DestroyObject( SalObject* pObject )
     delete pObject;
 }
 
-SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics*,
+SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
                                                        long nDX, long nDY,
-                                                       sal_uInt16 nBitCount, 
const SystemGraphicsData* )
+                                                       sal_uInt16 nBitCount,
+                                                       const 
SystemGraphicsData* pData )
 {
+#ifdef IOS
+    if( pData )
+        return new AquaSalVirtualDevice( static_cast< AquaSalGraphics* >( 
pGraphics ), nDX, nDY, nBitCount, pData );
+    else
+    {
+        SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice( nBitCount );
+        pNew->SetSize( nDX, nDY );
+        return pNew;
+    }
+#else
+    (void) pGraphics;
+    (void) pData;
     SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice( nBitCount );
     pNew->SetSize( nDX, nDY );
     return pNew;
+#endif
 }
 
 void SvpSalInstance::DestroyVirtualDevice( SalVirtualDevice* pDevice )
@@ -242,7 +262,11 @@ SalSystem* SvpSalInstance::CreateSalSystem()
 
 SalBitmap* SvpSalInstance::CreateSalBitmap()
 {
+#ifdef IOS
+    return new QuartzSalBitmap();
+#else
     return new SvpSalBitmap();
+#endif
 }
 
 void SvpSalInstance::Yield( bool bWait, bool bHandleAllCurrentEvents )
diff --git a/vcl/inc/headless/svpframe.hxx b/vcl/inc/headless/svpframe.hxx
index 34bf77b..865fd28 100644
--- a/vcl/inc/headless/svpframe.hxx
+++ b/vcl/inc/headless/svpframe.hxx
@@ -30,6 +30,7 @@
 
 #ifdef IOS
 #define SvpSalGraphics AquaSalGraphics
+#define SvpSalInstance AquaSalInstance
 #endif
 
 class SvpSalInstance;
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index 8e38bd2..1135c7d 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -22,6 +22,7 @@
 
 #include <basebmp/bitmapdevice.hxx>
 #include <basebmp/color.hxx>
+#include <vcl/sysdata.hxx>
 
 #include "salgdi.hxx"
 #include "sallayout.hxx"
@@ -48,6 +49,7 @@ class SvpSalGraphics : public SalGraphics
     basebmp::BitmapDeviceSharedPtr       m_aDevice;
     basebmp::BitmapDeviceSharedPtr       m_aOrigDevice;
 
+#ifndef IOS
     bool                                 m_bUseLineColor;
     basebmp::Color                       m_aLineColor;
     bool                                 m_bUseFillColor;
@@ -55,12 +57,48 @@ class SvpSalGraphics : public SalGraphics
 
     basebmp::DrawMode                    m_aDrawMode;
 
-#ifndef IOS
     // These fields are used only when we use FreeType to draw into a
     // headless backend, i.e. not on iOS.
     basebmp::Color                       m_aTextColor;
     ServerFont*                          m_pServerFont[ MAX_FALLBACK ];
     basebmp::Format                      m_eTextFmt;
+#else
+    friend class CTLayout;
+
+    CGLayerRef                              mxLayer;
+    // mirror AquaSalVirtualDevice::mbForeignContext for SvpSalGraphics 
objects related to such
+    bool mbForeignContext;
+    CGContextRef                         mrContext;
+    class XorEmulation*                     mpXorEmulation;
+    int                                     mnXorMode; // 0: off 1: on 2: 
invert only
+    int                                     mnWidth;
+    int                                     mnHeight;
+    int                                  mnBitmapDepth;  // zero unless bitmap
+    /// some graphics implementations (e.g. AquaSalInfoPrinter) scale
+    /// everything down by a factor (see SetupPrinterGraphics for details)
+    /// so we have to compensate for it with the inverse factor
+    double                               mfFakeDPIScale;
+
+    /// path representing current clip region
+    CGMutablePathRef                        mxClipPath;
+
+    /// Drawing colors
+    /// pen color RGBA
+    RGBAColor                               maLineColor;
+    /// brush color RGBA
+    RGBAColor                               maFillColor;
+
+    // Device Font settings
+    const CoreTextFontData*                 mpFontData;
+    CoreTextStyle*                          mpTextStyle;
+    RGBAColor                               maTextColor;
+    /// allows text to be rendered without antialiasing
+    bool                                    mbNonAntialiasedText;
+
+    /// is this a printer graphics
+    bool                                    mbPrinter;
+    /// is this a virtual device graphics
+    bool                                    mbVirDev;
 #endif
 
     basebmp::BitmapDeviceSharedPtr       m_aClipMap;
@@ -81,22 +119,6 @@ private:
     void ensureClip();
 
 protected:
-
-#ifdef IOS
-    friend class CTLayout;
-
-    CGContextRef                         mrContext;
-    double                               mfFakeDPIScale;
-
-    // Device Font settings
-    const CoreTextFontData*                 mpFontData;
-    CoreTextStyle*                          mpTextStyle;
-    RGBAColor                               maTextColor;
-    /// allows text to be rendered without antialiasing
-    bool                                    mbNonAntialiasedText;
-
-#endif
-
     virtual bool drawAlphaBitmap( const SalTwoRect&, const SalBitmap& 
rSourceBitmap, const SalBitmap& rAlphaBitmap );
     virtual bool drawTransformedBitmap(
         const basegfx::B2DPoint& rNull,
@@ -218,11 +240,30 @@ public:
     virtual SystemFontData  GetSysFontData( int nFallbacklevel ) const;
 
 #ifdef IOS
+    void                SetVirDevGraphics( CGLayerRef xLayer, CGContextRef 
xContext, int = 0 )
+    {
+        mxLayer = xLayer;
+        mrContext = xContext;
+        mbForeignContext = xContext != NULL;
+    };
+
     bool CheckContext();
     CGContextRef GetContext();
     bool GetRawFontData( const PhysicalFontFace* pFontData,
                          std::vector<unsigned char>& rBuffer,
                          bool* pJustCFF );
+    void                RefreshRect( const CGRect& ) { };
+    void                RefreshRect(float /* lX */, float /* lY */, float /* 
lWidth */, float /* lHeight */) { };
+    void                SetState();
+    void                UnsetState();
+    void                InvalidateContext();
+    bool                IsPenVisible() const    { return 
maLineColor.IsVisible(); }
+    bool                IsBrushVisible() const  { return 
maFillColor.IsVisible(); }
+    void                ImplDrawPixel( long nX, long nY, const RGBAColor& ); 
// helper to draw single pixels
+    CGPoint*                makeCGptArray(sal_uLong nPoints, const SalPoint*  
pPtAry);
+    bool IsFlipped() const { return false; }
+    void ApplyXorContext();
+    void Pattern50Fill();
 #endif
 };
 
diff --git a/vcl/inc/headless/svpinst.hxx b/vcl/inc/headless/svpinst.hxx
index e1ef8d4..79e5e1f 100644
--- a/vcl/inc/headless/svpinst.hxx
+++ b/vcl/inc/headless/svpinst.hxx
@@ -37,6 +37,10 @@
 #define VIRTUAL_DESKTOP_WIDTH 1024
 #define VIRTUAL_DESKTOP_HEIGHT 768
 
+#ifdef IOS
+#define SvpSalInstance AquaSalInstance
+#endif
+
 class SvpSalInstance;
 class SvpSalTimer : public SalTimer
 {
diff --git a/vcl/inc/osx/saldata.hxx b/vcl/inc/osx/saldata.hxx
index c9c44bf..2bc0a6f 100644
--- a/vcl/inc/osx/saldata.hxx
+++ b/vcl/inc/osx/saldata.hxx
@@ -61,6 +61,9 @@ struct FrameHash : public boost::hash<sal_IntPtr>
 
 #define INVALID_CURSOR_PTR (NSCursor*)0xdeadbeef
 
+// Singleton, instantiated from Application::Application() in
+// vcl/source/app/svapp.cxx through InitSalData().
+
 class SalData
 {
 public:
@@ -75,11 +78,8 @@ public:
     SystemFontList                               *mpFontList;
     NSStatusItem*                                 mpStatusItem;     // one 
status item that draws all our stati
                                                                     // at the 
moment this is only one add menu button
-
     CGColorSpaceRef                               mxRGBSpace;
     CGColorSpaceRef                               mxGraySpace;
-    CGColorSpaceRef                               mxP50Space;
-    CGPatternRef                                  mxP50Pattern;
 
     std::vector< NSCursor* >                      maCursors;
     std::vector< NSMenuItem* >                    maFallbackMenu;
diff --git a/vcl/inc/osx/salinst.h b/vcl/inc/osx/salinst.h
index 62b7f85..d6d2824 100644
--- a/vcl/inc/osx/salinst.h
+++ b/vcl/inc/osx/salinst.h
@@ -25,7 +25,9 @@
 #include "osl/conditn.h"
 #include <vcl/solarmutex.hxx>
 
+#ifdef MACOSX
 #include "osx/osxvcltypes.h"
+#endif
 
 #include "salinst.hxx"
 
@@ -51,7 +53,6 @@ public:
 
 #define YIELD_GUARD osl::Guard< comphelper::SolarMutex > aGuard( 
GetSalData()->mpFirstInstance->GetYieldMutex() )
 
-
 class AquaSalInstance : public SalInstance
 {
     struct SalUserEvent
diff --git a/vcl/inc/quartz/salbmp.h b/vcl/inc/quartz/salbmp.h
index a645999..510c64f 100644
--- a/vcl/inc/quartz/salbmp.h
+++ b/vcl/inc/quartz/salbmp.h
@@ -92,7 +92,7 @@ private:
                                        sal_uInt16 nSrcBits, sal_uInt32 
nSrcBytesPerRow, const BitmapPalette& rSrcPalette, sal_uInt8* pSrcData );
 
 public:
-    bool            Create( CGLayerRef xLayer, int nBitCount, int nX, int nY, 
int nWidth, int nHeight, bool bMirrorVert = true );
+    bool            Create( CGLayerRef xLayer, int nBitCount, int nX, int nY, 
int nWidth, int nHeight );
 
 public:
     CGImageRef      CreateWithMask( const QuartzSalBitmap& rMask, int nX, int 
nY, int nWidth, int nHeight ) const;
diff --git a/vcl/inc/osx/salvd.h b/vcl/inc/quartz/salvd.h
similarity index 82%
rename from vcl/inc/osx/salvd.h
rename to vcl/inc/quartz/salvd.h
index 1c32ad4..fe69336 100644
--- a/vcl/inc/osx/salvd.h
+++ b/vcl/inc/quartz/salvd.h
@@ -21,25 +21,17 @@
 #define INCLUDED_VCL_INC_OSX_SALVD_H
 
 #include "premac.h"
+#ifdef MACOSX
 #include <ApplicationServices/ApplicationServices.h>
+#else
+#include <CoreGraphics/CoreGraphics.h>
+#endif
 #include "postmac.h"
 
 #include "quartz/salgdi.h"
 
 #include "salvd.hxx"
 
-#if PRAGMA_ONCE
-    #pragma once
-#endif
-
-// =======================================================================
-
-// =======================================================================
-
-// -----------------
-// - SalVirDevData -
-// -----------------
-
 struct SalVirDevData
 {
 };
@@ -48,14 +40,8 @@ typedef struct SalVirDevData   SalVirDevData;
 typedef SalVirDevData         *SalVirDevDataPtr;
 typedef SalVirDevDataPtr      *SalVirDevDataHandle;
 
-// =======================================================================
-
 class AquaSalGraphics;
 
-// -----------------
-// - SalVirDevData -
-// -----------------
-
 class AquaSalVirtualDevice : public SalVirtualDevice
 {
 private:
@@ -78,8 +64,6 @@ public:
     virtual void                       GetSize( long& rWidth, long& rHeight );
 };
 
-// =======================================================================
-
 #endif // INCLUDED_VCL_INC_OSX_SALVD_H
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/saldatabasic.hxx b/vcl/inc/saldatabasic.hxx
index 3d2d2c0..0c504e4 100644
--- a/vcl/inc/saldatabasic.hxx
+++ b/vcl/inc/saldatabasic.hxx
@@ -45,9 +45,10 @@ public:
     SalData();
     virtual ~SalData();
 #ifdef IOS
+    SystemFontList*               mpFontList;
     CGColorSpaceRef               mxRGBSpace;
     CGColorSpaceRef               mxGraySpace;
-    SystemFontList*               mpFontList;
+    static void ensureThreadAutoreleasePool() {};
 #endif
 };
 
diff --git a/vcl/ios/iosinst.cxx b/vcl/ios/iosinst.cxx
index 0b3f69f..bcef629 100644
--- a/vcl/ios/iosinst.cxx
+++ b/vcl/ios/iosinst.cxx
@@ -248,7 +248,9 @@ SalData::SalData() :
     m_pInstance( 0 ),
     m_pPlugin( 0 ),
     m_pPIManager(0 ),
-    mpFontList( 0 )
+    mpFontList( 0 ),
+    mxRGBSpace( CGColorSpaceCreateDeviceRGB() ),
+    mxGraySpace( CGColorSpaceCreateDeviceGray() )
 {
 }
 
diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx
index 9aab3a0..538747c 100644
--- a/vcl/osx/salinst.cxx
+++ b/vcl/osx/salinst.cxx
@@ -37,7 +37,7 @@
 #include "osx/salframe.h"
 #include "osx/salobj.h"
 #include "osx/salsys.h"
-#include "osx/salvd.h"
+#include "quartz/salvd.h"
 #include "quartz/salbmp.h"
 #include "quartz/utils.h"
 #include "osx/salprn.h"
diff --git a/vcl/quartz/salbmp.cxx b/vcl/quartz/salbmp.cxx
index 1a509bd..933bd2b 100644
--- a/vcl/quartz/salbmp.cxx
+++ b/vcl/quartz/salbmp.cxx
@@ -75,7 +75,7 @@ QuartzSalBitmap::~QuartzSalBitmap()
 // ------------------------------------------------------------------
 
 bool QuartzSalBitmap::Create( CGLayerRef xLayer, int nBitmapBits,
-    int nX, int nY, int nWidth, int nHeight, bool /*bMirrorVert*/ )
+    int nX, int nY, int nWidth, int nHeight )
 {
     DBG_ASSERT( xLayer, "QuartzSalBitmap::Create() from non-layered context" );
 
@@ -102,7 +102,7 @@ bool QuartzSalBitmap::Create( CGLayerRef xLayer, int 
nBitmapBits,
 
     // copy layer content into the bitmap buffer
     const CGPoint aSrcPoint = { static_cast<CGFloat>(-nX), 
static_cast<CGFloat>(-nY) };
-    ::CGContextDrawLayerAtPoint( mxGraphicContext, aSrcPoint, xLayer );
+    CGContextDrawLayerAtPoint( mxGraphicContext, aSrcPoint, xLayer );
     return true;
 }
 
@@ -239,7 +239,7 @@ bool QuartzSalBitmap::CreateContext()
 
     if( maContextBuffer.get() )
     {
-        mxGraphicContext = ::CGBitmapContextCreate( maContextBuffer.get(), 
mnWidth, mnHeight,
+        mxGraphicContext = CGBitmapContextCreate( maContextBuffer.get(), 
mnWidth, mnHeight,
             bitsPerComponent, nContextBytesPerRow, aCGColorSpace, aCGBmpInfo );
     }
 
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index ee80205..25a219f 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -266,39 +266,53 @@ AquaSalGraphics::AquaSalGraphics()
     , mbVirDev( false )
     , mbWindow( false )
 #else
-    : mrContext( NULL )
+    : mxLayer( NULL )
+    , mbForeignContext( false )
+    , mrContext( NULL )
+    , mpXorEmulation( NULL )
+    , mnXorMode( 0 )
+    , mnWidth( 0 )
+    , mnHeight( 0 )
+    , mnBitmapDepth( 0 )
     , mfFakeDPIScale( 1.0 )
+    , mxClipPath( NULL )
+    , maLineColor( COL_WHITE )
+    , maFillColor( COL_BLACK )
     , mpFontData( NULL )
     , mpTextStyle( NULL )
     , maTextColor( COL_BLACK )
     , mbNonAntialiasedText( false )
+    , mbPrinter( false )
+    , mbVirDev( false )
 #endif
 {}
 
-// -----------------------------------------------------------------------
-
 AquaSalGraphics::~AquaSalGraphics()
 {
-#ifdef MACOSX
     CGPathRelease( mxClipPath );
     delete mpTextStyle;
 
     if( mpXorEmulation )
         delete mpXorEmulation;
 
+#ifdef IOS
+    if (mbForeignContext)
+        return;
+#endif
     if( mxLayer )
         CGLayerRelease( mxLayer );
-    else if( mrContext && mbWindow )
+    else if( mrContext
+#ifdef MACOSX
+             && mbWindow
+#endif
+             )
     {
         // destroy backbuffer bitmap context that we created ourself
         CGContextRelease( mrContext );
         mrContext = NULL;
     }
-#endif
 }
 
-// =======================================================================
-
 void AquaSalGraphics::SetTextColor( SalColor nSalColor )
 {
     maTextColor = RGBAColor( nSalColor );
@@ -792,6 +806,9 @@ SystemFontData AquaSalGraphics::GetSysFontData( int /* 
nFallbacklevel */ ) const
 
 bool SvpSalGraphics::CheckContext()
 {
+    if (mbForeignContext)
+        return true;
+
     const basegfx::B2IVector size = m_aDevice->getSize();
     const basegfx::B2IVector bufferSize = m_aDevice->getBufferSize();
     const sal_Int32 scanlineStride = m_aDevice->getScanlineStride();
diff --git a/vcl/quartz/salgdicommon.cxx b/vcl/quartz/salgdicommon.cxx
index 85e6a9e..a204d74 100644
--- a/vcl/quartz/salgdicommon.cxx
+++ b/vcl/quartz/salgdicommon.cxx
@@ -25,7 +25,7 @@
 #include <osl/endian.h>
 #include <osl/file.hxx>
 
-#include "basegfx/polygon/b2dpolygon.hxx"
+#include <basegfx/polygon/b2dpolygon.hxx>
 
 #include "quartz/salbmp.h"
 #include "quartz/salgdi.h"
@@ -33,10 +33,12 @@
 #include "fontsubset.hxx"
 #include "sft.hxx"
 
-using namespace vcl;
+#ifdef IOS
+#include "saldatabasic.hxx"
+#endif
 
+using namespace vcl;
 
-//typedef unsigned char Boolean; // copied from MacTypes.h, should be properly 
included
 typedef std::vector<unsigned char> ByteVector;
 
 static const basegfx::B2DPoint aHalfPointOfs ( 0.5, 0.5 );
@@ -307,8 +309,11 @@ void AquaSalGraphics::copyBits( const SalTwoRect& rPosAry, 
SalGraphics *pSrcGrap
 
     // accelerate trivial operations
     /*const*/ AquaSalGraphics* pSrc = 
static_cast<AquaSalGraphics*>(pSrcGraphics);
-    const bool bSameGraphics = (this == pSrc) ||
-        (mbWindow && mpFrame && pSrc->mbWindow && (mpFrame == pSrc->mpFrame));
+    const bool bSameGraphics = (this == pSrc)
+#ifdef MACOSX
+        || (mbWindow && mpFrame && pSrc->mbWindow && (mpFrame == 
pSrc->mpFrame))
+#endif
+        ;
     if( bSameGraphics
     &&  (rPosAry.mnSrcWidth == rPosAry.mnDestWidth)
     &&  (rPosAry.mnSrcHeight == rPosAry.mnDestHeight))
@@ -333,6 +338,10 @@ void AquaSalGraphics::copyBits( const SalTwoRect& rPosAry, 
SalGraphics *pSrcGrap
          rPosAry.mnSrcHeight == rPosAry.mnDestHeight) &&
         (!mnBitmapDepth || (aDstPoint.x + pSrc->mnWidth) <= mnWidth) ) // 
workaround a Quartz crasher
     {
+#ifdef IOS
+        if( !CheckContext() )
+            return;
+#endif
         // in XOR mode the drawing context is redirected to the XOR mask
         // if source and target are identical then copyBits() paints onto the 
target context though
         CGContextRef xCopyContext = mrContext;
@@ -354,7 +363,7 @@ void AquaSalGraphics::copyBits( const SalTwoRect& rPosAry, 
SalGraphics *pSrcGrap
             CGContextTranslateCTM( xCopyContext, 0, +mnHeight ); 
CGContextScaleCTM( xCopyContext, +1, -1 );
         }
         // TODO: pSrc->size() != this->size()
-        ::CGContextDrawLayerAtPoint( xCopyContext, aDstPoint, pSrc->mxLayer );
+        CGContextDrawLayerAtPoint( xCopyContext, aDstPoint, pSrc->mxLayer );
         CGContextRestoreGState( xCopyContext );
         // mark the destination rectangle as updated
         RefreshRect( aDstRect );
@@ -462,21 +471,21 @@ void AquaSalGraphics::copyArea( long nDstX, long 
nDstY,long nSrcX, long nSrcY,
     // TODO: if( mnBitmapDepth > 0 )
     {
         const CGSize aSrcSize = CGSizeMake(nSrcWidth, nSrcHeight);
-        xSrcLayer = ::CGLayerCreateWithContext( xCopyContext, aSrcSize, NULL );
+        xSrcLayer = CGLayerCreateWithContext( xCopyContext, aSrcSize, NULL );
         const CGContextRef xSrcContext = CGLayerGetContext( xSrcLayer );
         CGPoint aSrcPoint = CGPointMake(-nSrcX, -nSrcY);
         if( IsFlipped() )
         {
-            ::CGContextTranslateCTM( xSrcContext, 0, +nSrcHeight );
-            ::CGContextScaleCTM( xSrcContext, +1, -1 );
+            CGContextTranslateCTM( xSrcContext, 0, +nSrcHeight );
+            CGContextScaleCTM( xSrcContext, +1, -1 );
             aSrcPoint.y = (nSrcY + nSrcHeight) - mnHeight;
         }
-        ::CGContextDrawLayerAtPoint( xSrcContext, aSrcPoint, mxLayer );
+        CGContextDrawLayerAtPoint( xSrcContext, aSrcPoint, mxLayer );
     }
 
     // draw at new destination
     const CGPoint aDstPoint = CGPointMake(+nDstX, +nDstY);
-    ::CGContextDrawLayerAtPoint( xCopyContext, aDstPoint, xSrcLayer );
+    CGContextDrawLayerAtPoint( xCopyContext, aDstPoint, xSrcLayer );
 
     // cleanup
     if( xSrcLayer != mxLayer )
@@ -488,6 +497,8 @@ void AquaSalGraphics::copyArea( long nDstX, long nDstY,long 
nSrcX, long nSrcY,
 
 }
 
+#ifndef IOS
+
 void AquaSalGraphics::copyResolution( AquaSalGraphics& rGraphics )
 {
     if( !rGraphics.mnRealDPIY && rGraphics.mbWindow && rGraphics.mpFrame )
@@ -499,6 +510,8 @@ void AquaSalGraphics::copyResolution( AquaSalGraphics& 
rGraphics )
     mfFakeDPIScale = rGraphics.mfFakeDPIScale;
 }
 
+#endif
+
 bool AquaSalGraphics::drawAlphaBitmap( const SalTwoRect& rTR,
                                        const SalBitmap& rSrcBitmap,
                                        const SalBitmap& rAlphaBmp )
@@ -655,6 +668,8 @@ void AquaSalGraphics::drawBitmap( const SalTwoRect& 
rPosAry, const SalBitmap& rS
     RefreshRect( aDstRect );
 }
 
+#ifndef IOS
+
 sal_Bool AquaSalGraphics::drawEPS( long nX, long nY, long nWidth, long nHeight,
                                    void* pEpsData, sal_uLong nByteCount )
 {
@@ -700,6 +715,8 @@ sal_Bool AquaSalGraphics::drawEPS( long nX, long nY, long 
nWidth, long nHeight,
     return bOK;
 }
 
+#endif
+
 void AquaSalGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 )
 {
     if( nX1 == nX2 && nY1 == nY2 )
@@ -1129,7 +1146,7 @@ SalBitmap* AquaSalGraphics::getBitmap( long  nX, long  
nY, long  nDX, long  nDY
     ApplyXorContext();
 
     QuartzSalBitmap* pBitmap = new QuartzSalBitmap;
-    if( !pBitmap->Create( mxLayer, mnBitmapDepth, nX, nY, nDX, nDY, !mbWindow 
) )
+    if( !pBitmap->Create( mxLayer, mnBitmapDepth, nX, nY, nDX, nDY) )
     {
         delete pBitmap;
         pBitmap = NULL;
@@ -1138,6 +1155,8 @@ SalBitmap* AquaSalGraphics::getBitmap( long  nX, long  
nY, long  nDX, long  nDY
     return pBitmap;
 }
 
+#ifndef IOS
+
 SystemGraphicsData AquaSalGraphics::GetGraphicsData() const
 {
     SystemGraphicsData aRes;
@@ -1184,8 +1203,8 @@ SalColor AquaSalGraphics::getPixel( long nX, long nY )
     // create a one-pixel bitmap context
     // TODO: is it worth to cache it?
     CGContextRef xOnePixelContext =
-        ::CGBitmapContextCreate( &aPixel, 1, 1, 8, sizeof(aPixel),
-                                 aCGColorSpace, aCGBmpInfo );
+        CGBitmapContextCreate( &aPixel, 1, 1, 8, sizeof(aPixel),
+                               aCGColorSpace, aCGBmpInfo );
 
     // update this graphics layer
     ApplyXorContext();
@@ -1214,6 +1233,8 @@ void AquaSalGraphics::GetResolution( sal_Int32& rDPIX, 
sal_Int32& rDPIY )
     rDPIY = static_cast<sal_Int32>(mfFakeDPIScale * mnRealDPIY);
 }
 
+#endif
+
 void AquaSalGraphics::ImplDrawPixel( long nX, long nY, const RGBAColor& rColor 
)
 {
     if( !CheckContext() )
@@ -1230,6 +1251,8 @@ void AquaSalGraphics::ImplDrawPixel( long nX, long nY, 
const RGBAColor& rColor )
     CGContextSetFillColor( mrContext, maFillColor.AsArray() );
 }
 
+#ifndef IOS
+
 void AquaSalGraphics::initResolution( NSWindow* )
 {
     // #i100617# read DPI only once; there is some kind of weird caching going 
on
@@ -1322,6 +1345,8 @@ void AquaSalGraphics::initResolution( NSWindow* )
     mfFakeDPIScale = 1.0;
 }
 
+#endif
+
 void AquaSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, 
SalInvert nFlags )
 {
     if ( CheckContext() )
@@ -1395,19 +1420,13 @@ void AquaSalGraphics::Pattern50Fill()
 {
     static const CGFloat aFillCol[4] = { 1,1,1,1 };
     static const CGPatternCallbacks aCallback = { 0, &DrawPattern50, NULL };
-    if( ! GetSalData()->mxP50Space )
-    {
-        GetSalData()->mxP50Space = CGColorSpaceCreatePattern( 
GetSalData()->mxRGBSpace );
-    }
-    if( ! GetSalData()->mxP50Pattern )
-    {
-        GetSalData()->mxP50Pattern = CGPatternCreate( NULL, CGRectMake( 0, 0, 
4, 4 ),
-                                                      
CGAffineTransformIdentity, 4, 4,
-                                                      
kCGPatternTilingConstantSpacing,
-                                                      false, &aCallback );
-    }
-    CGContextSetFillColorSpace( mrContext, GetSalData()->mxP50Space );
-    CGContextSetFillPattern( mrContext, GetSalData()->mxP50Pattern, aFillCol );
+    static const CGColorSpaceRef mxP50Space = CGColorSpaceCreatePattern( 
GetSalData()->mxRGBSpace );
+    static const CGPatternRef mxP50Pattern = CGPatternCreate( NULL, 
CGRectMake( 0, 0, 4, 4 ),
+                                                              
CGAffineTransformIdentity, 4, 4,
+                                                              
kCGPatternTilingConstantSpacing,
+                                                              false, 
&aCallback );
+    CGContextSetFillColorSpace( mrContext, mxP50Space );
+    CGContextSetFillPattern( mrContext, mxP50Pattern, aFillCol );
     CGContextFillPath( mrContext );
 }
 
@@ -1590,6 +1609,8 @@ void AquaSalGraphics::SetXORMode( bool bSet, bool 
bInvertOnly )
     }
 }
 
+#ifndef IOS
+
 void AquaSalGraphics::updateResolution()
 {
     DBG_ASSERT( mbWindow, "updateResolution on inappropriate graphics" );
@@ -1597,6 +1618,7 @@ void AquaSalGraphics::updateResolution()
     initResolution( (mbWindow && mpFrame) ? mpFrame->getNSWindow() : nil );
 }
 
+#endif
 
 // -----------------------------------------------------------
 
@@ -1669,10 +1691,10 @@ void XorEmulation::SetTarget( int nWidth, int nHeight, 
int nTargetDepth,
 
     // create a XorMask context
     m_pMaskBuffer = new sal_uLong[ m_nBufferLongs ];
-    m_xMaskContext = ::CGBitmapContextCreate( m_pMaskBuffer,
-                                              nWidth, nHeight,
-                                              nBitsPerComponent, nBytesPerRow,
-                                              aCGColorSpace, aCGBmpInfo );
+    m_xMaskContext = CGBitmapContextCreate( m_pMaskBuffer,
+                                            nWidth, nHeight,
+                                            nBitsPerComponent, nBytesPerRow,
+                                            aCGColorSpace, aCGBmpInfo );
     // reset the XOR mask to black
     memset( m_pMaskBuffer, 0, m_nBufferLongs * sizeof(sal_uLong) );
 
@@ -1684,10 +1706,10 @@ void XorEmulation::SetTarget( int nWidth, int nHeight, 
int nTargetDepth,
     {
         // create a bitmap context matching to the target context
         m_pTempBuffer = new sal_uLong[ m_nBufferLongs ];
-        m_xTempContext = ::CGBitmapContextCreate( m_pTempBuffer,
-                                                  nWidth, nHeight,
-                                                  nBitsPerComponent, 
nBytesPerRow,
-                                                  aCGColorSpace, aCGBmpInfo );
+        m_xTempContext = CGBitmapContextCreate( m_pTempBuffer,
+                                                nWidth, nHeight,
+                                                nBitsPerComponent, 
nBytesPerRow,
+                                                aCGColorSpace, aCGBmpInfo );
     }
 
     // initialize XOR mask context for drawing
diff --git a/vcl/osx/salvd.cxx b/vcl/quartz/salvd.cxx
similarity index 88%
rename from vcl/osx/salvd.cxx
rename to vcl/quartz/salvd.cxx
index 3f69ab9..7b041b9 100644
--- a/vcl/osx/salvd.cxx
+++ b/vcl/quartz/salvd.cxx
@@ -17,15 +17,21 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-
 #include "vcl/svapp.hxx"
 #include "vcl/sysdata.hxx"
 
-#include "osx/salvd.h"
+#include "quartz/salvd.h"
+#ifdef MACOSX
 #include "osx/salinst.h"
-#include "quartz/salgdi.h"
 #include "osx/saldata.hxx"
 #include "osx/salframe.h"
+#else
+#include "headless/svpframe.hxx"
+#include "headless/svpgdi.hxx"
+#include "headless/svpinst.hxx"
+#include "headless/svpvd.hxx"
+#endif
+#include "quartz/salgdi.h"
 
 // -----------------------------------------------------------------------
 
@@ -35,7 +41,14 @@ SalVirtualDevice* AquaSalInstance::CreateVirtualDevice( 
SalGraphics* pGraphics,
     // #i92075# can be called first in a thread
     SalData::ensureThreadAutoreleasePool();
 
-    return new AquaSalVirtualDevice( static_cast< AquaSalGraphics* >( 
pGraphics ), nDX, nDY, nBitCount, pData );
+#ifdef IOS
+    if( pData )
+        return new AquaSalVirtualDevice( static_cast< AquaSalGraphics* >( 
pGraphics ), nDX, nDY, nBitCount, pData );
+    else
+        return new SvpSalVirtualDevice( nBitCount );
+#else
+        return new AquaSalVirtualDevice( static_cast< AquaSalGraphics* >( 
pGraphics ), nDX, nDY, nBitCount, pData );
+#endif
 }
 
 // -----------------------------------------------------------------------
@@ -67,7 +80,7 @@ AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* 
pGraphic, long nDX,
         mbForeignContext = false;           // the mxContext is created within 
VCL
         mpGraphics = new AquaSalGraphics(); // never fails
         mnBitmapDepth = nBitCount;
-
+#ifdef MACOSX
         // inherit resolution from reference device
         if( pGraphic )
         {
@@ -78,7 +91,7 @@ AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* 
pGraphic, long nDX,
                 mpGraphics->copyResolution( *pGraphic );
             }
         }
-
+#endif
         if( nDX && nDY )
             SetSize( nDX, nDY );
 
@@ -148,12 +161,21 @@ void AquaSalVirtualDevice::ReleaseGraphics( SalGraphics* )
 
 sal_Bool AquaSalVirtualDevice::SetSize( long nDX, long nDY )
 {
+#ifdef IOS
+    (void) nDX;
+    (void) nDY;
+    assert(mbForeignContext);
+#endif
+
     if( mbForeignContext )
     {
         // Do not delete/resize mxContext that we have received from outside 
VCL
         return true;
     }
 
+#ifdef IOS
+    return false;
+#else
     if( mxLayer )
     {
         const CGSize aSize = CGLayerGetSize( mxLayer );
@@ -176,8 +198,8 @@ sal_Bool AquaSalVirtualDevice::SetSize( long nDX, long nDY )
         const int nBytesPerRow = (mnBitmapDepth * nDX + 7) / 8;
 
         void* pRawData = rtl_allocateMemory( nBytesPerRow * nDY );
-        mxBitmapContext = ::CGBitmapContextCreate( pRawData, nDX, nDY,
-            mnBitmapDepth, nBytesPerRow, aCGColorSpace, aCGBmpInfo );
+        mxBitmapContext = CGBitmapContextCreate( pRawData, nDX, nDY,
+                                                 mnBitmapDepth, nBytesPerRow, 
aCGColorSpace, aCGBmpInfo );
         xCGContext = mxBitmapContext;
     }
     else
@@ -219,8 +241,8 @@ sal_Bool AquaSalVirtualDevice::SetSize( long nDX, long nDY )
                 const int nBytesPerRow = (mnBitmapDepth * nDX) / 8;
 
                 void* pRawData = rtl_allocateMemory( nBytesPerRow * nDY );
-                mxBitmapContext = ::CGBitmapContextCreate( pRawData, nDX, nDY,
-                                                           8, nBytesPerRow, 
aCGColorSpace, aCGBmpInfo );
+                mxBitmapContext = CGBitmapContextCreate( pRawData, nDX, nDY,
+                                                         8, nBytesPerRow, 
aCGColorSpace, aCGBmpInfo );
                 xCGContext = mxBitmapContext;
             }
         }
@@ -239,6 +261,7 @@ sal_Bool AquaSalVirtualDevice::SetSize( long nDX, long nDY )
     }
 
     return (mxLayer != NULL);
+#endif
 }
 
 // -----------------------------------------------------------------------
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to