1 /* 2 * Copyright 2017 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkOSFile_ios_DEFINED 9 #define SkOSFile_ios_DEFINED 10 11 #include "SkString.h" 12 13 #ifdef SK_BUILD_FOR_IOS 14 #import <CoreFoundation/CoreFoundation.h> 15 16 static bool ios_get_path_in_bundle(const char path[], SkString* result) { 17 // Get a reference to the main bundle 18 CFBundleRef mainBundle = CFBundleGetMainBundle(); 19 20 // Get a reference to the file's URL 21 CFStringRef pathRef = CFStringCreateWithCString(nullptr, path, kCFStringEncodingUTF8); 22 // We use "data" as our subdirectory to match {{bundle_resources_dir}}/data in GN 23 // Unfortunately "resources" is not a valid top-level name in iOS, so we push it one level down 24 CFURLRef imageURL = CFBundleCopyResourceURL(mainBundle, pathRef, nullptr, CFSTR("data")); 25 CFRelease(pathRef); 26 if (!imageURL) { 27 return false; 28 } 29 if (!result) { 30 return true; 31 } 32 33 // Convert the URL reference into a string reference 34 CFStringRef imagePath = CFURLCopyFileSystemPath(imageURL, kCFURLPOSIXPathStyle); 35 CFRelease(imageURL); 36 37 // Get the system encoding method 38 CFStringEncoding encodingMethod = CFStringGetSystemEncoding(); 39 40 // Convert the string reference into an SkString 41 result->set(CFStringGetCStringPtr(imagePath, encodingMethod)); 42 return true; 43 } 44 #endif 45 46 #endif // SkOSFile_ios_DEFINED 47