From 758b129f11d8ce2d2235f73ea4523f21f3d8b079 Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Thu, 18 Dec 2008 17:54:12 +0000 Subject: [PATCH] draft test app to show skia in a window git-svn-id: http://skia.googlecode.com/svn/trunk@32 2bbb7eff-a529-9590-31e7-b0007b416f81 --- .../CICarbonSample.xcodeproj/project.pbxproj | 389 +++++++++++++++++++ xcode/hostapp/CICarbonSample_Prefix.pch | 5 + xcode/hostapp/Info.plist | 26 ++ xcode/hostapp/SkCreateCGImageRef.cpp | 80 ++++ xcode/hostapp/main.c | 420 +++++++++++++++++++++ xcode/hostapp/test.cpp | 48 +++ xcode/maccore/maccore.xcodeproj/project.pbxproj | 215 +++++++++++ 7 files changed, 1183 insertions(+) create mode 100644 xcode/hostapp/CICarbonSample.xcodeproj/project.pbxproj create mode 100644 xcode/hostapp/CICarbonSample_Prefix.pch create mode 100644 xcode/hostapp/Info.plist create mode 100644 xcode/hostapp/SkCreateCGImageRef.cpp create mode 100644 xcode/hostapp/main.c create mode 100644 xcode/hostapp/test.cpp create mode 100644 xcode/maccore/maccore.xcodeproj/project.pbxproj diff --git a/xcode/hostapp/CICarbonSample.xcodeproj/project.pbxproj b/xcode/hostapp/CICarbonSample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..61b3747 --- /dev/null +++ b/xcode/hostapp/CICarbonSample.xcodeproj/project.pbxproj @@ -0,0 +1,389 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 002884150EFA97F80083E387 /* test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884140EFA97F80083E387 /* test.cpp */; }; + 0028845E0EFAB2190083E387 /* SkCreateCGImageRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0028845D0EFAB2190083E387 /* SkCreateCGImageRef.cpp */; }; + 0028847B0EFAB46A0083E387 /* libcore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 002884510EFAA35C0083E387 /* libcore.a */; }; + 002884BD0EFAB6A30083E387 /* libmaccore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 002884BC0EFAB69F0083E387 /* libmaccore.a */; }; + 002884D90EFABFE60083E387 /* SkFontHost_none.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884D80EFABFE60083E387 /* SkFontHost_none.cpp */; }; + 0156F80407C56A3000C6122B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0156F80307C56A3000C6122B /* Foundation.framework */; }; + 01FC44D507BD3BB800D228F4 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01FC44D407BD3BB800D228F4 /* Quartz.framework */; }; + 8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */; }; + 8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; }; + 8D0C4E900486CD37000505A6 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 20286C2BFDCF999611CA2CEA /* main.c */; settings = {ATTRIBUTES = (); }; }; + 8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 002884500EFAA35C0083E387 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 002884490EFAA35C0083E387 /* core.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D2AAC046055464E500DB518D /* libcore.a */; + remoteInfo = core; + }; + 002884540EFAA3770083E387 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 002884490EFAA35C0083E387 /* core.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D2AAC045055464E500DB518D /* core */; + remoteInfo = core; + }; + 002884BB0EFAB69F0083E387 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 002884B40EFAB69F0083E387 /* maccore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D2AAC046055464E500DB518D /* libmaccore.a */; + remoteInfo = maccore; + }; + 002884BE0EFAB6B00083E387 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 002884B40EFAB69F0083E387 /* maccore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D2AAC045055464E500DB518D /* maccore */; + remoteInfo = maccore; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 002884140EFA97F80083E387 /* test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test.cpp; sourceTree = ""; }; + 002884490EFAA35C0083E387 /* core.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = core.xcodeproj; path = ../core/core.xcodeproj; sourceTree = SOURCE_ROOT; }; + 0028845D0EFAB2190083E387 /* SkCreateCGImageRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkCreateCGImageRef.cpp; sourceTree = ""; }; + 002884B40EFAB69F0083E387 /* maccore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = maccore.xcodeproj; path = ../maccore/maccore.xcodeproj; sourceTree = SOURCE_ROOT; }; + 002884D80EFABFE60083E387 /* SkFontHost_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkFontHost_none.cpp; path = ../../src/ports/SkFontHost_none.cpp; sourceTree = SOURCE_ROOT; }; + 0156F80307C56A3000C6122B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 01FC44D407BD3BB800D228F4 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = ""; }; + 0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = ""; }; + 20286C2BFDCF999611CA2CEA /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + 20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + 32DBCF6D0370B57F00C91783 /* CICarbonSample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CICarbonSample_Prefix.pch; sourceTree = ""; }; + 4A9504C8FFE6A3BC11CA0CBA /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; + 4A9504CAFFE6A41611CA0CBA /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; + 8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8D0C4E970486CD37000505A6 /* CICarbonSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CICarbonSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D0C4E910486CD37000505A6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */, + 01FC44D507BD3BB800D228F4 /* Quartz.framework in Frameworks */, + 0156F80407C56A3000C6122B /* Foundation.framework in Frameworks */, + 0028847B0EFAB46A0083E387 /* libcore.a in Frameworks */, + 002884BD0EFAB6A30083E387 /* libmaccore.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0028844A0EFAA35C0083E387 /* Products */ = { + isa = PBXGroup; + children = ( + 002884510EFAA35C0083E387 /* libcore.a */, + ); + name = Products; + sourceTree = ""; + }; + 002884B50EFAB69F0083E387 /* Products */ = { + isa = PBXGroup; + children = ( + 002884BC0EFAB69F0083E387 /* libmaccore.a */, + ); + name = Products; + sourceTree = ""; + }; + 195DF8CFFE9D517E11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D0C4E970486CD37000505A6 /* CICarbonSample.app */, + ); + name = Products; + sourceTree = ""; + }; + 20286C29FDCF999611CA2CEA /* CICarbonSample */ = { + isa = PBXGroup; + children = ( + 002884D80EFABFE60083E387 /* SkFontHost_none.cpp */, + 20286C2AFDCF999611CA2CEA /* Sources */, + 20286C2CFDCF999611CA2CEA /* Resources */, + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */, + 195DF8CFFE9D517E11CA2CBB /* Products */, + 002884490EFAA35C0083E387 /* core.xcodeproj */, + 002884B40EFAB69F0083E387 /* maccore.xcodeproj */, + ); + name = CICarbonSample; + sourceTree = ""; + }; + 20286C2AFDCF999611CA2CEA /* Sources */ = { + isa = PBXGroup; + children = ( + 0028845D0EFAB2190083E387 /* SkCreateCGImageRef.cpp */, + 32DBCF6D0370B57F00C91783 /* CICarbonSample_Prefix.pch */, + 20286C2BFDCF999611CA2CEA /* main.c */, + 002884140EFA97F80083E387 /* test.cpp */, + ); + name = Sources; + sourceTree = ""; + }; + 20286C2CFDCF999611CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 8D0C4E960486CD37000505A6 /* Info.plist */, + 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */, + 02345980000FD03B11CA0E72 /* main.nib */, + ); + name = Resources; + sourceTree = ""; + }; + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 0156F80307C56A3000C6122B /* Foundation.framework */, + 01FC44D407BD3BB800D228F4 /* Quartz.framework */, + 20286C33FDCF999611CA2CEA /* Carbon.framework */, + 4A9504CAFFE6A41611CA0CBA /* CoreServices.framework */, + 4A9504C8FFE6A3BC11CA0CBA /* ApplicationServices.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D0C4E890486CD37000505A6 /* CICarbonSample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 01E2163909EDAC6600E66AF8 /* Build configuration list for PBXNativeTarget "CICarbonSample" */; + buildPhases = ( + 8D0C4E8C0486CD37000505A6 /* Resources */, + 8D0C4E8F0486CD37000505A6 /* Sources */, + 8D0C4E910486CD37000505A6 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 002884550EFAA3770083E387 /* PBXTargetDependency */, + 002884BF0EFAB6B00083E387 /* PBXTargetDependency */, + ); + name = CICarbonSample; + productInstallPath = "$(HOME)/Applications"; + productName = CICarbonSample; + productReference = 8D0C4E970486CD37000505A6 /* CICarbonSample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 20286C28FDCF999611CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 01E2163D09EDAC6600E66AF8 /* Build configuration list for PBXProject "CICarbonSample" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 20286C29FDCF999611CA2CEA /* CICarbonSample */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0028844A0EFAA35C0083E387 /* Products */; + ProjectRef = 002884490EFAA35C0083E387 /* core.xcodeproj */; + }, + { + ProductGroup = 002884B50EFAB69F0083E387 /* Products */; + ProjectRef = 002884B40EFAB69F0083E387 /* maccore.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 8D0C4E890486CD37000505A6 /* CICarbonSample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 002884510EFAA35C0083E387 /* libcore.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcore.a; + remoteRef = 002884500EFAA35C0083E387 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 002884BC0EFAB69F0083E387 /* libmaccore.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libmaccore.a; + remoteRef = 002884BB0EFAB69F0083E387 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D0C4E8C0486CD37000505A6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D0C4E8D0486CD37000505A6 /* InfoPlist.strings in Resources */, + 8D0C4E8E0486CD37000505A6 /* main.nib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D0C4E8F0486CD37000505A6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D0C4E900486CD37000505A6 /* main.c in Sources */, + 002884150EFA97F80083E387 /* test.cpp in Sources */, + 0028845E0EFAB2190083E387 /* SkCreateCGImageRef.cpp in Sources */, + 002884D90EFABFE60083E387 /* SkFontHost_none.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 002884550EFAA3770083E387 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = core; + targetProxy = 002884540EFAA3770083E387 /* PBXContainerItemProxy */; + }; + 002884BF0EFAB6B00083E387 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = maccore; + targetProxy = 002884BE0EFAB6B00083E387 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 02345980000FD03B11CA0E72 /* main.nib */ = { + isa = PBXVariantGroup; + children = ( + 1870340FFE93FCAF11CA0CD7 /* English */, + ); + name = main.nib; + sourceTree = ""; + }; + 0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 0867D6ABFE840B52C02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 01E2163A09EDAC6600E66AF8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = CICarbonSample_Prefix.pch; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = CICarbonSample; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Development; + }; + 01E2163B09EDAC6600E66AF8 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = CICarbonSample_Prefix.pch; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = CICarbonSample; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Deployment; + }; + 01E2163C09EDAC6600E66AF8 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = CICarbonSample_Prefix.pch; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = CICarbonSample; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = app; + }; + name = Default; + }; + 01E2163E09EDAC6600E66AF8 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + USER_HEADER_SEARCH_PATHS = "../../include/**"; + }; + name = Development; + }; + 01E2163F09EDAC6600E66AF8 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Deployment; + }; + 01E2164009EDAC6600E66AF8 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Default; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 01E2163909EDAC6600E66AF8 /* Build configuration list for PBXNativeTarget "CICarbonSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 01E2163A09EDAC6600E66AF8 /* Development */, + 01E2163B09EDAC6600E66AF8 /* Deployment */, + 01E2163C09EDAC6600E66AF8 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + 01E2163D09EDAC6600E66AF8 /* Build configuration list for PBXProject "CICarbonSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 01E2163E09EDAC6600E66AF8 /* Development */, + 01E2163F09EDAC6600E66AF8 /* Deployment */, + 01E2164009EDAC6600E66AF8 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; +/* End XCConfigurationList section */ + }; + rootObject = 20286C28FDCF999611CA2CEA /* Project object */; +} diff --git a/xcode/hostapp/CICarbonSample_Prefix.pch b/xcode/hostapp/CICarbonSample_Prefix.pch new file mode 100644 index 0000000..a74776b --- /dev/null +++ b/xcode/hostapp/CICarbonSample_Prefix.pch @@ -0,0 +1,5 @@ +// +// Prefix header for all source files of the 'CICarbonSample' target in the 'CICarbonSample' project. +// + +#include diff --git a/xcode/hostapp/Info.plist b/xcode/hostapp/Info.plist new file mode 100644 index 0000000..8bc7477 --- /dev/null +++ b/xcode/hostapp/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + CICarbonSample + CFBundleIconFile + + CFBundleIdentifier + com.apple.CICarbonSample + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.1 + CFBundleSignature + CICS + CFBundleVersion + 1.1 + CSResourcesFileMapped + + + diff --git a/xcode/hostapp/SkCreateCGImageRef.cpp b/xcode/hostapp/SkCreateCGImageRef.cpp new file mode 100644 index 0000000..7cea543 --- /dev/null +++ b/xcode/hostapp/SkCreateCGImageRef.cpp @@ -0,0 +1,80 @@ +#include +#include "SkBitmap.h" + +extern CGImageRef SkCreateCGImageRef(const SkBitmap&); + +static const void* SkBitmap_GetBytesPointer(void* info) { + SkBitmap* bitmap = reinterpret_cast(info); + bitmap->lockPixels(); + return bitmap->getPixels(); +} + +static void SkBitmap_ReleaseBytePointer(void* info, const void* pointer) { + SkBitmap* bitmap = reinterpret_cast(info); + bitmap->unlockPixels(); +} + +static size_t SkBitmap_GetBytesAtPosition(void* info, void* buffer, + off_t offset, size_t count) { + SkBitmap* bitmap = reinterpret_cast(info); + bitmap->lockPixels(); + memcpy(buffer, (const char*)bitmap->getPixels() + offset, count); + bitmap->unlockPixels(); + return count; +} + +static void SkBitmap_ReleaseInfo(void* info) { + SkBitmap* bitmap = reinterpret_cast(info); + delete bitmap; +} + +static SkBitmap* prepareForImageRef(const SkBitmap& bm, + size_t* bitsPerComponent, + CGBitmapInfo* info) { + switch (bm.config()) { + case SkBitmap::kARGB_8888_Config: + *bitsPerComponent = 8; + // try to match our argb ordering in SkColorPriv + *info = kCGBitmapByteOrder32Big | + kCGImageAlphaPremultipliedLast; + break; + default: + return NULL; + } + + return new SkBitmap(bm); +} + +CGImageRef SkCreateCGImageRef(const SkBitmap& bm) { + size_t bitsPerComponent; + CGBitmapInfo info; + + SkBitmap* bitmap = prepareForImageRef(bm, &bitsPerComponent, &info); + if (NULL == bitmap) { + return NULL; + } + + const int w = bitmap->width(); + const int h = bitmap->height(); + const size_t s = bitmap->getSize(); + + CGDataProviderDirectCallbacks procs; + procs.version = 0; + procs.getBytePointer = SkBitmap_GetBytesPointer; + procs.releaseBytePointer = SkBitmap_ReleaseBytePointer; + procs.getBytesAtPosition = SkBitmap_GetBytesAtPosition; + procs.releaseInfo = SkBitmap_ReleaseInfo; + + // our provider "owns" the bitmap*, and will take care of deleting it + CGDataProviderRef dataRef = CGDataProviderCreateDirect(bitmap, s, &procs); + CGColorSpaceRef space = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); + CGImageRef ref = CGImageCreate(w, h, bitsPerComponent, + bitmap->bytesPerPixel() * 8, + bitmap->rowBytes(), space, info, dataRef, + NULL, false, kCGRenderingIntentDefault); + CGColorSpaceRelease(space); + CGDataProviderRelease(dataRef); + return ref; +} + + diff --git a/xcode/hostapp/main.c b/xcode/hostapp/main.c new file mode 100644 index 0000000..bed568e --- /dev/null +++ b/xcode/hostapp/main.c @@ -0,0 +1,420 @@ +/* + +File: main.c + +Abstract: Main event loop and app handling code is found in here. + +Version: 1.0 + +� Copyright 2005 Apple Computer, Inc. All rights reserved. + +IMPORTANT: This Apple software is supplied to +you by Apple Computer, Inc. ("Apple") in +consideration of your agreement to the following +terms, and your use, installation, modification +or redistribution of this Apple software +constitutes acceptance of these terms. If you do +not agree with these terms, please do not use, +install, modify or redistribute this Apple +software. + +In consideration of your agreement to abide by +the following terms, and subject to these terms, +Apple grants you a personal, non-exclusive +license, under Apple's copyrights in this +original Apple software (the "Apple Software"), +to use, reproduce, modify and redistribute the +Apple Software, with or without modifications, in +source and/or binary forms; provided that if you +redistribute the Apple Software in its entirety +and without modifications, you must retain this +notice and the following text and disclaimers in +all such redistributions of the Apple Software. +Neither the name, trademarks, service marks or +logos of Apple Computer, Inc. may be used to +endorse or promote products derived from the +Apple Software without specific prior written +permission from Apple. Except as expressly +stated in this notice, no other rights or +licenses, express or implied, are granted by +Apple herein, including but not limited to any +patent rights that may be infringed by your +derivative works or by other works in which the +Apple Software may be incorporated. + +The Apple Software is provided by Apple on an "AS +IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR +IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED +WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING +THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE +OR IN COMBINATION WITH YOUR PRODUCTS. + +IN NO EVENT SHALL APPLE BE LIABLE FOR ANY +SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, +REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF +THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER +UNDER THEORY OF CONTRACT, TORT (INCLUDING +NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN +IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +*/ + + +#include + +/* Constants */ +#define kMyHIViewSignature 'ciHV' +#define kMyHIViewFieldID 128 +#define kGammaSliderSignature 'gSLD' +#define kGammaSliderFieldID 128 +#define kAboutBoxStringKey CFSTR("AboutString") // these key the localizable strings + +/* Private Prototypes */ +static OSStatus MyDrawEventHandler(EventHandlerCallRef myHandler, EventRef event, void *userData); +static void MyGammaSliderProc( ControlHandle control, SInt16 part ); +static pascal OSStatus DoAppCommandProcess(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData); +static PMPageFormat CreateDefaultPageFormat(void); +static OSStatus DoPageSetup(PMPageFormat pageFormat); +static OSStatus DoPrint(PMPageFormat pageFormat); +static OSStatus MyDoPrintLoop(PMPrintSession printSession, PMPageFormat pageFormat, PMPrintSettings printSettings); +static void DoAboutBox(); + +/* Global Data */ +static HIViewRef gMyHIView = NULL; +static HIViewRef gGammaSliderView = NULL; +static PMPageFormat gPageFormat = NULL; + +int main(int argc, char* argv[]) +{ + static const HIViewID kMyViewID = {kMyHIViewSignature, kMyHIViewFieldID }; + static const HIViewID kGammaSliderID = {kGammaSliderSignature, kGammaSliderFieldID }; + + IBNibRef nibRef; + WindowRef window; + EventTargetRef myEventTarget; + static const EventTypeSpec kMyViewEvents[] = {kEventClassControl, kEventControlDraw }; + static const EventTypeSpec kMyCommandEvents[] = {kEventClassCommand, kEventCommandProcess }; + OSStatus err = noErr; + + // Create a Nib reference passing the name of the nib file (without the .nib extension) + // CreateNibReference only searches into the application bundle. + err = CreateNibReference(CFSTR("main"), &nibRef); + require_noerr( err, CantGetNibRef ); + + // Once the nib reference is created, set the menu bar. "MainMenu" is the name of the menu bar + // object. This name is set in InterfaceBuilder when the nib is created. + err = SetMenuBarFromNib(nibRef, CFSTR("MenuBar")); + require_noerr( err, CantSetMenuBar ); + + // Then create a window. "MainWindow" is the name of the window object. This name is set in + // InterfaceBuilder when the nib is created. + err = CreateWindowFromNib(nibRef, CFSTR("MainWindow"), &window); + require_noerr( err, CantCreateWindow ); + // Get the HIView associated with the window. + HIViewFindByID( HIViewGetRoot( window ), kMyViewID, &gMyHIView ); + + // make the view opaque + HIViewChangeFeatures(gMyHIView, kHIViewIsOpaque, 0); + + // Get the event target for the view. + myEventTarget = GetControlEventTarget (gMyHIView); + + // Install the event handler for the HIView. + err = InstallEventHandler (myEventTarget, + NewEventHandlerUPP (MyDrawEventHandler), + GetEventTypeCount(kMyViewEvents), + kMyViewEvents, + (void *) gMyHIView, + NULL); + + + HIViewFindByID( HIViewGetRoot( window ), kGammaSliderID, &gGammaSliderView ); + SetControlAction( gGammaSliderView, NewControlActionUPP(MyGammaSliderProc) ); + + // Install the handler for the menu commands. + InstallApplicationEventHandler(NewEventHandlerUPP(DoAppCommandProcess), GetEventTypeCount(kMyCommandEvents), + kMyCommandEvents, NULL, NULL); + + + // We don't need the nib reference anymore. + DisposeNibReference(nibRef); + + // The window was created hidden so show it. + ShowWindow( window ); + + // Call the event loop + RunApplicationEventLoop(); + +CantCreateWindow: +CantSetMenuBar: +CantGetNibRef: + return err; +} + +extern void SkiaDraw(CGContextRef rec, CGRect bounds); + +static OSStatus MyDrawEventHandler(EventHandlerCallRef myHandler, EventRef event, void *userData) +{ + // NOTE: GState is save/restored by the HIView system doing the callback, so the draw handler doesn't need to do it + + OSStatus status = noErr; + CGContextRef context; + HIRect bounds; + + // Get the CGContextRef + status = GetEventParameter (event, kEventParamCGContextRef, + typeCGContextRef, NULL, + sizeof (CGContextRef), + NULL, + &context); + + if(status != noErr){ + fprintf(stderr, "Got error %d getting the context!\n", status); + return status; + } + + // Get the bounding rectangle + HIViewGetBounds ((HIViewRef) userData, &bounds); + + // Flip the coordinates by translating and scaling. This produces a + // coordinate system that matches the Quartz default coordinate system + // with the origin in the lower-left corner with the y axis pointing up. + +// CGContextTranslateCTM (context, 0, bounds.size.height); +// CGContextScaleCTM (context, 1.0, -1.0); + + SkiaDraw(context, bounds); + return status; + +} + +static void MyGammaSliderProc( ControlHandle control, SInt16 part ) +{ +// gGammaValue = GetControl32BitValue(control); + HIViewSetNeedsDisplay(gMyHIView, true); + HIViewRender(gMyHIView); +} + + +// Handle command-process events at the application level +static pascal OSStatus DoAppCommandProcess(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData) +{ +#pragma unused (nextHandler, userData) + HICommand aCommand; + OSStatus result = eventNotHandledErr; + + GetEventParameter(theEvent, kEventParamDirectObject, typeHICommand, NULL, sizeof(HICommand), NULL, &aCommand); + + switch (aCommand.commandID) + { + + case kHICommandPageSetup: + if(gPageFormat == NULL) + gPageFormat = CreateDefaultPageFormat(); + + if(gPageFormat) + (void)DoPageSetup(gPageFormat); + + result = noErr; + break; + + case kHICommandPrint: + if(gPageFormat == NULL) + gPageFormat = CreateDefaultPageFormat(); + + if(gPageFormat) + (void)DoPrint(gPageFormat); + + result = noErr; + break; + + case kHICommandAbout: + DoAboutBox(); + result = noErr; + break; + + default: + break; + + case kHICommandQuit: + QuitApplicationEventLoop(); + result = noErr; + break; + } + HiliteMenu(0); + return result; +} + +static void DoAboutBox() +{ + CFStringRef outString = NULL; + SInt16 alertItemHit = 0; + Str255 stringBuf; + + outString = CFCopyLocalizedString(kAboutBoxStringKey, NULL); + if (outString != NULL) + { + if (CFStringGetPascalString (outString, stringBuf, sizeof(stringBuf), GetApplicationTextEncoding())) + { + StandardAlert(kAlertStopAlert, stringBuf, NULL, NULL, &alertItemHit); + } + CFRelease (outString); + } +} + +// ----------------------------------------------------------------------- +static PMPageFormat CreateDefaultPageFormat(void) +{ + OSStatus err = noErr, tempErr; + PMPageFormat pageFormat = NULL; + PMPrintSession printSession; + err = PMCreateSession(&printSession); + if(!err){ + err = PMCreatePageFormat(&pageFormat); // we own a reference to this page format + if(err == noErr) + err = PMSessionDefaultPageFormat(printSession, pageFormat); + + tempErr = PMRelease(printSession); + if(!err)err = tempErr; + } + if(err){ + fprintf(stderr, "got an error = %d creating the default page format\n", err); + } + return pageFormat; +} + +// ----------------------------------------------------------------- +static OSStatus DoPageSetup(PMPageFormat pageFormat) +{ + OSStatus err = noErr; + PMPrintSession printSession; + err = PMCreateSession(&printSession); + if(!err){ + Boolean accepted; + if(!err) // validate the page format we're going to pass to the dialog code + err = PMSessionValidatePageFormat(printSession, pageFormat, kPMDontWantBoolean); + if(!err){ + err = PMSessionPageSetupDialog(printSession, pageFormat, &accepted); + } + (void)PMRelease(printSession); + } + + if(err && err != kPMCancel) + fprintf(stderr, "Got an error %d in Page Setup\n", err); + + return err; +} // DoPageSetup + +// ------------------------------------------------------------------------------- +static OSStatus DoPrint(PMPageFormat pageFormat) +{ + OSStatus err = noErr; + UInt32 minPage = 1, maxPage = 1; + PMPrintSession printSession; + err = PMCreateSession(&printSession); + if(err == noErr){ + // validate the page format we're going to use + err = PMSessionValidatePageFormat(printSession, + pageFormat, + kPMDontWantBoolean); + if (err == noErr) + { + PMPrintSettings printSettings = NULL; + err = PMCreatePrintSettings(&printSettings); + if(err == noErr) + err = PMSessionDefaultPrintSettings(printSession, printSettings); + + if (err == noErr) + err = PMSetPageRange(printSettings, minPage, maxPage); + + if (err == noErr) + { + Boolean accepted; + err = PMSessionPrintDialog(printSession, printSettings, + pageFormat, + &accepted); + if(accepted){ + err = MyDoPrintLoop(printSession, pageFormat, printSettings); + } + } + if(printSettings) + (void)PMRelease(printSettings); + } + + (void)PMRelease(printSession); // ignoring error since we already have one + } + + if(err && err != kPMCancel) + fprintf(stderr, "Got an error %d in Print\n", err); + return err; +} + +// -------------------------------------------------------------------------------------- +static OSStatus MyDoPrintLoop(PMPrintSession printSession, PMPageFormat pageFormat, PMPrintSettings printSettings) +{ + OSStatus err = noErr; + OSStatus tempErr = noErr; + UInt32 firstPage, lastPage, totalDocPages = 1; + + if(!err) + err = PMGetFirstPage(printSettings, &firstPage); + + if (!err) + err = PMGetLastPage(printSettings, &lastPage); + + if(!err && lastPage > totalDocPages){ + // don't draw more than the number of pages in our document + lastPage = totalDocPages; + } + + if (!err) // tell the printing system the number of pages we are going to print + err = PMSetLastPage(printSettings, lastPage, false); + + if (!err) + { + err = PMSessionBeginCGDocument(printSession, printSettings, pageFormat); + if (!err){ + UInt32 pageNumber = firstPage; + // need to check errors from our print loop and errors from the session for each + // time around our print loop before calling our BeginPageProc + while(pageNumber <= lastPage && err == noErr && PMSessionError(printSession) == noErr) + { + err = PMSessionBeginPage(printSession, pageFormat, NULL); + if (!err){ + CGContextRef printingContext = NULL; + err = PMSessionGetCGGraphicsContext(printSession, &printingContext); + if(!err){ + PMRect pageRect; + + PMGetAdjustedPaperRect(pageFormat, &pageRect); +#if 0 + DoDraw(printingContext, CGRectMake(pageRect.left, pageRect.top, pageRect.right - pageRect.left, pageRect.bottom - pageRect.top)); +#endif + } + // we must call EndPage if BeginPage returned noErr + tempErr = PMSessionEndPage(printSession); + + if(!err)err = tempErr; + } + pageNumber++; + } // end while loop + + // we must call EndDocument if BeginDocument returned noErr + tempErr = PMSessionEndDocument(printSession); + + if(!err)err = tempErr; + if(!err) + err = PMSessionError(printSession); + } + } + return err; +} + + + diff --git a/xcode/hostapp/test.cpp b/xcode/hostapp/test.cpp new file mode 100644 index 0000000..aae344d --- /dev/null +++ b/xcode/hostapp/test.cpp @@ -0,0 +1,48 @@ +#include +#include "SkCanvas.h" +#include "SkPaint.h" + +extern CGImageRef SkCreateCGImageRef(const SkBitmap&); +extern "C" void SkiaDraw(CGContextRef cg, CGRect bounds); + +static void sampleDraw(SkCanvas* canvas) { + canvas->drawColor(0xFF0000FF); + + SkPaint paint; + paint.setAntiAlias(true); + + canvas->drawCircle(SkIntToScalar(100), SkIntToScalar(100), + SkIntToScalar(90), paint); +} + +static CGImageRef gImage; + +void SkiaDraw(CGContextRef cg, CGRect bounds) { + if (NULL == gImage) { + SkBitmap bitmap; + bitmap.setConfig(SkBitmap::kARGB_8888_Config, 640, 480); + bitmap.allocPixels(); + + SkCanvas canvas(bitmap); + sampleDraw(&canvas); + + gImage = SkCreateCGImageRef(bitmap); + } + + CGColorRef color = CGColorCreateGenericRGB(1, 1, 1, 1); + CGContextSetFillColorWithColor(cg, color); + CGColorRelease(color); + CGContextFillRect(cg, bounds); + + CGRect r = CGRectMake(0, 0, 640, 480); + + CGContextSaveGState(cg); + CGContextTranslateCTM(cg, 0, r.size.height); + CGContextScaleCTM(cg, 1, -1); + + CGContextDrawImage(cg, r, gImage); + + CGContextRestoreGState(cg); +} + + diff --git a/xcode/maccore/maccore.xcodeproj/project.pbxproj b/xcode/maccore/maccore.xcodeproj/project.pbxproj new file mode 100644 index 0000000..218f217 --- /dev/null +++ b/xcode/maccore/maccore.xcodeproj/project.pbxproj @@ -0,0 +1,215 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 44; + objects = { + +/* Begin PBXBuildFile section */ + 002884A50EFAB5DE0083E387 /* SkOSFile_stdio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884A20EFAB5DE0083E387 /* SkOSFile_stdio.cpp */; }; + 002884A60EFAB5DE0083E387 /* SkThread_pthread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884A30EFAB5DE0083E387 /* SkThread_pthread.cpp */; }; + 002884A70EFAB5DE0083E387 /* SkTime_Unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884A40EFAB5DE0083E387 /* SkTime_Unix.cpp */; }; + 002884E10EFABFFC0083E387 /* SkGlobals_global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 002884E00EFABFFC0083E387 /* SkGlobals_global.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 002884A20EFAB5DE0083E387 /* SkOSFile_stdio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkOSFile_stdio.cpp; path = ../../src/ports/SkOSFile_stdio.cpp; sourceTree = SOURCE_ROOT; }; + 002884A30EFAB5DE0083E387 /* SkThread_pthread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkThread_pthread.cpp; path = ../../src/ports/SkThread_pthread.cpp; sourceTree = SOURCE_ROOT; }; + 002884A40EFAB5DE0083E387 /* SkTime_Unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkTime_Unix.cpp; path = ../../src/ports/SkTime_Unix.cpp; sourceTree = SOURCE_ROOT; }; + 002884E00EFABFFC0083E387 /* SkGlobals_global.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkGlobals_global.cpp; path = ../../src/ports/SkGlobals_global.cpp; sourceTree = SOURCE_ROOT; }; + D2AAC046055464E500DB518D /* libmaccore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmaccore.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D289987405E68DCB004EDB86 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* maccore */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + C6A0FF2B0290797F04C91782 /* Documentation */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = maccore; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 002884E00EFABFFC0083E387 /* SkGlobals_global.cpp */, + 002884A20EFAB5DE0083E387 /* SkOSFile_stdio.cpp */, + 002884A30EFAB5DE0083E387 /* SkThread_pthread.cpp */, + 002884A40EFAB5DE0083E387 /* SkTime_Unix.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + D2AAC046055464E500DB518D /* libmaccore.a */, + ); + name = Products; + sourceTree = ""; + }; + C6A0FF2B0290797F04C91782 /* Documentation */ = { + isa = PBXGroup; + children = ( + ); + name = Documentation; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D2AAC043055464E500DB518D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D2AAC045055464E500DB518D /* maccore */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB91EB08733DB70010E9CD /* Build configuration list for PBXNativeTarget "maccore" */; + buildPhases = ( + D2AAC043055464E500DB518D /* Headers */, + D2AAC044055464E500DB518D /* Sources */, + D289987405E68DCB004EDB86 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = maccore; + productName = maccore; + productReference = D2AAC046055464E500DB518D /* libmaccore.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "maccore" */; + compatibilityVersion = "Xcode 3.0"; + hasScannedForEncodings = 1; + mainGroup = 08FB7794FE84155DC02AAC07 /* maccore */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D2AAC045055464E500DB518D /* maccore */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + D2AAC044055464E500DB518D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 002884A50EFAB5DE0083E387 /* SkOSFile_stdio.cpp in Sources */, + 002884A60EFAB5DE0083E387 /* SkThread_pthread.cpp in Sources */, + 002884A70EFAB5DE0083E387 /* SkTime_Unix.cpp in Sources */, + 002884E10EFABFFC0083E387 /* SkGlobals_global.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB91EC08733DB70010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = maccore; + ZERO_LINK = YES; + }; + name = Debug; + }; + 1DEB91ED08733DB70010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = maccore; + }; + name = Release; + }; + 1DEB91F008733DB70010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PREPROCESSOR_DEFINITIONS = ( + SK_BUILD_FOR_MAC, + SK_DEBUG, + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + USER_HEADER_SEARCH_PATHS = "../../include/ports ../../include/core"; + }; + name = Debug; + }; + 1DEB91F108733DB70010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + SK_BUILD_FOR_MAC, + SK_RELEASE, + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + USER_HEADER_SEARCH_PATHS = "../../include/ports ../../include/core"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB91EB08733DB70010E9CD /* Build configuration list for PBXNativeTarget "maccore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB91EC08733DB70010E9CD /* Debug */, + 1DEB91ED08733DB70010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "maccore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB91F008733DB70010E9CD /* Debug */, + 1DEB91F108733DB70010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} -- 2.7.4