From 77f2e38a38f45bdc0d7c3fe11deb1933dec06ddc Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Fri, 29 May 2015 20:15:25 +0200 Subject: [PATCH] WIP: Support for getting image sources and native TabBarIOS.Item. --- RNVectorIcons.xcodeproj/project.pbxproj | 264 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/RNVectorIcons.xccheckout | 41 +++ .../UserInterfaceState.xcuserstate | Bin 0 -> 34454 bytes .../xcschemes/RNVectorIcons.xcscheme | 110 ++++++++ .../xcschemes/xcschememanagement.plist | 27 ++ RNVectorIconsManager/RNVectorIconsManager.h | 14 + RNVectorIconsManager/RNVectorIconsManager.m | 42 +++ lib/create-icon-set.js | 27 +- 9 files changed, 531 insertions(+), 1 deletion(-) create mode 100644 RNVectorIcons.xcodeproj/project.pbxproj create mode 100644 RNVectorIcons.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 RNVectorIcons.xcodeproj/project.xcworkspace/xcshareddata/RNVectorIcons.xccheckout create mode 100644 RNVectorIcons.xcodeproj/project.xcworkspace/xcuserdata/joel.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 RNVectorIcons.xcodeproj/xcuserdata/joel.xcuserdatad/xcschemes/RNVectorIcons.xcscheme create mode 100644 RNVectorIcons.xcodeproj/xcuserdata/joel.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 RNVectorIconsManager/RNVectorIconsManager.h create mode 100644 RNVectorIconsManager/RNVectorIconsManager.m diff --git a/RNVectorIcons.xcodeproj/project.pbxproj b/RNVectorIcons.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f1129bb --- /dev/null +++ b/RNVectorIcons.xcodeproj/project.pbxproj @@ -0,0 +1,264 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 5DBEB17C1B18CFF400B34395 /* RNVectorIconsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DBEB16C1B18CF1500B34395 /* RNVectorIconsManager.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 5DBEB14E1B18CEA900B34395 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 5DBEB1501B18CEA900B34395 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNVectorIcons.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5DBEB16B1B18CF1500B34395 /* RNVectorIconsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNVectorIconsManager.h; sourceTree = ""; }; + 5DBEB16C1B18CF1500B34395 /* RNVectorIconsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNVectorIconsManager.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5DBEB14D1B18CEA900B34395 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5DBEB1471B18CEA900B34395 = { + isa = PBXGroup; + children = ( + 5DBEB16A1B18CF1500B34395 /* RNVectorIconsManager */, + 5DBEB1511B18CEA900B34395 /* Products */, + ); + sourceTree = ""; + }; + 5DBEB1511B18CEA900B34395 /* Products */ = { + isa = PBXGroup; + children = ( + 5DBEB1501B18CEA900B34395 /* libRNVectorIcons.a */, + ); + name = Products; + sourceTree = ""; + }; + 5DBEB16A1B18CF1500B34395 /* RNVectorIconsManager */ = { + isa = PBXGroup; + children = ( + 5DBEB16B1B18CF1500B34395 /* RNVectorIconsManager.h */, + 5DBEB16C1B18CF1500B34395 /* RNVectorIconsManager.m */, + ); + path = RNVectorIconsManager; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5DBEB14F1B18CEA900B34395 /* RNVectorIcons */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5DBEB1641B18CEA900B34395 /* Build configuration list for PBXNativeTarget "RNVectorIcons" */; + buildPhases = ( + 5DBEB14C1B18CEA900B34395 /* Sources */, + 5DBEB14D1B18CEA900B34395 /* Frameworks */, + 5DBEB14E1B18CEA900B34395 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RNVectorIcons; + productName = RNVectorIcons; + productReference = 5DBEB1501B18CEA900B34395 /* libRNVectorIcons.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5DBEB1481B18CEA900B34395 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0630; + ORGANIZATIONNAME = "Joel Arvidsson"; + TargetAttributes = { + 5DBEB14F1B18CEA900B34395 = { + CreatedOnToolsVersion = 6.3.2; + }; + }; + }; + buildConfigurationList = 5DBEB14B1B18CEA900B34395 /* Build configuration list for PBXProject "RNVectorIcons" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 5DBEB1471B18CEA900B34395; + productRefGroup = 5DBEB1511B18CEA900B34395 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5DBEB14F1B18CEA900B34395 /* RNVectorIcons */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 5DBEB14C1B18CEA900B34395 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5DBEB17C1B18CFF400B34395 /* RNVectorIconsManager.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5DBEB1621B18CEA900B34395 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 5DBEB1631B18CEA900B34395 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 5DBEB1651B18CEA900B34395 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + "$(SRCROOT)/../react-native/React/**", + "$(SRCROOT)/node_modules/react-native/React/**", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 5DBEB1661B18CEA900B34395 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../React/**", + "$(SRCROOT)/../react-native/React/**", + "$(SRCROOT)/node_modules/react-native/React/**", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5DBEB14B1B18CEA900B34395 /* Build configuration list for PBXProject "RNVectorIcons" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5DBEB1621B18CEA900B34395 /* Debug */, + 5DBEB1631B18CEA900B34395 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5DBEB1641B18CEA900B34395 /* Build configuration list for PBXNativeTarget "RNVectorIcons" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5DBEB1651B18CEA900B34395 /* Debug */, + 5DBEB1661B18CEA900B34395 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5DBEB1481B18CEA900B34395 /* Project object */; +} diff --git a/RNVectorIcons.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/RNVectorIcons.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ec91947 --- /dev/null +++ b/RNVectorIcons.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/RNVectorIcons.xcodeproj/project.xcworkspace/xcshareddata/RNVectorIcons.xccheckout b/RNVectorIcons.xcodeproj/project.xcworkspace/xcshareddata/RNVectorIcons.xccheckout new file mode 100644 index 0000000..b099528 --- /dev/null +++ b/RNVectorIcons.xcodeproj/project.xcworkspace/xcshareddata/RNVectorIcons.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 74A596B3-C045-4AF3-B00F-76B0B71BDDBF + IDESourceControlProjectName + RNVectorIcons + IDESourceControlProjectOriginsDictionary + + A1A2C29701292F28F728A71971FE2C46E2332102 + https://github.com/oblador/react-native-vector-icons.git + + IDESourceControlProjectPath + RNVectorIcons.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + A1A2C29701292F28F728A71971FE2C46E2332102 + ../.. + + IDESourceControlProjectURL + https://github.com/oblador/react-native-vector-icons.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + A1A2C29701292F28F728A71971FE2C46E2332102 + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + A1A2C29701292F28F728A71971FE2C46E2332102 + IDESourceControlWCCName + react-native-vector-icons + + + + diff --git a/RNVectorIcons.xcodeproj/project.xcworkspace/xcuserdata/joel.xcuserdatad/UserInterfaceState.xcuserstate b/RNVectorIcons.xcodeproj/project.xcworkspace/xcuserdata/joel.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..d562ef2b83d1c99c078d6144dc59d38e805e484e GIT binary patch literal 34454 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�R4z)nfL31?K8E<-K2|dUHaL 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 NiXGxl>ED6q{|CTdHzoi8 literal 0 HcmV?d00001 diff --git a/RNVectorIcons.xcodeproj/xcuserdata/joel.xcuserdatad/xcschemes/RNVectorIcons.xcscheme b/RNVectorIcons.xcodeproj/xcuserdata/joel.xcuserdatad/xcschemes/RNVectorIcons.xcscheme new file mode 100644 index 0000000..916d2e8 --- /dev/null +++ b/RNVectorIcons.xcodeproj/xcuserdata/joel.xcuserdatad/xcschemes/RNVectorIcons.xcscheme @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RNVectorIcons.xcodeproj/xcuserdata/joel.xcuserdatad/xcschemes/xcschememanagement.plist b/RNVectorIcons.xcodeproj/xcuserdata/joel.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..6f25640 --- /dev/null +++ b/RNVectorIcons.xcodeproj/xcuserdata/joel.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + RNVectorIcons.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 5DBEB14F1B18CEA900B34395 + + primary + + + 5DBEB15A1B18CEA900B34395 + + primary + + + + + diff --git a/RNVectorIconsManager/RNVectorIconsManager.h b/RNVectorIconsManager/RNVectorIconsManager.h new file mode 100644 index 0000000..6231c1c --- /dev/null +++ b/RNVectorIconsManager/RNVectorIconsManager.h @@ -0,0 +1,14 @@ +// +// RNVectorIconsManager.h +// RNVectorIconsManager +// +// Created by Joel Arvidsson on 2015-05-29. +// Copyright (c) 2015 Joel Arvidsson. All rights reserved. +// + +#import "RCTBridgeModule.h" +#import "RCTLog.h" + +@interface RNVectorIconsManager : NSObject + +@end diff --git a/RNVectorIconsManager/RNVectorIconsManager.m b/RNVectorIconsManager/RNVectorIconsManager.m new file mode 100644 index 0000000..295ac7e --- /dev/null +++ b/RNVectorIconsManager/RNVectorIconsManager.m @@ -0,0 +1,42 @@ +// +// RNVectorIconsManager.m +// RNVectorIconsManager +// +// Created by Joel Arvidsson on 2015-05-29. +// Copyright (c) 2015 Joel Arvidsson. All rights reserved. +// + +#import "RNVectorIconsManager.h" +#import "RCTConvert.h" +#import "RCTBridge.h" +#import "RCTUtils.h" + +@implementation RNVectorIconsManager + +@synthesize bridge = _bridge; +RCT_EXPORT_MODULE(); + +RCT_EXPORT_METHOD(getImageForFont:(NSString*)fontName withGlyph:(NSString*)glyph withFontSize:(CGFloat)fontSize callback:(RCTResponseSenderBlock)callback){ + + UIFont *font = [UIFont fontWithName:fontName size:fontSize]; + NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:glyph attributes:@{NSFontAttributeName: font}]; + + CGSize iconSize = [attributedString size]; + + CGSize imageSize = CGSizeMake(fontSize, fontSize); + UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0); + + //Center in case height doesn't equal fontSize + CGRect centeredRect = CGRectMake((imageSize.width - iconSize.width) / 2.0, (imageSize.height - iconSize.height) / 2.0, iconSize.width, iconSize.height); + [attributedString drawInRect:centeredRect]; + + UIImage *iconImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + //Encode as base64 to be able to use it with React + NSData *imageData = UIImagePNGRepresentation(iconImage); + NSString *imageDataBase64encodedString = [imageData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed]; + callback(@[[NSNull null], [NSString stringWithFormat:@"data:image/png;base64,%@", imageDataBase64encodedString]]); + +} +@end diff --git a/lib/create-icon-set.js b/lib/create-icon-set.js index 651662a..7989a92 100644 --- a/lib/create-icon-set.js +++ b/lib/create-icon-set.js @@ -10,6 +10,9 @@ var { Text, StyleSheet, } = React; +var NativeModules = require('NativeModules'); +var RNVectorIconsManager = NativeModules.RNVectorIconsManager; +var invariant = require('invariant'); var merge = require('merge'); var flattenStyle = require('flattenStyle'); var ViewStylePropTypes = require('ViewStylePropTypes'); @@ -30,7 +33,7 @@ function createIconSet(glyphMap, fontFamily) { } }); - return React.createClass({ + var Icon = React.createClass({ propTypes:{ name: React.PropTypes.oneOf(Object.keys(glyphMap)).isRequired, size: React.PropTypes.number, @@ -72,6 +75,28 @@ function createIconSet(glyphMap, fontFamily) { ); } }); + Icon.getImageSource = function(name, size, callback) { + invariant(RNVectorIconsManager, 'RNVectorIconsManager not available, did you add the library to your project and link with libRNVectorIcons.a?'); + + var glyph = glyphMap[name] || '?'; + if(typeof glyph === 'number') { + glyph = String.fromCharCode(glyph); + } + + return new Promise((resolve, reject) => { + RNVectorIconsManager.getImageForFont(fontFamily, glyph, size || 12, function(err, image) { + callback && callback(err, image); + if (err) { + reject(err); + } else { + resolve(image); + } + }); + }); + + }; + + return Icon; }; module.exports = createIconSet;