blob: d74aa200ccbcb05c15f7bdded45b28974ef6212a [file] [log] [blame]
Jim Van Verth329c5a62017-11-29 11:42:33 -05001/*
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
13static 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