draft test app to show skia in a window



git-svn-id: http://skia.googlecode.com/svn/trunk@32 2bbb7eff-a529-9590-31e7-b0007b416f81
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 = "<group>"; };
+		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 = "<group>"; };
+		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 = "<absolute>"; };
+		01FC44D407BD3BB800D228F4 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = "<absolute>"; };
+		0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
+		20286C2BFDCF999611CA2CEA /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
+		20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
+		32DBCF6D0370B57F00C91783 /* CICarbonSample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CICarbonSample_Prefix.pch; sourceTree = "<group>"; };
+		4A9504C8FFE6A3BC11CA0CBA /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
+		4A9504CAFFE6A41611CA0CBA /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
+		8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+		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 = "<group>";
+		};
+		002884B50EFAB69F0083E387 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				002884BC0EFAB69F0083E387 /* libmaccore.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		195DF8CFFE9D517E11CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8D0C4E970486CD37000505A6 /* CICarbonSample.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		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 = "<group>";
+		};
+		20286C2AFDCF999611CA2CEA /* Sources */ = {
+			isa = PBXGroup;
+			children = (
+				0028845D0EFAB2190083E387 /* SkCreateCGImageRef.cpp */,
+				32DBCF6D0370B57F00C91783 /* CICarbonSample_Prefix.pch */,
+				20286C2BFDCF999611CA2CEA /* main.c */,
+				002884140EFA97F80083E387 /* test.cpp */,
+			);
+			name = Sources;
+			sourceTree = "<group>";
+		};
+		20286C2CFDCF999611CA2CEA /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				8D0C4E960486CD37000505A6 /* Info.plist */,
+				0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */,
+				02345980000FD03B11CA0E72 /* main.nib */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		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 = "<group>";
+		};
+/* 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 = "<group>";
+		};
+		0867D6AAFE840B52C02AAC07 /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				0867D6ABFE840B52C02AAC07 /* English */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+/* 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 <Carbon/Carbon.h>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>CICarbonSample</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.apple.CICarbonSample</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.1</string>
+	<key>CFBundleSignature</key>
+	<string>CICS</string>
+	<key>CFBundleVersion</key>
+	<string>1.1</string>
+	<key>CSResourcesFileMapped</key>
+	<true/>
+</dict>
+</plist>
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 <Carbon/Carbon.h>
+#include "SkBitmap.h"
+
+extern CGImageRef SkCreateCGImageRef(const SkBitmap&);
+
+static const void* SkBitmap_GetBytesPointer(void* info) {
+    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(info);
+    bitmap->lockPixels();
+    return bitmap->getPixels();
+}
+
+static void SkBitmap_ReleaseBytePointer(void* info, const void* pointer) {
+    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(info);
+    bitmap->unlockPixels();
+}
+
+static size_t SkBitmap_GetBytesAtPosition(void* info, void* buffer,
+                                             off_t offset, size_t count) {
+    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(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<SkBitmap*>(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 <Carbon/Carbon.h>
+
+/* 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 <Carbon/Carbon.h>
+#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 = "<group>";
+		};
+		08FB7795FE84155DC02AAC07 /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				002884E00EFABFFC0083E387 /* SkGlobals_global.cpp */,
+				002884A20EFAB5DE0083E387 /* SkOSFile_stdio.cpp */,
+				002884A30EFAB5DE0083E387 /* SkThread_pthread.cpp */,
+				002884A40EFAB5DE0083E387 /* SkTime_Unix.cpp */,
+			);
+			name = Source;
+			sourceTree = "<group>";
+		};
+		1AB674ADFE9D54B511CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				D2AAC046055464E500DB518D /* libmaccore.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		C6A0FF2B0290797F04C91782 /* Documentation */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			name = Documentation;
+			sourceTree = "<group>";
+		};
+/* 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 */;
+}