• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "SkString.h"
9 
10 #ifdef SK_BUILD_FOR_IOS
11 #import <CoreFoundation/CoreFoundation.h>
12 
ios_get_path_in_bundle(const char path[],SkString * result)13 static bool ios_get_path_in_bundle(const char path[], SkString* result) {
14     // Get a reference to the main bundle
15     CFBundleRef mainBundle = CFBundleGetMainBundle();
16 
17     // Get a reference to the file's URL
18     CFStringRef pathRef = CFStringCreateWithCString(nullptr, path, kCFStringEncodingUTF8);
19     // We use "data" as our subdirectory to match {{bundle_resources_dir}}/data in GN
20     // Unfortunately "resources" is not a valid top-level name in iOS, so we push it one level down
21     CFURLRef imageURL = CFBundleCopyResourceURL(mainBundle, pathRef, nullptr, CFSTR("data"));
22     CFRelease(pathRef);
23     if (!imageURL) {
24         return false;
25     }
26     if (!result) {
27         return true;
28     }
29 
30     // Convert the URL reference into a string reference
31     CFStringRef imagePath = CFURLCopyFileSystemPath(imageURL, kCFURLPOSIXPathStyle);
32     CFRelease(imageURL);
33 
34     // Get the system encoding method
35     CFStringEncoding encodingMethod = CFStringGetSystemEncoding();
36 
37     // Convert the string reference into an SkString
38     result->set(CFStringGetCStringPtr(imagePath, encodingMethod));
39     return true;
40 }
41 #endif
42