Fix compilation for iOS

This commit is contained in:
Tor Lillqvist 2011-07-14 22:45:11 +03:00
parent 5a7834cd3e
commit d3abc64751
4 changed files with 31 additions and 9 deletions

View File

@ -29,9 +29,9 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_canvas.hxx"
#ifdef QUARTZ
#if defined QUARTZ || defined IOS
/************************************************************************
* Mac OS X/Quartz surface backend for OpenOffice.org Cairo Canvas *
* Mac OS X/Quartz and iOS surface backend for OpenOffice.org Cairo Canvas *
************************************************************************/
#include <osl/diagnose.h>
@ -205,13 +205,19 @@ namespace cairo
CGContextRef mrContext = getCGContext();
if (!mrContext) return;
#ifndef IOS
[mpView lockFocus];
#endif
#ifndef IOS
/**
* This code is using same screen update code as in VCL (esp. AquaSalGraphics::UpdateWindow() )
*/
CGContextRef rViewContext = reinterpret_cast<CGContextRef>([[NSGraphicsContext currentContext] graphicsPort]);
#else
// Just guessing for now...
CGContextRef rViewContext = UIGraphicsGetCurrentContext();
#endif
CGImageRef xImage = CGBitmapContextCreateImage(mrContext);
CGContextDrawImage(rViewContext,
CGRectMake( 0, 0,
@ -220,8 +226,9 @@ namespace cairo
xImage);
CGImageRelease( xImage );
CGContextFlush( rViewContext );
#ifndef IOS
[mpView unlockFocus];
#endif
}
/**

View File

@ -32,7 +32,13 @@
#include "cairo_cairo.hxx"
#include "premac.h"
#include <TargetConditionals.h>
#if !defined(TARGET_OS_IPHONE) || !TARGET_OS_IPHONE
#include <Cocoa/Cocoa.h>
#else
#include <UIKit/UIKit.h>
#define NSView UIView
#endif
#include <cairo-quartz.h>
#include "postmac.h"

View File

@ -352,7 +352,7 @@ namespace cairocanvas
**/
bool TextLayout::isCairoRenderable(SystemFontData aSysFontData) const
{
#if defined UNX && !defined QUARTZ
#if defined UNX && !defined QUARTZ && !defined IOS
// is font usable?
if (!aSysFontData.nFontId) return false;
#endif
@ -502,9 +502,14 @@ namespace cairocanvas
cairo_font_face_t* font_face = NULL;
#ifdef CAIRO_HAS_QUARTZ_SURFACE
#ifdef QUARTZ
// TODO: use cairo_quartz_font_face_create_for_cgfont(cgFont)
// when CGFont (Mac OS X 10.5 API) is provided by the AQUA VCL backend.
font_face = cairo_quartz_font_face_create_for_atsu_font_id((ATSUFontID) rSysFontData.aATSUFontID);
#else // iOS
font_face = cairo_quartz_font_face_create_for_cgfont( rSysFontData.rFont);
#endif
#elif defined CAIRO_HAS_WIN32_SURFACE
#if (OSL_DEBUG_LEVEL > 1)

View File

@ -56,6 +56,10 @@ CFLAGS+=$(CAIRO_CFLAGS)
CFLAGS+=-I$(SOLARINCDIR)/cairo
.ENDIF
.IF "$(OS)" == "IOS"
CFLAGS+= -x objective-c++ -fobjc-exceptions -fobjc-abi-version=2 -fobjc-legacy-dispatch -D__IPHONE_OS_VERSION_MIN_REQUIRED=40300
.ENDIF
.IF "$(verbose)"!="" || "$(VERBOSE)"!=""
CDEFS+= -DVERBOSE
.ENDIF
@ -88,18 +92,18 @@ SHL1STDLIBS+= $(CAIRO_LIBS)
SHL1STDLIBS+= -lcairo -lpixman-1
.ENDIF
.IF "$(GUIBASE)"=="aqua"
# native Mac OS X (Quartz)
.IF "$(GUIBASE)"=="aqua" || "$(GUIBASE)"=="cocoatouch"
# native Mac OS X (Quartz) or iOS
SLOFILES+= $(SLO)$/cairo_quartz_cairo.obj
CFLAGSCXX+=$(OBJCXXFLAGS)
.ELSE # "$(GUIBASE)"=="aqua"
.ELSE # "$(GUIBASE)"=="aqua" || "$(GUIBASE)"=="cocoatouch"
# Xlib
SLOFILES+= $(SLO)$/cairo_xlib_cairo.obj
SHL1STDLIBS+= $(FONTCONFIG_LIBS) -lX11 -lXrender $(FREETYPE_LIBS)
CFLAGS+= $(FREETYPE_CFLAGS)
.ENDIF # "$(GUIBASE)"=="aqua"
.ENDIF # "$(GUIBASE)"=="aqua" || "$(GUIBASE)"=="cocoatouch"
.ELSE # "$(GUI)"=="UNX"