From 3e92915164bbf2755da74d94fa3ee07b1376e033 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Tue, 15 May 2018 18:12:28 +0100 Subject: [PATCH 01/25] Update to swift 4 --- Example/GMD Swift.xcodeproj/project.pbxproj | 30 +++++++++-- Example/GMD Swift/AppDelegate.swift | 14 +++--- Example/GMD Swift/ViewController.swift | 42 ++++++++-------- Source/GMDIcon.swift | 56 +++++++++++---------- 4 files changed, 83 insertions(+), 59 deletions(-) diff --git a/Example/GMD Swift.xcodeproj/project.pbxproj b/Example/GMD Swift.xcodeproj/project.pbxproj index c692d9e..cd98e7e 100644 --- a/Example/GMD Swift.xcodeproj/project.pbxproj +++ b/Example/GMD Swift.xcodeproj/project.pbxproj @@ -12,9 +12,9 @@ 4E19E0151B919AFC00825B73 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4E19E0131B919AFC00825B73 /* Main.storyboard */; }; 4E19E0171B919AFC00825B73 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4E19E0161B919AFC00825B73 /* Assets.xcassets */; }; 4E19E01A1B919AFC00825B73 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4E19E0181B919AFC00825B73 /* LaunchScreen.storyboard */; }; - 4E19E0241B919D5400825B73 /* IconCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E19E0231B919D5400825B73 /* IconCell.swift */; settings = {ASSET_TAGS = (); }; }; - 4E19E0261B91B34800825B73 /* GMDIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E19E0251B91B34800825B73 /* GMDIcon.swift */; settings = {ASSET_TAGS = (); }; }; - 4E19E0281B91B35E00825B73 /* GMDIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */; settings = {ASSET_TAGS = (); }; }; + 4E19E0241B919D5400825B73 /* IconCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E19E0231B919D5400825B73 /* IconCell.swift */; }; + 4E19E0261B91B34800825B73 /* GMDIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E19E0251B91B34800825B73 /* GMDIcon.swift */; }; + 4E19E0281B91B35E00825B73 /* GMDIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -108,11 +108,12 @@ 4E19E0041B919AFC00825B73 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0920; ORGANIZATIONNAME = "Patrik Vaberer"; TargetAttributes = { 4E19E00B1B919AFC00825B73 = { CreatedOnToolsVersion = 7.0; + LastSwiftMigration = 0920; }; }; }; @@ -190,13 +191,21 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = 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_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -235,13 +244,21 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = 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_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -260,6 +277,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -274,6 +292,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "vaberer.GMD-Swift"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -286,6 +306,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "vaberer.GMD-Swift"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/Example/GMD Swift/AppDelegate.swift b/Example/GMD Swift/AppDelegate.swift index 4591daa..a361fe5 100644 --- a/Example/GMD Swift/AppDelegate.swift +++ b/Example/GMD Swift/AppDelegate.swift @@ -14,34 +14,34 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. if let font = UIFont(name: "HelveticaNeue-Light", size: 20) { - UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName: font, NSForegroundColorAttributeName: UIColor.blackColor()] + UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.font: font, NSAttributedStringKey.foregroundColor: UIColor.black] } return true } - func applicationWillResignActive(application: UIApplication) { + func applicationWillResignActive(_ application: UIApplication) { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. } - func applicationDidEnterBackground(application: UIApplication) { + func applicationDidEnterBackground(_ application: UIApplication) { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } - func applicationWillEnterForeground(application: UIApplication) { + func applicationWillEnterForeground(_ application: UIApplication) { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } - func applicationDidBecomeActive(application: UIApplication) { + func applicationDidBecomeActive(_ application: UIApplication) { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - func applicationWillTerminate(application: UIApplication) { + func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } diff --git a/Example/GMD Swift/ViewController.swift b/Example/GMD Swift/ViewController.swift index d7cb921..08a9a66 100644 --- a/Example/GMD Swift/ViewController.swift +++ b/Example/GMD Swift/ViewController.swift @@ -33,15 +33,15 @@ class ViewController: UIViewController, UITableViewDataSource, UITableViewDelega controller.delegate = self controller.dimsBackgroundDuringPresentation = false controller.searchBar.sizeToFit() - controller.searchBar.searchBarStyle = .Minimal - controller.searchBar.barTintColor = UIColor.blueColor() + controller.searchBar.searchBarStyle = .minimal + controller.searchBar.barTintColor = UIColor.blue controller.searchBar.placeholder = "Type Icon Name" self.tableView.tableHeaderView = controller.searchBar return controller })() - bGithub.GMDIcon = GMDType.GMDPublic - bTwitter.GMDIcon = GMDType.GMDPerson + bGithub.GMDIcon = GMDType.gmdPublic + bTwitter.GMDIcon = GMDType.gmdPerson @@ -49,13 +49,13 @@ class ViewController: UIViewController, UITableViewDataSource, UITableViewDelega //MARK: UITableView - func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let c = tableView.dequeueReusableCellWithIdentifier("IconCell") as! IconCell + let c = tableView.dequeueReusableCell(withIdentifier: "IconCell") as! IconCell - c.lFont.text = resultSearchController.active ? filteredData[indexPath.row] : helper[indexPath.row] + c.lFont.text = resultSearchController.isActive ? filteredData[indexPath.row] : helper[indexPath.row] - let icon = resultSearchController.active ? GMDType(rawValue: helper.indexOf(filteredData[indexPath.row])!) : GMDType(rawValue: indexPath.row) + let icon = resultSearchController.isActive ? GMDType(rawValue: helper.index(of: filteredData[indexPath.row])!) : GMDType(rawValue: indexPath.row) c.lSmall.GMDIcon = icon c.lMedium.GMDIcon = icon c.lBig.GMDIcon = icon @@ -63,43 +63,43 @@ class ViewController: UIViewController, UITableViewDataSource, UITableViewDelega return c } - func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return resultSearchController.active ? filteredData.count : GMDType.count + return resultSearchController.isActive ? filteredData.count : GMDType.count } //MARK: Search - func updateSearchResultsForSearchController(searchController: UISearchController) + func updateSearchResults(for searchController: UISearchController) { filteredData = [] - filterContentForSearchText(searchController.searchBar.text!.lowercaseString) + filterContentForSearchText(searchController.searchBar.text!.lowercased()) self.tableView.reloadData() } - @IBAction func bGithubPressed(sender: UIBarButtonItem) { + @IBAction func bGithubPressed(_ sender: UIBarButtonItem) { - if let requestUrl = NSURL(string: "https://github.com/Vaberer/Google-Material-Design-Icons-Swift") { - UIApplication.sharedApplication().openURL(requestUrl) + if let requestUrl = URL(string: "https://github.com/Vaberer/Google-Material-Design-Icons-Swift") { + UIApplication.shared.openURL(requestUrl) } } - @IBAction func bTwitterPressed(sender: UIBarButtonItem) { + @IBAction func bTwitterPressed(_ sender: UIBarButtonItem) { - if let twitterURL = NSURL(string: "twitter://user?id=2271666416") { + if let twitterURL = URL(string: "twitter://user?id=2271666416") { - if UIApplication.sharedApplication().canOpenURL(twitterURL) { + if UIApplication.shared.canOpenURL(twitterURL) { - UIApplication.sharedApplication().openURL(twitterURL) + UIApplication.shared.openURL(twitterURL) } } } //MARK: Helpers - func filterContentForSearchText(searchText: String) { + func filterContentForSearchText(_ searchText: String) { for f in helper { - if f.lowercaseString.rangeOfString(searchText.lowercaseString) != nil { + if f.lowercased().range(of: searchText.lowercased()) != nil { filteredData.append(f) } } diff --git a/Source/GMDIcon.swift b/Source/GMDIcon.swift index 082c7d5..f69faae 100644 --- a/Source/GMDIcon.swift +++ b/Source/GMDIcon.swift @@ -6,7 +6,7 @@ public extension UIButton { /** To set an icon, use i.e. `buttonName.setGMDIcon(GMDType.GMBPublic, forState: .Normal)` */ - func setGMDIcon(icon: GMDType, forState state: UIControlState) { + func setGMDIcon(_ icon: GMDType, forState state: UIControlState) { if let titleLabel = titleLabel { @@ -14,7 +14,7 @@ public extension UIButton { let font = UIFont(name: GMDStruct.FontName, size: titleLabel.font.pointSize) assert(font != nil, GMDStruct.ErrorAnnounce) titleLabel.font = font! - setTitle(icon.text, forState: state) + setTitle(icon.text, for: state) } } } @@ -41,7 +41,7 @@ public extension UILabel { get { if let text = text { - if let index = GMDIcons.indexOf(text) { + if let index = GMDIcons.index(of: text) { return GMDType(rawValue: index) } } @@ -55,13 +55,13 @@ public extension UIBarButtonItem { /** To set an icon, use i.e. `barName.GMDIcon = GMDType.GMDPublic` */ - func setGMDIcon(icon: GMDType, iconSize: CGFloat) { + func setGMDIcon(_ icon: GMDType, iconSize: CGFloat) { FontLoader.loadFontIfNeeded() let font = UIFont(name: GMDStruct.FontName, size: iconSize) assert(font != nil, GMDStruct.ErrorAnnounce) - setTitleTextAttributes([NSFontAttributeName: font!], forState: .Normal) + setTitleTextAttributes([NSAttributedStringKey.font: font!], for: UIControlState()) title = icon.text } @@ -74,14 +74,14 @@ public extension UIBarButtonItem { FontLoader.loadFontIfNeeded() let font = UIFont(name: GMDStruct.FontName, size: 23) assert(font != nil,GMDStruct.ErrorAnnounce) - setTitleTextAttributes([NSFontAttributeName: font!], forState: .Normal) + setTitleTextAttributes([NSAttributedStringKey.font: font!], for: UIControlState()) title = newValue?.text } get { if let title = title { - if let index = GMDIcons.indexOf(title) { + if let index = GMDIcons.index(of: title) { return GMDType(rawValue: index) } } @@ -100,38 +100,40 @@ private struct GMDStruct { private class FontLoader { - struct Static { - static var onceToken : dispatch_once_t = 0 - } - - static func loadFontIfNeeded() { - if (UIFont.fontNamesForFamilyName(GMDStruct.FontName).count == 0) { - - dispatch_once(&Static.onceToken) { - let bundle = NSBundle(forClass: FontLoader.self) - var fontURL = NSURL() + private static var __once: () = { + let bundle = Bundle(for: FontLoader.self) + var fontURL:URL! let identifier = bundle.bundleIdentifier if identifier?.hasPrefix("org.cocoapods") == true { - fontURL = bundle.URLForResource(GMDStruct.FileFontName, withExtension: "ttf", subdirectory: "Google-Material-Design-Icons-Swift.bundle")! + fontURL = bundle.url(forResource: GMDStruct.FileFontName, withExtension: "ttf", subdirectory: "Google-Material-Design-Icons-Swift.bundle")! } else { - fontURL = bundle.URLForResource(GMDStruct.FileFontName, withExtension: "ttf")! + fontURL = bundle.url(forResource: GMDStruct.FileFontName, withExtension: "ttf")! } - let data = NSData(contentsOfURL: fontURL)! + let data = try! Data(contentsOf: fontURL) - let provider = CGDataProviderCreateWithCFData(data) - let font = CGFontCreateWithDataProvider(provider)! + let provider = CGDataProvider(data: data as CFData)! + let font = CGFont(provider)! var error: Unmanaged? if !CTFontManagerRegisterGraphicsFont(font, &error) { - let errorDescription: CFStringRef = CFErrorCopyDescription(error!.takeUnretainedValue()) + let errorDescription: CFString = CFErrorCopyDescription(error!.takeUnretainedValue()) let nsError = error!.takeUnretainedValue() as AnyObject as! NSError - NSException(name: NSInternalInconsistencyException, reason: errorDescription as String, userInfo: [NSUnderlyingErrorKey: nsError]).raise() + NSException(name: NSExceptionName.internalInconsistencyException, reason: errorDescription as String, userInfo: [NSUnderlyingErrorKey: nsError]).raise() } - } + }() + + struct Static { + static var onceToken : Int = 0 + } + + static func loadFontIfNeeded() { + if (UIFont.fontNames(forFamilyName: GMDStruct.FontName).count == 0) { + + _ = FontLoader.__once } } } @@ -153,8 +155,8 @@ public enum GMDType: Int { return GMDIcons[rawValue] } - case GMD3DRotation, GMDAccessibility, GMDAccountBalance, GMDAccountBalanceWallet, GMDAccountBox, GMDAccountCircle, GMDAddShoppingCart, GMDAlarm, GMDAlarmAdd, GMDAlarmOff, GMDAlarmOn, GMDAndroid, GMDAnnouncement, GMDAspectRatio, GMDAssessment, GMDAssignment, GMDAssignmentInd, GMDAssignmentLate, GMDAssignmentReturn, GMDAssignmentReturned, GMDAssignmentTurnedIn, GMDAutorenew, GMDBackup, GMDBook, GMDBookmark, GMDBookmarkBorder, GMDBugReport, GMDBuild, GMDCached, GMDCameraEnhance, GMDCardGiftcard, GMDCardMembership, GMDCardTravel, GMDChangeHistory, GMDCheckCircle, GMDChromeReaderMode, GMDClass, GMDCode, GMDCreditCard, GMDDashboard, GMDDelete, GMDDescription, GMDDns, GMDDone, GMDDoneAll, GMDEject, GMDEvent, GMDEventSeat, GMDExitToApp, GMDExplore, GMDExtension, GMDFace, GMDFavorite, GMDFavoriteBorder, GMDFeedback, GMDFindInPage, GMDFindReplace, GMDFlightLand, GMDFlightTakeoff, GMDFlipToBack, GMDFlipToFront, GMDGetApp, GMDGif, GMDGrade, GMDGroupWork, GMDHelp, GMDHelpOutline, GMDHighlightOff, GMDHistory, GMDHome, GMDHourglassEmpty, GMDHourglassFull, GMDHttp, GMDHttps, GMDInfo, GMDInfoOutline, GMDInput, GMDInvertColors, GMDLabel, GMDLabelOutline, GMDLanguage, GMDLaunch, GMDList, GMDLock, GMDLockOpen, GMDLockOutline, GMDLoyalty, GMDMarkunreadMailbox, GMDNoteAdd, GMDOfflinePin, GMDOpenInBrowser, GMDOpenInNew, GMDOpenWith, GMDPageview, GMDPayment, GMDPermCameraMic, GMDPermContactCalendar, GMDPermDataSetting, GMDPermDeviceInformation, GMDPermIdentity, GMDPermMedia, GMDPermPhoneMsg, GMDPermScanWifi, GMDPictureInPicture, GMDPlayForWork, GMDPolymer, GMDPowerSettingsNew, GMDPrint, GMDQueryBuilder, GMDQuestionAnswer, GMDReceipt, GMDRedeem, GMDReorder, GMDReportProblem, GMDRestore, GMDRoom, GMDSchedule, GMDSearch, GMDSettings, GMDSettingsApplications, GMDSettingsBackupRestore, GMDSettingsBluetooth, GMDSettingsBrightness, GMDSettingsCell, GMDSettingsEthernet, GMDSettingsInputAntenna, GMDSettingsInputComponent, GMDSettingsInputComposite, GMDSettingsInputHdmi, GMDSettingsInputSvideo, GMDSettingsOverscan, GMDSettingsPhone, GMDSettingsPower, GMDSettingsRemote, GMDSettingsVoice, GMDShop, GMDShopTwo, GMDShoppingBasket, GMDShoppingCart, GMDSpeakerNotes, GMDSpellcheck, GMDStarRate, GMDStars, GMDStore, GMDSubject, GMDSupervisorAccount, GMDSwapHoriz, GMDSwapVert, GMDSwapVerticalCircle, GMDSystemUpdateAlt, GMDTab, GMDTabUnselected, GMDTheaters, GMDThumbDown, GMDThumbUp, GMDThumbsUpDown, GMDToc, GMDToday, GMDToll, GMDTrackChanges, GMDTranslate, GMDTrendingDown, GMDTrendingFlat, GMDTrendingUp, GMDTurnedIn, GMDTurnedInNot, GMDVerifiedUser, GMDViewAgenda, GMDViewArray, GMDViewCarousel, GMDViewColumn, GMDViewDay, GMDViewHeadline, GMDViewList, GMDViewModule, GMDViewQuilt, GMDViewStream, GMDViewWeek, GMDVisibility, GMDVisibilityOff, GMDWork, GMDYoutubeSearchedFor, GMDZoomIn, GMDZoomOut, GMDAddAlert, GMDError, GMDErrorOutline, GMDWarning, GMDAirplay, GMDAlbum, GMDAvTimer, GMDClosedCaption, GMDEqualizer, GMDExplicit, GMDFastForward, GMDFastRewind, GMDForward10, GMDForward30, GMDForward5, GMDGames, GMDHd, GMDHearing, GMDHighQuality, GMDLibraryAdd, GMDLibraryBooks, GMDLibraryMusic, GMDLoop, GMDMic, GMDMicNone, GMDMicOff, GMDMovie, GMDNewReleases, GMDNotInterested, GMDPause, GMDPauseCircleFilled, GMDPauseCircleOutline, GMDPlayArrow, GMDPlayCircleFilled, GMDPlayCircleOutline, GMDPlaylistAdd, GMDQueue, GMDQueueMusic, GMDRadio, GMDRecentActors, GMDRepeat, GMDRepeatOne, GMDReplay, GMDReplay10, GMDReplay30, GMDReplay5, GMDShuffle, GMDSkipNext, GMDSkipPrevious, GMDSnooze, GMDSortByAlpha, GMDStop, GMDSubtitles, GMDSurroundSound, GMDVideoLibrary, GMDVideocam, GMDVideocamOff, GMDVolumeDown, GMDVolumeMute, GMDVolumeOff, GMDVolumeUp, GMDWeb, GMDBusiness, GMDCall, GMDCallEnd, GMDCallMade, GMDCallMerge, GMDCallMissed, GMDCallReceived, GMDCallSplit, GMDChat, GMDChatBubble, GMDChatBubbleOutline, GMDClearAll, GMDComment, GMDContactPhone, GMDContacts, GMDDialerSip, GMDDialpad, GMDEmail, GMDForum, GMDImportExport, GMDInvertColorsOff, GMDLiveHelp, GMDLocationOff, GMDLocationOn, GMDMessage, GMDNoSim, GMDPhone, GMDPhonelinkErase, GMDPhonelinkLock, GMDPhonelinkRing, GMDPhonelinkSetup, GMDPortableWifiOff, GMDPresentToAll, GMDRingVolume, GMDSpeakerPhone, GMDStayCurrentLandscape, GMDStayCurrentPortrait, GMDStayPrimaryLandscape, GMDStayPrimaryPortrait, GMDSwapCalls, GMDTextsms, GMDVoicemail, GMDVpnKey, GMDAdd, GMDAddBox, GMDAddCircle, GMDAddCircleOutline, GMDArchive, GMDBackspace, GMDBlock, GMDClear, GMDContentCopy, GMDContentCut, GMDContentPaste, GMDCreate, GMDDrafts, GMDFilterList, GMDFlag, GMDFontDownload, GMDForward, GMDGesture, GMDInbox, GMDLink, GMDMail, GMDMarkunread, GMDRedo, GMDRemove, GMDRemoveCircle, GMDRemoveCircleOutline, GMDReply, GMDReplyAll, GMDReport, GMDSave, GMDSelectAll, GMDSend, GMDSort, GMDTextFormat, GMDUndo, GMDAccessAlarm, GMDAccessAlarms, GMDAccessTime, GMDAddAlarm, GMDAirplanemodeActive, GMDAirplanemodeInactive, GMDBatteryAlert, GMDBatteryChargingFull, GMDBatteryFull, GMDBatteryStd, GMDBatteryUnknown, GMDBluetooth, GMDBluetoothConnected, GMDBluetoothDisabled, GMDBluetoothSearching, GMDBrightnessAuto, GMDBrightnessHigh, GMDBrightnessLow, GMDBrightnessMedium, GMDDataUsage, GMDDeveloperMode, GMDDevices, GMDDvr, GMDGpsFixed, GMDGpsNotFixed, GMDGpsOff, GMDGraphicEq, GMDLocationDisabled, GMDLocationSearching, GMDNetworkCell, GMDNetworkWifi, GMDNfc, GMDScreenLockLandscape, GMDScreenLockPortrait, GMDScreenLockRotation, GMDScreenRotation, GMDSdStorage, GMDSettingsSystemDaydream, GMDSignalCellular4Bar, GMDSignalCellularConnectedNoInternet4Bar, GMDSignalCellularNoSim, GMDSignalCellularNull, GMDSignalCellularOff, GMDSignalWifi4Bar, GMDSignalWifi4BarLock, GMDSignalWifiOff, GMDStorage, GMDUsb, GMDWallpaper, GMDWidgets, GMDWifiLock, GMDWifiTethering, GMDAttachFile, GMDAttachMoney, GMDBorderAll, GMDBorderBottom, GMDBorderClear, GMDBorderColor, GMDBorderHorizontal, GMDBorderInner, GMDBorderLeft, GMDBorderOuter, GMDBorderRight, GMDBorderStyle, GMDBorderTop, GMDBorderVertical, GMDFormatAlignCenter, GMDFormatAlignJustify, GMDFormatAlignLeft, GMDFormatAlignRight, GMDFormatBold, GMDFormatClear, GMDFormatColorFill, GMDFormatColorReset, GMDFormatColorText, GMDFormatIndentDecrease, GMDFormatIndentIncrease, GMDFormatItalic, GMDFormatLineSpacing, GMDFormatListBulleted, GMDFormatListNumbered, GMDFormatPaint, GMDFormatQuote, GMDFormatSize, GMDFormatStrikethrough, GMDFormatTextdirectionLToR, GMDFormatTextdirectionRToL, GMDFormatUnderlined, GMDFunctions, GMDInsertChart, GMDInsertComment, GMDInsertDriveFile, GMDInsertEmoticon, GMDInsertInvitation, GMDInsertLink, GMDInsertPhoto, GMDMergeType, GMDModeComment, GMDModeEdit, GMDMoneyOff, GMDPublish, GMDSpaceBar, GMDStrikethroughS, GMDVerticalAlignBottom, GMDVerticalAlignCenter, GMDVerticalAlignTop, GMDWrapText, GMDAttachment, GMDCloud, GMDCloudCircle, GMDCloudDone, GMDCloudDownload, GMDCloudOff, GMDCloudQueue, GMDCloudUpload, GMDFileDownload, GMDFileUpload, GMDFolder, GMDFolderOpen, GMDFolderShared, GMDCast, GMDCastConnected, GMDComputer, GMDDesktopMac, GMDDesktopWindows, GMDDeveloperBoard, GMDDeviceHub, GMDDock, GMDGamepad, GMDHeadset, GMDHeadsetMic, GMDKeyboard, GMDKeyboardArrowDown, GMDKeyboardArrowLeft, GMDKeyboardArrowRight, GMDKeyboardArrowUp, GMDKeyboardBackspace, GMDKeyboardCapslock, GMDKeyboardHide, GMDKeyboardReturn, GMDKeyboardTab, GMDKeyboardVoice, GMDLaptop, GMDLaptopChromebook, GMDLaptopMac, GMDLaptopWindows, GMDMemory, GMDMouse, GMDPhoneAndroid, GMDPhoneIphone, GMDPhonelink, GMDPhonelinkOff, GMDPowerInput, GMDRouter, GMDScanner, GMDSecurity, GMDSimCard, GMDSmartphone, GMDSpeaker, GMDSpeakerGroup, GMDTablet, GMDTabletAndroid, GMDTabletMac, GMDToys, GMDTv, GMDWatch, GMDAddToPhotos, GMDAdjust, GMDAssistant, GMDAssistantPhoto, GMDAudiotrack, GMDBlurCircular, GMDBlurLinear, GMDBlurOff, GMDBlurOn, GMDBrightness1, GMDBrightness2, GMDBrightness3, GMDBrightness4, GMDBrightness5, GMDBrightness6, GMDBrightness7, GMDBrokenImage, GMDBrush, GMDCamera, GMDCameraAlt, GMDCameraFront, GMDCameraRear, GMDCameraRoll, GMDCenterFocusStrong, GMDCenterFocusWeak, GMDCollections, GMDCollectionsBookmark, GMDColorLens, GMDColorize, GMDCompare, GMDControlPoint, GMDControlPointDuplicate, GMDCrop, GMDCrop169, GMDCrop32, GMDCrop54, GMDCrop75, GMDCropDin, GMDCropFree, GMDCropLandscape, GMDCropOriginal, GMDCropPortrait, GMDCropSquare, GMDDehaze, GMDDetails, GMDEdit, GMDExposure, GMDExposureNeg1, GMDExposureNeg2, GMDExposurePlus1, GMDExposurePlus2, GMDExposureZero, GMDFilter, GMDFilter1, GMDFilter2, GMDFilter3, GMDFilter4, GMDFilter5, GMDFilter6, GMDFilter7, GMDFilter8, GMDFilter9, GMDFilter9Plus, GMDFilterBAndW, GMDFilterCenterFocus, GMDFilterDrama, GMDFilterFrames, GMDFilterHdr, GMDFilterNone, GMDFilterTiltShift, GMDFilterVintage, GMDFlare, GMDFlashAuto, GMDFlashOff, GMDFlashOn, GMDFlip, GMDGradient, GMDGrain, GMDGridOff, GMDGridOn, GMDHdrOff, GMDHdrOn, GMDHdrStrong, GMDHdrWeak, GMDHealing, GMDImage, GMDImageAspectRatio, GMDIso, GMDLandscape, GMDLeakAdd, GMDLeakRemove, GMDLens, GMDLooks, GMDLooks3, GMDLooks4, GMDLooks5, GMDLooks6, GMDLooksOne, GMDLooksTwo, GMDLoupe, GMDMonochromePhotos, GMDMovieCreation, GMDMusicNote, GMDNature, GMDNaturePeople, GMDNavigateBefore, GMDNavigateNext, GMDPalette, GMDPanorama, GMDPanoramaFishEye, GMDPanoramaHorizontal, GMDPanoramaVertical, GMDPanoramaWideAngle, GMDPhoto, GMDPhotoAlbum, GMDPhotoCamera, GMDPhotoLibrary, GMDPhotoSizeSelectActual, GMDPhotoSizeSelectLarge, GMDPhotoSizeSelectSmall, GMDPictureAsPdf, GMDPortrait, GMDRemoveRedEye, GMDRotate90DegreesCcw, GMDRotateLeft, GMDRotateRight, GMDSlideshow, GMDStraighten, GMDStyle, GMDSwitchCamera, GMDSwitchVideo, GMDTagFaces, GMDTexture, GMDTimelapse, GMDTimer, GMDTimer10, GMDTimer3, GMDTimerOff, GMDTonality, GMDTransform, GMDTune, GMDViewComfy, GMDViewCompact, GMDVignette, GMDWbAuto, GMDWbCloudy, GMDWbIncandescent, GMDWbIridescent, GMDWbSunny, GMDBeenhere, GMDDirections, GMDDirectionsBike, GMDDirectionsBoat, GMDDirectionsBus, GMDDirectionsCar, GMDDirectionsRailway, GMDDirectionsRun, GMDDirectionsSubway, GMDDirectionsTransit, GMDDirectionsWalk, GMDFlight, GMDHotel, GMDLayers, GMDLayersClear, GMDLocalActivity, GMDLocalAirport, GMDLocalAtm, GMDLocalBar, GMDLocalCafe, GMDLocalCarWash, GMDLocalConvenienceStore, GMDLocalDining, GMDLocalDrink, GMDLocalFlorist, GMDLocalGasStation, GMDLocalGroceryStore, GMDLocalHospital, GMDLocalHotel, GMDLocalLaundryService, GMDLocalLibrary, GMDLocalMall, GMDLocalMovies, GMDLocalOffer, GMDLocalParking, GMDLocalPharmacy, GMDLocalPhone, GMDLocalPizza, GMDLocalPlay, GMDLocalPostOffice, GMDLocalPrintshop, GMDLocalSee, GMDLocalShipping, GMDLocalTaxi, GMDMap, GMDMyLocation, GMDNavigation, GMDPersonPin, GMDPinDrop, GMDPlace, GMDRateReview, GMDRestaurantMenu, GMDSatellite, GMDStoreMallDirectory, GMDTerrain, GMDTraffic, GMDApps, GMDArrowBack, GMDArrowDropDown, GMDArrowDropDownCircle, GMDArrowDropUp, GMDArrowForward, GMDCancel, GMDCheck, GMDChevronLeft, GMDChevronRight, GMDClose, GMDExpandLess, GMDExpandMore, GMDFullscreen, GMDFullscreenExit, GMDMenu, GMDMoreHoriz, GMDMoreVert, GMDRefresh, GMDAdb, GMDAirlineSeatFlat, GMDAirlineSeatFlatAngled, GMDAirlineSeatIndividualSuite, GMDAirlineSeatLegroomExtra, GMDAirlineSeatLegroomNormal, GMDAirlineSeatLegroomReduced, GMDAirlineSeatReclineExtra, GMDAirlineSeatReclineNormal, GMDBluetoothAudio, GMDConfirmationNumber, GMDDiscFull, GMDDoNotDisturb, GMDDoNotDisturbAlt, GMDDriveEta, GMDEventAvailable, GMDEventBusy, GMDEventNote, GMDFolderSpecial, GMDLiveTv, GMDMms, GMDMore, GMDNetworkLocked, GMDOndemandVideo, GMDPersonalVideo, GMDPhoneBluetoothSpeaker, GMDPhoneForwarded, GMDPhoneInTalk, GMDPhoneLocked, GMDPhoneMissed, GMDPhonePaused, GMDPower, GMDSdCard, GMDSimCardAlert, GMDSms, GMDSmsFailed, GMDSync, GMDSyncDisabled, GMDSyncProblem, GMDSystemUpdate, GMDTapAndPlay, GMDTimeToLeave, GMDVibration, GMDVoiceChat, GMDVpnLock, GMDWc, GMDWifi, GMDCake, GMDDomain, GMDGroup, GMDGroupAdd, GMDLocationCity, GMDMood, GMDMoodBad, GMDNotifications, GMDNotificationsActive, GMDNotificationsNone, GMDNotificationsOff, GMDNotificationsPaused, GMDPages, GMDPartyMode, GMDPeople, GMDPeopleOutline, GMDPerson, GMDPersonAdd, GMDPersonOutline, GMDPlusOne, GMDPoll, GMDPublic, GMDSchool, GMDShare, GMDWhatshot, GMDCheckBox, GMDCheckBoxOutlineBlank, GMDIndeterminateCheckBox, GMDRadioButtonChecked, GMDRadioButtonUnchecked, GMDStar, GMDStarBorder, GMDStarHalf + case gmd3DRotation, gmdAccessibility, gmdAccountBalance, gmdAccountBalanceWallet, gmdAccountBox, gmdAccountCircle, gmdAddShoppingCart, gmdAlarm, gmdAlarmAdd, gmdAlarmOff, gmdAlarmOn, gmdAndroid, gmdAnnouncement, gmdAspectRatio, gmdAssessment, gmdAssignment, gmdAssignmentInd, gmdAssignmentLate, gmdAssignmentReturn, gmdAssignmentReturned, gmdAssignmentTurnedIn, gmdAutorenew, gmdBackup, gmdBook, gmdBookmark, gmdBookmarkBorder, gmdBugReport, gmdBuild, gmdCached, gmdCameraEnhance, gmdCardGiftcard, gmdCardMembership, gmdCardTravel, gmdChangeHistory, gmdCheckCircle, gmdChromeReaderMode, gmdClass, gmdCode, gmdCreditCard, gmdDashboard, gmdDelete, gmdDescription, gmdDns, gmdDone, gmdDoneAll, gmdEject, gmdEvent, gmdEventSeat, gmdExitToApp, gmdExplore, gmdExtension, gmdFace, gmdFavorite, gmdFavoriteBorder, gmdFeedback, gmdFindInPage, gmdFindReplace, gmdFlightLand, gmdFlightTakeoff, gmdFlipToBack, gmdFlipToFront, gmdGetApp, gmdGif, gmdGrade, gmdGroupWork, gmdHelp, gmdHelpOutline, gmdHighlightOff, gmdHistory, gmdHome, gmdHourglassEmpty, gmdHourglassFull, gmdHttp, gmdHttps, gmdInfo, gmdInfoOutline, gmdInput, gmdInvertColors, gmdLabel, gmdLabelOutline, gmdLanguage, gmdLaunch, gmdList, gmdLock, gmdLockOpen, gmdLockOutline, gmdLoyalty, gmdMarkunreadMailbox, gmdNoteAdd, gmdOfflinePin, gmdOpenInBrowser, gmdOpenInNew, gmdOpenWith, gmdPageview, gmdPayment, gmdPermCameraMic, gmdPermContactCalendar, gmdPermDataSetting, gmdPermDeviceInformation, gmdPermIdentity, gmdPermMedia, gmdPermPhoneMsg, gmdPermScanWifi, gmdPictureInPicture, gmdPlayForWork, gmdPolymer, gmdPowerSettingsNew, gmdPrint, gmdQueryBuilder, gmdQuestionAnswer, gmdReceipt, gmdRedeem, gmdReorder, gmdReportProblem, gmdRestore, gmdRoom, gmdSchedule, gmdSearch, gmdSettings, gmdSettingsApplications, gmdSettingsBackupRestore, gmdSettingsBluetooth, gmdSettingsBrightness, gmdSettingsCell, gmdSettingsEthernet, gmdSettingsInputAntenna, gmdSettingsInputComponent, gmdSettingsInputComposite, gmdSettingsInputHdmi, gmdSettingsInputSvideo, gmdSettingsOverscan, gmdSettingsPhone, gmdSettingsPower, gmdSettingsRemote, gmdSettingsVoice, gmdShop, gmdShopTwo, gmdShoppingBasket, gmdShoppingCart, gmdSpeakerNotes, gmdSpellcheck, gmdStarRate, gmdStars, gmdStore, gmdSubject, gmdSupervisorAccount, gmdSwapHoriz, gmdSwapVert, gmdSwapVerticalCircle, gmdSystemUpdateAlt, gmdTab, gmdTabUnselected, gmdTheaters, gmdThumbDown, gmdThumbUp, gmdThumbsUpDown, gmdToc, gmdToday, gmdToll, gmdTrackChanges, gmdTranslate, gmdTrendingDown, gmdTrendingFlat, gmdTrendingUp, gmdTurnedIn, gmdTurnedInNot, gmdVerifiedUser, gmdViewAgenda, gmdViewArray, gmdViewCarousel, gmdViewColumn, gmdViewDay, gmdViewHeadline, gmdViewList, gmdViewModule, gmdViewQuilt, gmdViewStream, gmdViewWeek, gmdVisibility, gmdVisibilityOff, gmdWork, gmdYoutubeSearchedFor, gmdZoomIn, gmdZoomOut, gmdAddAlert, gmdError, gmdErrorOutline, gmdWarning, gmdAirplay, gmdAlbum, gmdAvTimer, gmdClosedCaption, gmdEqualizer, gmdExplicit, gmdFastForward, gmdFastRewind, gmdForward10, gmdForward30, gmdForward5, gmdGames, gmdHd, gmdHearing, gmdHighQuality, gmdLibraryAdd, gmdLibraryBooks, gmdLibraryMusic, gmdLoop, gmdMic, gmdMicNone, gmdMicOff, gmdMovie, gmdNewReleases, gmdNotInterested, gmdPause, gmdPauseCircleFilled, gmdPauseCircleOutline, gmdPlayArrow, gmdPlayCircleFilled, gmdPlayCircleOutline, gmdPlaylistAdd, gmdQueue, gmdQueueMusic, gmdRadio, gmdRecentActors, gmdRepeat, gmdRepeatOne, gmdReplay, gmdReplay10, gmdReplay30, gmdReplay5, gmdShuffle, gmdSkipNext, gmdSkipPrevious, gmdSnooze, gmdSortByAlpha, gmdStop, gmdSubtitles, gmdSurroundSound, gmdVideoLibrary, gmdVideocam, gmdVideocamOff, gmdVolumeDown, gmdVolumeMute, gmdVolumeOff, gmdVolumeUp, gmdWeb, gmdBusiness, gmdCall, gmdCallEnd, gmdCallMade, gmdCallMerge, gmdCallMissed, gmdCallReceived, gmdCallSplit, gmdChat, gmdChatBubble, gmdChatBubbleOutline, gmdClearAll, gmdComment, gmdContactPhone, gmdContacts, gmdDialerSip, gmdDialpad, gmdEmail, gmdForum, gmdImportExport, gmdInvertColorsOff, gmdLiveHelp, gmdLocationOff, gmdLocationOn, gmdMessage, gmdNoSim, gmdPhone, gmdPhonelinkErase, gmdPhonelinkLock, gmdPhonelinkRing, gmdPhonelinkSetup, gmdPortableWifiOff, gmdPresentToAll, gmdRingVolume, gmdSpeakerPhone, gmdStayCurrentLandscape, gmdStayCurrentPortrait, gmdStayPrimaryLandscape, gmdStayPrimaryPortrait, gmdSwapCalls, gmdTextsms, gmdVoicemail, gmdVpnKey, gmdAdd, gmdAddBox, gmdAddCircle, gmdAddCircleOutline, gmdArchive, gmdBackspace, gmdBlock, gmdClear, gmdContentCopy, gmdContentCut, gmdContentPaste, gmdCreate, gmdDrafts, gmdFilterList, gmdFlag, gmdFontDownload, gmdForward, gmdGesture, gmdInbox, gmdLink, gmdMail, gmdMarkunread, gmdRedo, gmdRemove, gmdRemoveCircle, gmdRemoveCircleOutline, gmdReply, gmdReplyAll, gmdReport, gmdSave, gmdSelectAll, gmdSend, gmdSort, gmdTextFormat, gmdUndo, gmdAccessAlarm, gmdAccessAlarms, gmdAccessTime, gmdAddAlarm, gmdAirplanemodeActive, gmdAirplanemodeInactive, gmdBatteryAlert, gmdBatteryChargingFull, gmdBatteryFull, gmdBatteryStd, gmdBatteryUnknown, gmdBluetooth, gmdBluetoothConnected, gmdBluetoothDisabled, gmdBluetoothSearching, gmdBrightnessAuto, gmdBrightnessHigh, gmdBrightnessLow, gmdBrightnessMedium, gmdDataUsage, gmdDeveloperMode, gmdDevices, gmdDvr, gmdGpsFixed, gmdGpsNotFixed, gmdGpsOff, gmdGraphicEq, gmdLocationDisabled, gmdLocationSearching, gmdNetworkCell, gmdNetworkWifi, gmdNfc, gmdScreenLockLandscape, gmdScreenLockPortrait, gmdScreenLockRotation, gmdScreenRotation, gmdSdStorage, gmdSettingsSystemDaydream, gmdSignalCellular4Bar, gmdSignalCellularConnectedNoInternet4Bar, gmdSignalCellularNoSim, gmdSignalCellularNull, gmdSignalCellularOff, gmdSignalWifi4Bar, gmdSignalWifi4BarLock, gmdSignalWifiOff, gmdStorage, gmdUsb, gmdWallpaper, gmdWidgets, gmdWifiLock, gmdWifiTethering, gmdAttachFile, gmdAttachMoney, gmdBorderAll, gmdBorderBottom, gmdBorderClear, gmdBorderColor, gmdBorderHorizontal, gmdBorderInner, gmdBorderLeft, gmdBorderOuter, gmdBorderRight, gmdBorderStyle, gmdBorderTop, gmdBorderVertical, gmdFormatAlignCenter, gmdFormatAlignJustify, gmdFormatAlignLeft, gmdFormatAlignRight, gmdFormatBold, gmdFormatClear, gmdFormatColorFill, gmdFormatColorReset, gmdFormatColorText, gmdFormatIndentDecrease, gmdFormatIndentIncrease, gmdFormatItalic, gmdFormatLineSpacing, gmdFormatListBulleted, gmdFormatListNumbered, gmdFormatPaint, gmdFormatQuote, gmdFormatSize, gmdFormatStrikethrough, gmdFormatTextdirectionLToR, gmdFormatTextdirectionRToL, gmdFormatUnderlined, gmdFunctions, gmdInsertChart, gmdInsertComment, gmdInsertDriveFile, gmdInsertEmoticon, gmdInsertInvitation, gmdInsertLink, gmdInsertPhoto, gmdMergeType, gmdModeComment, gmdModeEdit, gmdMoneyOff, gmdPublish, gmdSpaceBar, gmdStrikethroughS, gmdVerticalAlignBottom, gmdVerticalAlignCenter, gmdVerticalAlignTop, gmdWrapText, gmdAttachment, gmdCloud, gmdCloudCircle, gmdCloudDone, gmdCloudDownload, gmdCloudOff, gmdCloudQueue, gmdCloudUpload, gmdFileDownload, gmdFileUpload, gmdFolder, gmdFolderOpen, gmdFolderShared, gmdCast, gmdCastConnected, gmdComputer, gmdDesktopMac, gmdDesktopWindows, gmdDeveloperBoard, gmdDeviceHub, gmdDock, gmdGamepad, gmdHeadset, gmdHeadsetMic, gmdKeyboard, gmdKeyboardArrowDown, gmdKeyboardArrowLeft, gmdKeyboardArrowRight, gmdKeyboardArrowUp, gmdKeyboardBackspace, gmdKeyboardCapslock, gmdKeyboardHide, gmdKeyboardReturn, gmdKeyboardTab, gmdKeyboardVoice, gmdLaptop, gmdLaptopChromebook, gmdLaptopMac, gmdLaptopWindows, gmdMemory, gmdMouse, gmdPhoneAndroid, gmdPhoneIphone, gmdPhonelink, gmdPhonelinkOff, gmdPowerInput, gmdRouter, gmdScanner, gmdSecurity, gmdSimCard, gmdSmartphone, gmdSpeaker, gmdSpeakerGroup, gmdTablet, gmdTabletAndroid, gmdTabletMac, gmdToys, gmdTv, gmdWatch, gmdAddToPhotos, gmdAdjust, gmdAssistant, gmdAssistantPhoto, gmdAudiotrack, gmdBlurCircular, gmdBlurLinear, gmdBlurOff, gmdBlurOn, gmdBrightness1, gmdBrightness2, gmdBrightness3, gmdBrightness4, gmdBrightness5, gmdBrightness6, gmdBrightness7, gmdBrokenImage, gmdBrush, gmdCamera, gmdCameraAlt, gmdCameraFront, gmdCameraRear, gmdCameraRoll, gmdCenterFocusStrong, gmdCenterFocusWeak, gmdCollections, gmdCollectionsBookmark, gmdColorLens, gmdColorize, gmdCompare, gmdControlPoint, gmdControlPointDuplicate, gmdCrop, gmdCrop169, gmdCrop32, gmdCrop54, gmdCrop75, gmdCropDin, gmdCropFree, gmdCropLandscape, gmdCropOriginal, gmdCropPortrait, gmdCropSquare, gmdDehaze, gmdDetails, gmdEdit, gmdExposure, gmdExposureNeg1, gmdExposureNeg2, gmdExposurePlus1, gmdExposurePlus2, gmdExposureZero, gmdFilter, gmdFilter1, gmdFilter2, gmdFilter3, gmdFilter4, gmdFilter5, gmdFilter6, gmdFilter7, gmdFilter8, gmdFilter9, gmdFilter9Plus, gmdFilterBAndW, gmdFilterCenterFocus, gmdFilterDrama, gmdFilterFrames, gmdFilterHdr, gmdFilterNone, gmdFilterTiltShift, gmdFilterVintage, gmdFlare, gmdFlashAuto, gmdFlashOff, gmdFlashOn, gmdFlip, gmdGradient, gmdGrain, gmdGridOff, gmdGridOn, gmdHdrOff, gmdHdrOn, gmdHdrStrong, gmdHdrWeak, gmdHealing, gmdImage, gmdImageAspectRatio, gmdIso, gmdLandscape, gmdLeakAdd, gmdLeakRemove, gmdLens, gmdLooks, gmdLooks3, gmdLooks4, gmdLooks5, gmdLooks6, gmdLooksOne, gmdLooksTwo, gmdLoupe, gmdMonochromePhotos, gmdMovieCreation, gmdMusicNote, gmdNature, gmdNaturePeople, gmdNavigateBefore, gmdNavigateNext, gmdPalette, gmdPanorama, gmdPanoramaFishEye, gmdPanoramaHorizontal, gmdPanoramaVertical, gmdPanoramaWideAngle, gmdPhoto, gmdPhotoAlbum, gmdPhotoCamera, gmdPhotoLibrary, gmdPhotoSizeSelectActual, gmdPhotoSizeSelectLarge, gmdPhotoSizeSelectSmall, gmdPictureAsPdf, gmdPortrait, gmdRemoveRedEye, gmdRotate90DegreesCcw, gmdRotateLeft, gmdRotateRight, gmdSlideshow, gmdStraighten, gmdStyle, gmdSwitchCamera, gmdSwitchVideo, gmdTagFaces, gmdTexture, gmdTimelapse, gmdTimer, gmdTimer10, gmdTimer3, gmdTimerOff, gmdTonality, gmdTransform, gmdTune, gmdViewComfy, gmdViewCompact, gmdVignette, gmdWbAuto, gmdWbCloudy, gmdWbIncandescent, gmdWbIridescent, gmdWbSunny, gmdBeenhere, gmdDirections, gmdDirectionsBike, gmdDirectionsBoat, gmdDirectionsBus, gmdDirectionsCar, gmdDirectionsRailway, gmdDirectionsRun, gmdDirectionsSubway, gmdDirectionsTransit, gmdDirectionsWalk, gmdFlight, gmdHotel, gmdLayers, gmdLayersClear, gmdLocalActivity, gmdLocalAirport, gmdLocalAtm, gmdLocalBar, gmdLocalCafe, gmdLocalCarWash, gmdLocalConvenienceStore, gmdLocalDining, gmdLocalDrink, gmdLocalFlorist, gmdLocalGasStation, gmdLocalGroceryStore, gmdLocalHospital, gmdLocalHotel, gmdLocalLaundryService, gmdLocalLibrary, gmdLocalMall, gmdLocalMovies, gmdLocalOffer, gmdLocalParking, gmdLocalPharmacy, gmdLocalPhone, gmdLocalPizza, gmdLocalPlay, gmdLocalPostOffice, gmdLocalPrintshop, gmdLocalSee, gmdLocalShipping, gmdLocalTaxi, gmdMap, gmdMyLocation, gmdNavigation, gmdPersonPin, gmdPinDrop, gmdPlace, gmdRateReview, gmdRestaurantMenu, gmdSatellite, gmdStoreMallDirectory, gmdTerrain, gmdTraffic, gmdApps, gmdArrowBack, gmdArrowDropDown, gmdArrowDropDownCircle, gmdArrowDropUp, gmdArrowForward, gmdCancel, gmdCheck, gmdChevronLeft, gmdChevronRight, gmdClose, gmdExpandLess, gmdExpandMore, gmdFullscreen, gmdFullscreenExit, gmdMenu, gmdMoreHoriz, gmdMoreVert, gmdRefresh, gmdAdb, gmdAirlineSeatFlat, gmdAirlineSeatFlatAngled, gmdAirlineSeatIndividualSuite, gmdAirlineSeatLegroomExtra, gmdAirlineSeatLegroomNormal, gmdAirlineSeatLegroomReduced, gmdAirlineSeatReclineExtra, gmdAirlineSeatReclineNormal, gmdBluetoothAudio, gmdConfirmationNumber, gmdDiscFull, gmdDoNotDisturb, gmdDoNotDisturbAlt, gmdDriveEta, gmdEventAvailable, gmdEventBusy, gmdEventNote, gmdFolderSpecial, gmdLiveTv, gmdMms, gmdMore, gmdNetworkLocked, gmdOndemandVideo, gmdPersonalVideo, gmdPhoneBluetoothSpeaker, gmdPhoneForwarded, gmdPhoneInTalk, gmdPhoneLocked, gmdPhoneMissed, gmdPhonePaused, gmdPower, gmdSdCard, gmdSimCardAlert, gmdSms, gmdSmsFailed, gmdSync, gmdSyncDisabled, gmdSyncProblem, gmdSystemUpdate, gmdTapAndPlay, gmdTimeToLeave, gmdVibration, gmdVoiceChat, gmdVpnLock, gmdWc, gmdWifi, gmdCake, gmdDomain, gmdGroup, gmdGroupAdd, gmdLocationCity, gmdMood, gmdMoodBad, gmdNotifications, gmdNotificationsActive, gmdNotificationsNone, gmdNotificationsOff, gmdNotificationsPaused, gmdPages, gmdPartyMode, gmdPeople, gmdPeopleOutline, gmdPerson, gmdPersonAdd, gmdPersonOutline, gmdPlusOne, gmdPoll, gmdPublic, gmdSchool, gmdShare, gmdWhatshot, gmdCheckBox, gmdCheckBoxOutlineBlank, gmdIndeterminateCheckBox, gmdRadioButtonChecked, gmdRadioButtonUnchecked, gmdStar, gmdStarBorder, gmdStarHalf } -private let GMDIcons = ["\u{e84d}", "\u{e84e}", "\u{e84f}", "\u{e850}", "\u{e851}", "\u{e853}", "\u{e854}", "\u{e855}", "\u{e856}", "\u{e857}", "\u{e858}", "\u{e859}", "\u{e85a}", "\u{e85b}", "\u{e85c}", "\u{e85d}", "\u{e85e}", "\u{e85f}", "\u{e860}", "\u{e861}", "\u{e862}", "\u{e863}", "\u{e864}", "\u{e865}", "\u{e866}", "\u{e867}", "\u{e868}", "\u{e869}", "\u{e86a}", "\u{e8fc}", "\u{e8f6}", "\u{e8f7}", "\u{e8f8}", "\u{e86b}", "\u{e86c}", "\u{e86d}", "\u{e86e}", "\u{e86f}", "\u{e870}", "\u{e871}", "\u{e872}", "\u{e873}", "\u{e875}", "\u{e876}", "\u{e877}", "\u{e8fb}", "\u{e878}", "\u{e903}", "\u{e879}", "\u{e87a}", "\u{e87b}", "\u{e87c}", "\u{e87d}", "\u{e87e}", "\u{e87f}", "\u{e880}", "\u{e881}", "\u{e904}", "\u{e905}", "\u{e882}", "\u{e883}", "\u{e884}", "\u{e908}", "\u{e885}", "\u{e886}", "\u{e887}", "\u{e8fd}", "\u{e888}", "\u{e889}", "\u{e88a}", "\u{e88b}", "\u{e88c}", "\u{e902}", "\u{e88d}", "\u{e88e}", "\u{e88f}", "\u{e890}", "\u{e891}", "\u{e892}", "\u{e893}", "\u{e894}", "\u{e895}", "\u{e896}", "\u{e897}", "\u{e898}", "\u{e899}", "\u{e89a}", "\u{e89b}", "\u{e89c}", "\u{e90a}", "\u{e89d}", "\u{e89e}", "\u{e89f}", "\u{e8a0}", "\u{e8a1}", "\u{e8a2}", "\u{e8a3}", "\u{e8a4}", "\u{e8a5}", "\u{e8a6}", "\u{e8a7}", "\u{e8a8}", "\u{e8a9}", "\u{e8aa}", "\u{e906}", "\u{e8ab}", "\u{e8ac}", "\u{e8ad}", "\u{e8ae}", "\u{e8af}", "\u{e8b0}", "\u{e8b1}", "\u{e8fe}", "\u{e8b2}", "\u{e8b3}", "\u{e8b4}", "\u{e8b5}", "\u{e8b6}", "\u{e8b8}", "\u{e8b9}", "\u{e8ba}", "\u{e8bb}", "\u{e8bd}", "\u{e8bc}", "\u{e8be}", "\u{e8bf}", "\u{e8c0}", "\u{e8c1}", "\u{e8c2}", "\u{e8c3}", "\u{e8c4}", "\u{e8c5}", "\u{e8c6}", "\u{e8c7}", "\u{e8c8}", "\u{e8c9}", "\u{e8ca}", "\u{e8cb}", "\u{e8cc}", "\u{e8cd}", "\u{e8ce}", "\u{e8cf}", "\u{e8d0}", "\u{e8d1}", "\u{e8d2}", "\u{e8d3}", "\u{e8d4}", "\u{e8d5}", "\u{e8d6}", "\u{e8d7}", "\u{e8d8}", "\u{e8d9}", "\u{e8da}", "\u{e8db}", "\u{e8dc}", "\u{e8dd}", "\u{e8de}", "\u{e8df}", "\u{e8e0}", "\u{e8e1}", "\u{e8e2}", "\u{e8e3}", "\u{e8e4}", "\u{e8e5}", "\u{e8e6}", "\u{e8e7}", "\u{e8e8}", "\u{e8e9}", "\u{e8ea}", "\u{e8eb}", "\u{e8ec}", "\u{e8ed}", "\u{e8ee}", "\u{e8ef}", "\u{e8f0}", "\u{e8f1}", "\u{e8f2}", "\u{e8f3}", "\u{e8f4}", "\u{e8f5}", "\u{e8f9}", "\u{e8fa}", "\u{e8ff}", "\u{e900}", "\u{e003}", "\u{e000}", "\u{e001}", "\u{e002}", "\u{e055}", "\u{e019}", "\u{e01b}", "\u{e01c}", "\u{e01d}", "\u{e01e}", "\u{e01f}", "\u{e020}", "\u{e056}", "\u{e057}", "\u{e058}", "\u{e021}", "\u{e052}", "\u{e023}", "\u{e024}", "\u{e02e}", "\u{e02f}", "\u{e030}", "\u{e028}", "\u{e029}", "\u{e02a}", "\u{e02b}", "\u{e02c}", "\u{e031}", "\u{e033}", "\u{e034}", "\u{e035}", "\u{e036}", "\u{e037}", "\u{e038}", "\u{e039}", "\u{e03b}", "\u{e03c}", "\u{e03d}", "\u{e03e}", "\u{e03f}", "\u{e040}", "\u{e041}", "\u{e042}", "\u{e059}", "\u{e05a}", "\u{e05b}", "\u{e043}", "\u{e044}", "\u{e045}", "\u{e046}", "\u{e053}", "\u{e047}", "\u{e048}", "\u{e049}", "\u{e04a}", "\u{e04b}", "\u{e04c}", "\u{e04d}", "\u{e04e}", "\u{e04f}", "\u{e050}", "\u{e051}", "\u{e0af}", "\u{e0b0}", "\u{e0b1}", "\u{e0b2}", "\u{e0b3}", "\u{e0b4}", "\u{e0b5}", "\u{e0b6}", "\u{e0b7}", "\u{e0ca}", "\u{e0cb}", "\u{e0b8}", "\u{e0b9}", "\u{e0cf}", "\u{e0ba}", "\u{e0bb}", "\u{e0bc}", "\u{e0be}", "\u{e0bf}", "\u{e0c3}", "\u{e0c4}", "\u{e0c6}", "\u{e0c7}", "\u{e0c8}", "\u{e0c9}", "\u{e0cc}", "\u{e0cd}", "\u{e0db}", "\u{e0dc}", "\u{e0dd}", "\u{e0de}", "\u{e0ce}", "\u{e0df}", "\u{e0d1}", "\u{e0d2}", "\u{e0d3}", "\u{e0d4}", "\u{e0d5}", "\u{e0d6}", "\u{e0d7}", "\u{e0d8}", "\u{e0d9}", "\u{e0da}", "\u{e145}", "\u{e146}", "\u{e147}", "\u{e148}", "\u{e149}", "\u{e14a}", "\u{e14b}", "\u{e14c}", "\u{e14d}", "\u{e14e}", "\u{e14f}", "\u{e150}", "\u{e151}", "\u{e152}", "\u{e153}", "\u{e167}", "\u{e154}", "\u{e155}", "\u{e156}", "\u{e157}", "\u{e158}", "\u{e159}", "\u{e15a}", "\u{e15b}", "\u{e15c}", "\u{e15d}", "\u{e15e}", "\u{e15f}", "\u{e160}", "\u{e161}", "\u{e162}", "\u{e163}", "\u{e164}", "\u{e165}", "\u{e166}", "\u{e190}", "\u{e191}", "\u{e192}", "\u{e193}", "\u{e195}", "\u{e194}", "\u{e19c}", "\u{e1a3}", "\u{e1a4}", "\u{e1a5}", "\u{e1a6}", "\u{e1a7}", "\u{e1a8}", "\u{e1a9}", "\u{e1aa}", "\u{e1ab}", "\u{e1ac}", "\u{e1ad}", "\u{e1ae}", "\u{e1af}", "\u{e1b0}", "\u{e1b1}", "\u{e1b2}", "\u{e1b3}", "\u{e1b4}", "\u{e1b5}", "\u{e1b8}", "\u{e1b6}", "\u{e1b7}", "\u{e1b9}", "\u{e1ba}", "\u{e1bb}", "\u{e1be}", "\u{e1bf}", "\u{e1c0}", "\u{e1c1}", "\u{e1c2}", "\u{e1c3}", "\u{e1c8}", "\u{e1cd}", "\u{e1ce}", "\u{e1cf}", "\u{e1d0}", "\u{e1d8}", "\u{e1d9}", "\u{e1da}", "\u{e1db}", "\u{e1e0}", "\u{e1bc}", "\u{e1bd}", "\u{e1e1}", "\u{e1e2}", "\u{e226}", "\u{e227}", "\u{e228}", "\u{e229}", "\u{e22a}", "\u{e22b}", "\u{e22c}", "\u{e22d}", "\u{e22e}", "\u{e22f}", "\u{e230}", "\u{e231}", "\u{e232}", "\u{e233}", "\u{e234}", "\u{e235}", "\u{e236}", "\u{e237}", "\u{e238}", "\u{e239}", "\u{e23a}", "\u{e23b}", "\u{e23c}", "\u{e23d}", "\u{e23e}", "\u{e23f}", "\u{e240}", "\u{e241}", "\u{e242}", "\u{e243}", "\u{e244}", "\u{e245}", "\u{e246}", "\u{e247}", "\u{e248}", "\u{e249}", "\u{e24a}", "\u{e24b}", "\u{e24c}", "\u{e24d}", "\u{e24e}", "\u{e24f}", "\u{e250}", "\u{e251}", "\u{e252}", "\u{e253}", "\u{e254}", "\u{e25c}", "\u{e255}", "\u{e256}", "\u{e257}", "\u{e258}", "\u{e259}", "\u{e25a}", "\u{e25b}", "\u{e2bc}", "\u{e2bd}", "\u{e2be}", "\u{e2bf}", "\u{e2c0}", "\u{e2c1}", "\u{e2c2}", "\u{e2c3}", "\u{e2c4}", "\u{e2c6}", "\u{e2c7}", "\u{e2c8}", "\u{e2c9}", "\u{e307}", "\u{e308}", "\u{e30a}", "\u{e30b}", "\u{e30c}", "\u{e30d}", "\u{e335}", "\u{e30e}", "\u{e30f}", "\u{e310}", "\u{e311}", "\u{e312}", "\u{e313}", "\u{e314}", "\u{e315}", "\u{e316}", "\u{e317}", "\u{e318}", "\u{e31a}", "\u{e31b}", "\u{e31c}", "\u{e31d}", "\u{e31e}", "\u{e31f}", "\u{e320}", "\u{e321}", "\u{e322}", "\u{e323}", "\u{e324}", "\u{e325}", "\u{e326}", "\u{e327}", "\u{e336}", "\u{e328}", "\u{e329}", "\u{e32a}", "\u{e32b}", "\u{e32c}", "\u{e32d}", "\u{e32e}", "\u{e32f}", "\u{e330}", "\u{e331}", "\u{e332}", "\u{e333}", "\u{e334}", "\u{e39d}", "\u{e39e}", "\u{e39f}", "\u{e3a0}", "\u{e3a1}", "\u{e3a2}", "\u{e3a3}", "\u{e3a4}", "\u{e3a5}", "\u{e3a6}", "\u{e3a7}", "\u{e3a8}", "\u{e3a9}", "\u{e3aa}", "\u{e3ab}", "\u{e3ac}", "\u{e3ad}", "\u{e3ae}", "\u{e3af}", "\u{e3b0}", "\u{e3b1}", "\u{e3b2}", "\u{e3b3}", "\u{e3b4}", "\u{e3b5}", "\u{e3b6}", "\u{e431}", "\u{e3b7}", "\u{e3b8}", "\u{e3b9}", "\u{e3ba}", "\u{e3bb}", "\u{e3be}", "\u{e3bc}", "\u{e3bd}", "\u{e3bf}", "\u{e3c0}", "\u{e3c1}", "\u{e3c2}", "\u{e3c3}", "\u{e3c4}", "\u{e3c5}", "\u{e3c6}", "\u{e3c7}", "\u{e3c8}", "\u{e3c9}", "\u{e3ca}", "\u{e3cb}", "\u{e3cc}", "\u{e3cd}", "\u{e3ce}", "\u{e3cf}", "\u{e3d3}", "\u{e3d0}", "\u{e3d1}", "\u{e3d2}", "\u{e3d4}", "\u{e3d5}", "\u{e3d6}", "\u{e3d7}", "\u{e3d8}", "\u{e3d9}", "\u{e3da}", "\u{e3db}", "\u{e3dc}", "\u{e3dd}", "\u{e3de}", "\u{e3df}", "\u{e3e0}", "\u{e3e2}", "\u{e3e3}", "\u{e3e4}", "\u{e3e5}", "\u{e3e6}", "\u{e3e7}", "\u{e3e8}", "\u{e3e9}", "\u{e3ea}", "\u{e3eb}", "\u{e3ec}", "\u{e3ed}", "\u{e3ee}", "\u{e3f1}", "\u{e3f2}", "\u{e3f3}", "\u{e3f4}", "\u{e3f5}", "\u{e3f6}", "\u{e3f7}", "\u{e3f8}", "\u{e3f9}", "\u{e3fa}", "\u{e3fc}", "\u{e3fb}", "\u{e3fd}", "\u{e3fe}", "\u{e3ff}", "\u{e400}", "\u{e401}", "\u{e402}", "\u{e403}", "\u{e404}", "\u{e405}", "\u{e406}", "\u{e407}", "\u{e408}", "\u{e409}", "\u{e40a}", "\u{e40b}", "\u{e40c}", "\u{e40d}", "\u{e40e}", "\u{e40f}", "\u{e410}", "\u{e411}", "\u{e412}", "\u{e413}", "\u{e432}", "\u{e433}", "\u{e434}", "\u{e415}", "\u{e416}", "\u{e417}", "\u{e418}", "\u{e419}", "\u{e41a}", "\u{e41b}", "\u{e41c}", "\u{e41d}", "\u{e41e}", "\u{e41f}", "\u{e420}", "\u{e421}", "\u{e422}", "\u{e425}", "\u{e423}", "\u{e424}", "\u{e426}", "\u{e427}", "\u{e428}", "\u{e429}", "\u{e42a}", "\u{e42b}", "\u{e435}", "\u{e42c}", "\u{e42d}", "\u{e42e}", "\u{e436}", "\u{e430}", "\u{e52d}", "\u{e52e}", "\u{e52f}", "\u{e532}", "\u{e530}", "\u{e531}", "\u{e534}", "\u{e566}", "\u{e533}", "\u{e535}", "\u{e536}", "\u{e539}", "\u{e53a}", "\u{e53b}", "\u{e53c}", "\u{e53f}", "\u{e53d}", "\u{e53e}", "\u{e540}", "\u{e541}", "\u{e542}", "\u{e543}", "\u{e556}", "\u{e544}", "\u{e545}", "\u{e546}", "\u{e547}", "\u{e548}", "\u{e549}", "\u{e54a}", "\u{e54b}", "\u{e54c}", "\u{e54d}", "\u{e54e}", "\u{e54f}", "\u{e550}", "\u{e551}", "\u{e552}", "\u{e553}", "\u{e554}", "\u{e555}", "\u{e557}", "\u{e558}", "\u{e559}", "\u{e55b}", "\u{e55c}", "\u{e55d}", "\u{e55a}", "\u{e55e}", "\u{e55f}", "\u{e560}", "\u{e561}", "\u{e562}", "\u{e563}", "\u{e564}", "\u{e565}", "\u{e5c3}", "\u{e5c4}", "\u{e5c5}", "\u{e5c6}", "\u{e5c7}", "\u{e5c8}", "\u{e5c9}", "\u{e5ca}", "\u{e5cb}", "\u{e5cc}", "\u{e5cd}", "\u{e5ce}", "\u{e5cf}", "\u{e5d0}", "\u{e5d1}", "\u{e5d2}", "\u{e5d3}", "\u{e5d4}", "\u{e5d5}", "\u{e60e}", "\u{e630}", "\u{e631}", "\u{e632}", "\u{e633}", "\u{e634}", "\u{e635}", "\u{e636}", "\u{e637}", "\u{e60f}", "\u{e638}", "\u{e610}", "\u{e612}", "\u{e611}", "\u{e613}", "\u{e614}", "\u{e615}", "\u{e616}", "\u{e617}", "\u{e639}", "\u{e618}", "\u{e619}", "\u{e61a}", "\u{e63a}", "\u{e63b}", "\u{e61b}", "\u{e61c}", "\u{e61d}", "\u{e61e}", "\u{e61f}", "\u{e620}", "\u{e63c}", "\u{e623}", "\u{e624}", "\u{e625}", "\u{e626}", "\u{e627}", "\u{e628}", "\u{e629}", "\u{e62a}", "\u{e62b}", "\u{e62c}", "\u{e62d}", "\u{e62e}", "\u{e62f}", "\u{e63d}", "\u{e63e}", "\u{e7e9}", "\u{e7ee}", "\u{e7ef}", "\u{e7f0}", "\u{e7f1}", "\u{e7f2}", "\u{e7f3}", "\u{e7f4}", "\u{e7f7}", "\u{e7f5}", "\u{e7f6}", "\u{e7f8}", "\u{e7f9}", "\u{e7fa}", "\u{e7fb}", "\u{e7fc}", "\u{e7fd}", "\u{e7fe}", "\u{e7ff}", "\u{e800}", "\u{e801}", "\u{e80b}", "\u{e80c}", "\u{e80d}", "\u{e80e}", "\u{e834}", "\u{e835}", "\u{e909}", "\u{e837}", "\u{e836}", "\u{e838}", "\u{e83a}", "\u{e839}"] \ No newline at end of file +private let GMDIcons = ["\u{e84d}", "\u{e84e}", "\u{e84f}", "\u{e850}", "\u{e851}", "\u{e853}", "\u{e854}", "\u{e855}", "\u{e856}", "\u{e857}", "\u{e858}", "\u{e859}", "\u{e85a}", "\u{e85b}", "\u{e85c}", "\u{e85d}", "\u{e85e}", "\u{e85f}", "\u{e860}", "\u{e861}", "\u{e862}", "\u{e863}", "\u{e864}", "\u{e865}", "\u{e866}", "\u{e867}", "\u{e868}", "\u{e869}", "\u{e86a}", "\u{e8fc}", "\u{e8f6}", "\u{e8f7}", "\u{e8f8}", "\u{e86b}", "\u{e86c}", "\u{e86d}", "\u{e86e}", "\u{e86f}", "\u{e870}", "\u{e871}", "\u{e872}", "\u{e873}", "\u{e875}", "\u{e876}", "\u{e877}", "\u{e8fb}", "\u{e878}", "\u{e903}", "\u{e879}", "\u{e87a}", "\u{e87b}", "\u{e87c}", "\u{e87d}", "\u{e87e}", "\u{e87f}", "\u{e880}", "\u{e881}", "\u{e904}", "\u{e905}", "\u{e882}", "\u{e883}", "\u{e884}", "\u{e908}", "\u{e885}", "\u{e886}", "\u{e887}", "\u{e8fd}", "\u{e888}", "\u{e889}", "\u{e88a}", "\u{e88b}", "\u{e88c}", "\u{e902}", "\u{e88d}", "\u{e88e}", "\u{e88f}", "\u{e890}", "\u{e891}", "\u{e892}", "\u{e893}", "\u{e894}", "\u{e895}", "\u{e896}", "\u{e897}", "\u{e898}", "\u{e899}", "\u{e89a}", "\u{e89b}", "\u{e89c}", "\u{e90a}", "\u{e89d}", "\u{e89e}", "\u{e89f}", "\u{e8a0}", "\u{e8a1}", "\u{e8a2}", "\u{e8a3}", "\u{e8a4}", "\u{e8a5}", "\u{e8a6}", "\u{e8a7}", "\u{e8a8}", "\u{e8a9}", "\u{e8aa}", "\u{e906}", "\u{e8ab}", "\u{e8ac}", "\u{e8ad}", "\u{e8ae}", "\u{e8af}", "\u{e8b0}", "\u{e8b1}", "\u{e8fe}", "\u{e8b2}", "\u{e8b3}", "\u{e8b4}", "\u{e8b5}", "\u{e8b6}", "\u{e8b8}", "\u{e8b9}", "\u{e8ba}", "\u{e8bb}", "\u{e8bd}", "\u{e8bc}", "\u{e8be}", "\u{e8bf}", "\u{e8c0}", "\u{e8c1}", "\u{e8c2}", "\u{e8c3}", "\u{e8c4}", "\u{e8c5}", "\u{e8c6}", "\u{e8c7}", "\u{e8c8}", "\u{e8c9}", "\u{e8ca}", "\u{e8cb}", "\u{e8cc}", "\u{e8cd}", "\u{e8ce}", "\u{e8cf}", "\u{e8d0}", "\u{e8d1}", "\u{e8d2}", "\u{e8d3}", "\u{e8d4}", "\u{e8d5}", "\u{e8d6}", "\u{e8d7}", "\u{e8d8}", "\u{e8d9}", "\u{e8da}", "\u{e8db}", "\u{e8dc}", "\u{e8dd}", "\u{e8de}", "\u{e8df}", "\u{e8e0}", "\u{e8e1}", "\u{e8e2}", "\u{e8e3}", "\u{e8e4}", "\u{e8e5}", "\u{e8e6}", "\u{e8e7}", "\u{e8e8}", "\u{e8e9}", "\u{e8ea}", "\u{e8eb}", "\u{e8ec}", "\u{e8ed}", "\u{e8ee}", "\u{e8ef}", "\u{e8f0}", "\u{e8f1}", "\u{e8f2}", "\u{e8f3}", "\u{e8f4}", "\u{e8f5}", "\u{e8f9}", "\u{e8fa}", "\u{e8ff}", "\u{e900}", "\u{e003}", "\u{e000}", "\u{e001}", "\u{e002}", "\u{e055}", "\u{e019}", "\u{e01b}", "\u{e01c}", "\u{e01d}", "\u{e01e}", "\u{e01f}", "\u{e020}", "\u{e056}", "\u{e057}", "\u{e058}", "\u{e021}", "\u{e052}", "\u{e023}", "\u{e024}", "\u{e02e}", "\u{e02f}", "\u{e030}", "\u{e028}", "\u{e029}", "\u{e02a}", "\u{e02b}", "\u{e02c}", "\u{e031}", "\u{e033}", "\u{e034}", "\u{e035}", "\u{e036}", "\u{e037}", "\u{e038}", "\u{e039}", "\u{e03b}", "\u{e03c}", "\u{e03d}", "\u{e03e}", "\u{e03f}", "\u{e040}", "\u{e041}", "\u{e042}", "\u{e059}", "\u{e05a}", "\u{e05b}", "\u{e043}", "\u{e044}", "\u{e045}", "\u{e046}", "\u{e053}", "\u{e047}", "\u{e048}", "\u{e049}", "\u{e04a}", "\u{e04b}", "\u{e04c}", "\u{e04d}", "\u{e04e}", "\u{e04f}", "\u{e050}", "\u{e051}", "\u{e0af}", "\u{e0b0}", "\u{e0b1}", "\u{e0b2}", "\u{e0b3}", "\u{e0b4}", "\u{e0b5}", "\u{e0b6}", "\u{e0b7}", "\u{e0ca}", "\u{e0cb}", "\u{e0b8}", "\u{e0b9}", "\u{e0cf}", "\u{e0ba}", "\u{e0bb}", "\u{e0bc}", "\u{e0be}", "\u{e0bf}", "\u{e0c3}", "\u{e0c4}", "\u{e0c6}", "\u{e0c7}", "\u{e0c8}", "\u{e0c9}", "\u{e0cc}", "\u{e0cd}", "\u{e0db}", "\u{e0dc}", "\u{e0dd}", "\u{e0de}", "\u{e0ce}", "\u{e0df}", "\u{e0d1}", "\u{e0d2}", "\u{e0d3}", "\u{e0d4}", "\u{e0d5}", "\u{e0d6}", "\u{e0d7}", "\u{e0d8}", "\u{e0d9}", "\u{e0da}", "\u{e145}", "\u{e146}", "\u{e147}", "\u{e148}", "\u{e149}", "\u{e14a}", "\u{e14b}", "\u{e14c}", "\u{e14d}", "\u{e14e}", "\u{e14f}", "\u{e150}", "\u{e151}", "\u{e152}", "\u{e153}", "\u{e167}", "\u{e154}", "\u{e155}", "\u{e156}", "\u{e157}", "\u{e158}", "\u{e159}", "\u{e15a}", "\u{e15b}", "\u{e15c}", "\u{e15d}", "\u{e15e}", "\u{e15f}", "\u{e160}", "\u{e161}", "\u{e162}", "\u{e163}", "\u{e164}", "\u{e165}", "\u{e166}", "\u{e190}", "\u{e191}", "\u{e192}", "\u{e193}", "\u{e195}", "\u{e194}", "\u{e19c}", "\u{e1a3}", "\u{e1a4}", "\u{e1a5}", "\u{e1a6}", "\u{e1a7}", "\u{e1a8}", "\u{e1a9}", "\u{e1aa}", "\u{e1ab}", "\u{e1ac}", "\u{e1ad}", "\u{e1ae}", "\u{e1af}", "\u{e1b0}", "\u{e1b1}", "\u{e1b2}", "\u{e1b3}", "\u{e1b4}", "\u{e1b5}", "\u{e1b8}", "\u{e1b6}", "\u{e1b7}", "\u{e1b9}", "\u{e1ba}", "\u{e1bb}", "\u{e1be}", "\u{e1bf}", "\u{e1c0}", "\u{e1c1}", "\u{e1c2}", "\u{e1c3}", "\u{e1c8}", "\u{e1cd}", "\u{e1ce}", "\u{e1cf}", "\u{e1d0}", "\u{e1d8}", "\u{e1d9}", "\u{e1da}", "\u{e1db}", "\u{e1e0}", "\u{e1bc}", "\u{e1bd}", "\u{e1e1}", "\u{e1e2}", "\u{e226}", "\u{e227}", "\u{e228}", "\u{e229}", "\u{e22a}", "\u{e22b}", "\u{e22c}", "\u{e22d}", "\u{e22e}", "\u{e22f}", "\u{e230}", "\u{e231}", "\u{e232}", "\u{e233}", "\u{e234}", "\u{e235}", "\u{e236}", "\u{e237}", "\u{e238}", "\u{e239}", "\u{e23a}", "\u{e23b}", "\u{e23c}", "\u{e23d}", "\u{e23e}", "\u{e23f}", "\u{e240}", "\u{e241}", "\u{e242}", "\u{e243}", "\u{e244}", "\u{e245}", "\u{e246}", "\u{e247}", "\u{e248}", "\u{e249}", "\u{e24a}", "\u{e24b}", "\u{e24c}", "\u{e24d}", "\u{e24e}", "\u{e24f}", "\u{e250}", "\u{e251}", "\u{e252}", "\u{e253}", "\u{e254}", "\u{e25c}", "\u{e255}", "\u{e256}", "\u{e257}", "\u{e258}", "\u{e259}", "\u{e25a}", "\u{e25b}", "\u{e2bc}", "\u{e2bd}", "\u{e2be}", "\u{e2bf}", "\u{e2c0}", "\u{e2c1}", "\u{e2c2}", "\u{e2c3}", "\u{e2c4}", "\u{e2c6}", "\u{e2c7}", "\u{e2c8}", "\u{e2c9}", "\u{e307}", "\u{e308}", "\u{e30a}", "\u{e30b}", "\u{e30c}", "\u{e30d}", "\u{e335}", "\u{e30e}", "\u{e30f}", "\u{e310}", "\u{e311}", "\u{e312}", "\u{e313}", "\u{e314}", "\u{e315}", "\u{e316}", "\u{e317}", "\u{e318}", "\u{e31a}", "\u{e31b}", "\u{e31c}", "\u{e31d}", "\u{e31e}", "\u{e31f}", "\u{e320}", "\u{e321}", "\u{e322}", "\u{e323}", "\u{e324}", "\u{e325}", "\u{e326}", "\u{e327}", "\u{e336}", "\u{e328}", "\u{e329}", "\u{e32a}", "\u{e32b}", "\u{e32c}", "\u{e32d}", "\u{e32e}", "\u{e32f}", "\u{e330}", "\u{e331}", "\u{e332}", "\u{e333}", "\u{e334}", "\u{e39d}", "\u{e39e}", "\u{e39f}", "\u{e3a0}", "\u{e3a1}", "\u{e3a2}", "\u{e3a3}", "\u{e3a4}", "\u{e3a5}", "\u{e3a6}", "\u{e3a7}", "\u{e3a8}", "\u{e3a9}", "\u{e3aa}", "\u{e3ab}", "\u{e3ac}", "\u{e3ad}", "\u{e3ae}", "\u{e3af}", "\u{e3b0}", "\u{e3b1}", "\u{e3b2}", "\u{e3b3}", "\u{e3b4}", "\u{e3b5}", "\u{e3b6}", "\u{e431}", "\u{e3b7}", "\u{e3b8}", "\u{e3b9}", "\u{e3ba}", "\u{e3bb}", "\u{e3be}", "\u{e3bc}", "\u{e3bd}", "\u{e3bf}", "\u{e3c0}", "\u{e3c1}", "\u{e3c2}", "\u{e3c3}", "\u{e3c4}", "\u{e3c5}", "\u{e3c6}", "\u{e3c7}", "\u{e3c8}", "\u{e3c9}", "\u{e3ca}", "\u{e3cb}", "\u{e3cc}", "\u{e3cd}", "\u{e3ce}", "\u{e3cf}", "\u{e3d3}", "\u{e3d0}", "\u{e3d1}", "\u{e3d2}", "\u{e3d4}", "\u{e3d5}", "\u{e3d6}", "\u{e3d7}", "\u{e3d8}", "\u{e3d9}", "\u{e3da}", "\u{e3db}", "\u{e3dc}", "\u{e3dd}", "\u{e3de}", "\u{e3df}", "\u{e3e0}", "\u{e3e2}", "\u{e3e3}", "\u{e3e4}", "\u{e3e5}", "\u{e3e6}", "\u{e3e7}", "\u{e3e8}", "\u{e3e9}", "\u{e3ea}", "\u{e3eb}", "\u{e3ec}", "\u{e3ed}", "\u{e3ee}", "\u{e3f1}", "\u{e3f2}", "\u{e3f3}", "\u{e3f4}", "\u{e3f5}", "\u{e3f6}", "\u{e3f7}", "\u{e3f8}", "\u{e3f9}", "\u{e3fa}", "\u{e3fc}", "\u{e3fb}", "\u{e3fd}", "\u{e3fe}", "\u{e3ff}", "\u{e400}", "\u{e401}", "\u{e402}", "\u{e403}", "\u{e404}", "\u{e405}", "\u{e406}", "\u{e407}", "\u{e408}", "\u{e409}", "\u{e40a}", "\u{e40b}", "\u{e40c}", "\u{e40d}", "\u{e40e}", "\u{e40f}", "\u{e410}", "\u{e411}", "\u{e412}", "\u{e413}", "\u{e432}", "\u{e433}", "\u{e434}", "\u{e415}", "\u{e416}", "\u{e417}", "\u{e418}", "\u{e419}", "\u{e41a}", "\u{e41b}", "\u{e41c}", "\u{e41d}", "\u{e41e}", "\u{e41f}", "\u{e420}", "\u{e421}", "\u{e422}", "\u{e425}", "\u{e423}", "\u{e424}", "\u{e426}", "\u{e427}", "\u{e428}", "\u{e429}", "\u{e42a}", "\u{e42b}", "\u{e435}", "\u{e42c}", "\u{e42d}", "\u{e42e}", "\u{e436}", "\u{e430}", "\u{e52d}", "\u{e52e}", "\u{e52f}", "\u{e532}", "\u{e530}", "\u{e531}", "\u{e534}", "\u{e566}", "\u{e533}", "\u{e535}", "\u{e536}", "\u{e539}", "\u{e53a}", "\u{e53b}", "\u{e53c}", "\u{e53f}", "\u{e53d}", "\u{e53e}", "\u{e540}", "\u{e541}", "\u{e542}", "\u{e543}", "\u{e556}", "\u{e544}", "\u{e545}", "\u{e546}", "\u{e547}", "\u{e548}", "\u{e549}", "\u{e54a}", "\u{e54b}", "\u{e54c}", "\u{e54d}", "\u{e54e}", "\u{e54f}", "\u{e550}", "\u{e551}", "\u{e552}", "\u{e553}", "\u{e554}", "\u{e555}", "\u{e557}", "\u{e558}", "\u{e559}", "\u{e55b}", "\u{e55c}", "\u{e55d}", "\u{e55a}", "\u{e55e}", "\u{e55f}", "\u{e560}", "\u{e561}", "\u{e562}", "\u{e563}", "\u{e564}", "\u{e565}", "\u{e5c3}", "\u{e5c4}", "\u{e5c5}", "\u{e5c6}", "\u{e5c7}", "\u{e5c8}", "\u{e5c9}", "\u{e5ca}", "\u{e5cb}", "\u{e5cc}", "\u{e5cd}", "\u{e5ce}", "\u{e5cf}", "\u{e5d0}", "\u{e5d1}", "\u{e5d2}", "\u{e5d3}", "\u{e5d4}", "\u{e5d5}", "\u{e60e}", "\u{e630}", "\u{e631}", "\u{e632}", "\u{e633}", "\u{e634}", "\u{e635}", "\u{e636}", "\u{e637}", "\u{e60f}", "\u{e638}", "\u{e610}", "\u{e612}", "\u{e611}", "\u{e613}", "\u{e614}", "\u{e615}", "\u{e616}", "\u{e617}", "\u{e639}", "\u{e618}", "\u{e619}", "\u{e61a}", "\u{e63a}", "\u{e63b}", "\u{e61b}", "\u{e61c}", "\u{e61d}", "\u{e61e}", "\u{e61f}", "\u{e620}", "\u{e63c}", "\u{e623}", "\u{e624}", "\u{e625}", "\u{e626}", "\u{e627}", "\u{e628}", "\u{e629}", "\u{e62a}", "\u{e62b}", "\u{e62c}", "\u{e62d}", "\u{e62e}", "\u{e62f}", "\u{e63d}", "\u{e63e}", "\u{e7e9}", "\u{e7ee}", "\u{e7ef}", "\u{e7f0}", "\u{e7f1}", "\u{e7f2}", "\u{e7f3}", "\u{e7f4}", "\u{e7f7}", "\u{e7f5}", "\u{e7f6}", "\u{e7f8}", "\u{e7f9}", "\u{e7fa}", "\u{e7fb}", "\u{e7fc}", "\u{e7fd}", "\u{e7fe}", "\u{e7ff}", "\u{e800}", "\u{e801}", "\u{e80b}", "\u{e80c}", "\u{e80d}", "\u{e80e}", "\u{e834}", "\u{e835}", "\u{e909}", "\u{e837}", "\u{e836}", "\u{e838}", "\u{e83a}", "\u{e839}"] From 8ef4637222563e5385c71ead05bc15578d1a2795 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Mon, 25 Jun 2018 19:36:51 +0100 Subject: [PATCH 02/25] make text public --- Source/GMDIcon.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/GMDIcon.swift b/Source/GMDIcon.swift index f69faae..9b8f9ce 100644 --- a/Source/GMDIcon.swift +++ b/Source/GMDIcon.swift @@ -150,7 +150,7 @@ public enum GMDType: Int { return GMDIcons.count } - var text: String? { + public var text: String? { return GMDIcons[rawValue] } From 710d5c2c63c8cfdddbc67b451ad9981c5e018ce1 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Fri, 24 Aug 2018 13:00:07 +0100 Subject: [PATCH 03/25] provide default state when setting icon, and add optional font size setGMDIcon sets for .normal by default --- Source/GMDIcon.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/GMDIcon.swift b/Source/GMDIcon.swift index 9b8f9ce..27a820f 100644 --- a/Source/GMDIcon.swift +++ b/Source/GMDIcon.swift @@ -6,12 +6,12 @@ public extension UIButton { /** To set an icon, use i.e. `buttonName.setGMDIcon(GMDType.GMBPublic, forState: .Normal)` */ - func setGMDIcon(_ icon: GMDType, forState state: UIControlState) { + func setGMDIcon(_ icon: GMDType, forState state: UIControlState = .normal, fontSize:CGFloat? = nil) { if let titleLabel = titleLabel { FontLoader.loadFontIfNeeded() - let font = UIFont(name: GMDStruct.FontName, size: titleLabel.font.pointSize) + let font = UIFont(name: GMDStruct.FontName, size: fontSize ?? titleLabel.font.pointSize) assert(font != nil, GMDStruct.ErrorAnnounce) titleLabel.font = font! setTitle(icon.text, for: state) From e8dce8924e2dc4bba01c706d9fa9f23574e623d5 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Fri, 24 Aug 2018 13:16:45 +0100 Subject: [PATCH 04/25] use iconSize rather than fontSize to maintain consistency --- Source/GMDIcon.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/GMDIcon.swift b/Source/GMDIcon.swift index 27a820f..428719e 100644 --- a/Source/GMDIcon.swift +++ b/Source/GMDIcon.swift @@ -6,12 +6,12 @@ public extension UIButton { /** To set an icon, use i.e. `buttonName.setGMDIcon(GMDType.GMBPublic, forState: .Normal)` */ - func setGMDIcon(_ icon: GMDType, forState state: UIControlState = .normal, fontSize:CGFloat? = nil) { + func setGMDIcon(_ icon: GMDType, forState state: UIControlState = .normal, iconSize:CGFloat? = nil) { if let titleLabel = titleLabel { FontLoader.loadFontIfNeeded() - let font = UIFont(name: GMDStruct.FontName, size: fontSize ?? titleLabel.font.pointSize) + let font = UIFont(name: GMDStruct.FontName, size: iconSize ?? titleLabel.font.pointSize) assert(font != nil, GMDStruct.ErrorAnnounce) titleLabel.font = font! setTitle(icon.text, for: state) From eac0608ea3bee453c874ec0229abee1f73ee00f5 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Fri, 24 Aug 2018 13:17:01 +0100 Subject: [PATCH 05/25] Update docs --- README.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index f621814..3450c95 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,13 @@ # Google Material Design Icons Swift + +Forked from original project by @vaberer + +Updated for Swift 4 +Various convenience methods updated to make them even more convenient + ![Font Awesome Swift](https://github.com/Vaberer/Font-Awesome-Swift/blob/master/resources/opensource_matters.png) -Follow me: [@vaberer](https://twitter.com/vaberer) +Originally by: [@vaberer](https://twitter.com/vaberer) I like ★. Do not forget to ★ this super convenient library. @@ -35,7 +41,7 @@ CocoaPods 0.36 adds supports for Swift and embedded frameworks. You can install $ gem install cocoapods ``` -To integrate Google Material Design Icons Swifr into your Xcode project using CocoaPods, specify it in your `Podfile`: +To integrate Google Material Design Icons Swift into your Xcode project using CocoaPods, specify it in your `Podfile`: ```ruby source 'https://github.com/CocoaPods/Specs.git' @@ -55,8 +61,6 @@ Do not forget to import to your swift files where you want to use this library: import Google_Material_Design_Icons_Swift ``` -### To use Font Awesome in Swift 1.2: -```pod 'Google-Material-Design-Icons-Swift', :git => 'https://github.com/Vaberer/Google-Material-Design-Icons-Swift.git', :branch => 'swift1.2'``` ### Manually @@ -75,31 +79,28 @@ Super easy way how to add an icon. ### UILabel ```Swift - labelName.GMDIcon = GMDType.GMDPublic - - //or if you want to set an icon size, use: - labelName.setGMDIcon(GMDType.GMDPublic, iconSize: 30) + labelName.GMDIcon = .gmdPublic labelName.textColor = UIColor.redColor() ``` ### UIButton ```Swift - buttonName.setGMDIcon(GMDType.GMDPublic, forState: .Normal) + buttonName.setGMDIcon(.gmdPublic) - //or if you want to set an icon size, use: - buttonName.setGMDIcon(GMDType.GMDPublic, iconSize: 35, forState: .Normal) + //or if you want to set an icon size and/or specify the state, use: + buttonName.setGMDIcon(.gmdPublic, forState: .highlighted, iconSize: 30) - buttonName.setTitleColor(UIColor.redColor(), forState: .Normal) + buttonName.setTitleColor(UIColor.redColor(), forState: .normal) ``` ### UIBarButtonItem ```Swift //Standard font size - barName.GMDIcon = GMDType.GMDPublic + barName.GMDIcon = .gmdPublic //Custom font size - barName.setGMDIcon(GMDType.GMDPublic, iconSize: 35) + barName.setGMDIcon(.gmdPublic, iconSize: 35) barName.tintColor = UIColor.redColor() ``` From cf5c38c85a17b228d3d989d3214cd700cb3db15d Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Fri, 24 Aug 2018 16:05:34 +0100 Subject: [PATCH 06/25] Update ttf file --- Source/GMDIcons.ttf | Bin 107780 -> 142176 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 Source/GMDIcons.ttf diff --git a/Source/GMDIcons.ttf b/Source/GMDIcons.ttf old mode 100755 new mode 100644 index 0768c78c31e92ac8f1cf5dcc142b5e4c12be1da4..bc92153a36adeac292d4447a96fe148a1b937c64 GIT binary patch delta 64637 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 B&Wr#6 delta 31229 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 QdP)cShzFNKI0C2rKNMNv-~a#s From dddb91acbae5ca92a54f23289ce2b6c957c4770d Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Fri, 24 Aug 2018 16:06:22 +0100 Subject: [PATCH 07/25] Updated to enums with code point in rawValue --- Example/GMD Swift.xcodeproj/project.pbxproj | 4 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Example/GMD Swift/EnumCollection.swift | 37 + Example/GMD Swift/ViewController.swift | 10 +- Source/GMDIcon.swift | 811 +++++++++++++++++- 5 files changed, 864 insertions(+), 6 deletions(-) create mode 100644 Example/GMD Swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Example/GMD Swift/EnumCollection.swift diff --git a/Example/GMD Swift.xcodeproj/project.pbxproj b/Example/GMD Swift.xcodeproj/project.pbxproj index cd98e7e..70b97e3 100644 --- a/Example/GMD Swift.xcodeproj/project.pbxproj +++ b/Example/GMD Swift.xcodeproj/project.pbxproj @@ -15,6 +15,7 @@ 4E19E0241B919D5400825B73 /* IconCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E19E0231B919D5400825B73 /* IconCell.swift */; }; 4E19E0261B91B34800825B73 /* GMDIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E19E0251B91B34800825B73 /* GMDIcon.swift */; }; 4E19E0281B91B35E00825B73 /* GMDIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */; }; + D4817F7E21304D2D005F9950 /* EnumCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4817F7D21304D2D005F9950 /* EnumCollection.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -28,6 +29,7 @@ 4E19E0231B919D5400825B73 /* IconCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IconCell.swift; sourceTree = ""; }; 4E19E0251B91B34800825B73 /* GMDIcon.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GMDIcon.swift; sourceTree = ""; }; 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = GMDIcons.ttf; sourceTree = ""; }; + D4817F7D21304D2D005F9950 /* EnumCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumCollection.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -62,6 +64,7 @@ children = ( 4E19E0221B919C3600825B73 /* Source - Google Material Icons Swift */, 4E19E00F1B919AFC00825B73 /* AppDelegate.swift */, + D4817F7D21304D2D005F9950 /* EnumCollection.swift */, 4E19E0231B919D5400825B73 /* IconCell.swift */, 4E19E0111B919AFC00825B73 /* ViewController.swift */, 4E19E0131B919AFC00825B73 /* Main.storyboard */, @@ -157,6 +160,7 @@ 4E19E0121B919AFC00825B73 /* ViewController.swift in Sources */, 4E19E0261B91B34800825B73 /* GMDIcon.swift in Sources */, 4E19E0101B919AFC00825B73 /* AppDelegate.swift in Sources */, + D4817F7E21304D2D005F9950 /* EnumCollection.swift in Sources */, 4E19E0241B919D5400825B73 /* IconCell.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Example/GMD Swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/GMD Swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/GMD Swift.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/GMD Swift/EnumCollection.swift b/Example/GMD Swift/EnumCollection.swift new file mode 100644 index 0000000..d6f08fc --- /dev/null +++ b/Example/GMD Swift/EnumCollection.swift @@ -0,0 +1,37 @@ +// +// EnumCollection.swift +// GMD Swift +// +// Created by Rob Jonson on 24/08/2018. +// Copyright © 2018 Patrik Vaberer. All rights reserved. +// + +import Foundation + +//TODO: Remove when Swift 4.2 in general use + +public protocol EnumCollection: Hashable { + static func cases() -> AnySequence + static var allValues: [Self] { get } +} + +public extension EnumCollection { + + public static func cases() -> AnySequence { + return AnySequence { () -> AnyIterator in + var raw = 0 + return AnyIterator { + let current: Self = withUnsafePointer(to: &raw) { $0.withMemoryRebound(to: self, capacity: 1) { $0.pointee } } + guard current.hashValue == raw else { + return nil + } + raw += 1 + return current + } + } + } + + public static var allValues: [Self] { + return Array(self.cases()) + } +} diff --git a/Example/GMD Swift/ViewController.swift b/Example/GMD Swift/ViewController.swift index 08a9a66..55cd73b 100644 --- a/Example/GMD Swift/ViewController.swift +++ b/Example/GMD Swift/ViewController.swift @@ -55,7 +55,10 @@ class ViewController: UIViewController, UITableViewDataSource, UITableViewDelega c.lFont.text = resultSearchController.isActive ? filteredData[indexPath.row] : helper[indexPath.row] - let icon = resultSearchController.isActive ? GMDType(rawValue: helper.index(of: filteredData[indexPath.row])!) : GMDType(rawValue: indexPath.row) + let index = resultSearchController.isActive ? helper.index(of: filteredData[indexPath.row])! : indexPath.row + + let icon = GMDType.allValues[index] + c.lSmall.GMDIcon = icon c.lMedium.GMDIcon = icon c.lBig.GMDIcon = icon @@ -105,5 +108,8 @@ class ViewController: UIViewController, UITableViewDataSource, UITableViewDelega } } - let helper = ["GMD3DRotation", "GMDAccessibility", "GMDAccountBalance", "GMDAccountBalanceWallet", "GMDAccountBox", "GMDAccountCircle", "GMDAddShoppingCart", "GMDAlarm", "GMDAlarmAdd", "GMDAlarmOff", "GMDAlarmOn", "GMDAndroid", "GMDAnnouncement", "GMDAspectRatio", "GMDAssessment", "GMDAssignment", "GMDAssignmentInd", "GMDAssignmentLate", "GMDAssignmentReturn", "GMDAssignmentReturned", "GMDAssignmentTurnedIn", "GMDAutorenew", "GMDBackup", "GMDBook", "GMDBookmark", "GMDBookmarkBorder", "GMDBugReport", "GMDBuild", "GMDCached", "GMDCameraEnhance", "GMDCardGiftcard", "GMDCardMembership", "GMDCardTravel", "GMDChangeHistory", "GMDCheckCircle", "GMDChromeReaderMode", "GMDClass", "GMDCode", "GMDCreditCard", "GMDDashboard", "GMDDelete", "GMDDescription", "GMDDns", "GMDDone", "GMDDoneAll", "GMDEject", "GMDEvent", "GMDEventSeat", "GMDExitToApp", "GMDExplore", "GMDExtension", "GMDFace", "GMDFavorite", "GMDFavoriteBorder", "GMDFeedback", "GMDFindInPage", "GMDFindReplace", "GMDFlightLand", "GMDFlightTakeoff", "GMDFlipToBack", "GMDFlipToFront", "GMDGetApp", "GMDGif", "GMDGrade", "GMDGroupWork", "GMDHelp", "GMDHelpOutline", "GMDHighlightOff", "GMDHistory", "GMDHome", "GMDHourglassEmpty", "GMDHourglassFull", "GMDHttp", "GMDHttps", "GMDInfo", "GMDInfoOutline", "GMDInput", "GMDInvertColors", "GMDLabel", "GMDLabelOutline", "GMDLanguage", "GMDLaunch", "GMDList", "GMDLock", "GMDLockOpen", "GMDLockOutline", "GMDLoyalty", "GMDMarkunreadMailbox", "GMDNoteAdd", "GMDOfflinePin", "GMDOpenInBrowser", "GMDOpenInNew", "GMDOpenWith", "GMDPageview", "GMDPayment", "GMDPermCameraMic", "GMDPermContactCalendar", "GMDPermDataSetting", "GMDPermDeviceInformation", "GMDPermIdentity", "GMDPermMedia", "GMDPermPhoneMsg", "GMDPermScanWifi", "GMDPictureInPicture", "GMDPlayForWork", "GMDPolymer", "GMDPowerSettingsNew", "GMDPrint", "GMDQueryBuilder", "GMDQuestionAnswer", "GMDReceipt", "GMDRedeem", "GMDReorder", "GMDReportProblem", "GMDRestore", "GMDRoom", "GMDSchedule", "GMDSearch", "GMDSettings", "GMDSettingsApplications", "GMDSettingsBackupRestore", "GMDSettingsBluetooth", "GMDSettingsBrightness", "GMDSettingsCell", "GMDSettingsEthernet", "GMDSettingsInputAntenna", "GMDSettingsInputComponent", "GMDSettingsInputComposite", "GMDSettingsInputHdmi", "GMDSettingsInputSvideo", "GMDSettingsOverscan", "GMDSettingsPhone", "GMDSettingsPower", "GMDSettingsRemote", "GMDSettingsVoice", "GMDShop", "GMDShopTwo", "GMDShoppingBasket", "GMDShoppingCart", "GMDSpeakerNotes", "GMDSpellcheck", "GMDStarRate", "GMDStars", "GMDStore", "GMDSubject", "GMDSupervisorAccount", "GMDSwapHoriz", "GMDSwapVert", "GMDSwapVerticalCircle", "GMDSystemUpdateAlt", "GMDTab", "GMDTabUnselected", "GMDTheaters", "GMDThumbDown", "GMDThumbUp", "GMDThumbsUpDown", "GMDToc", "GMDToday", "GMDToll", "GMDTrackChanges", "GMDTranslate", "GMDTrendingDown", "GMDTrendingFlat", "GMDTrendingUp", "GMDTurnedIn", "GMDTurnedInNot", "GMDVerifiedUser", "GMDViewAgenda", "GMDViewArray", "GMDViewCarousel", "GMDViewColumn", "GMDViewDay", "GMDViewHeadline", "GMDViewList", "GMDViewModule", "GMDViewQuilt", "GMDViewStream", "GMDViewWeek", "GMDVisibility", "GMDVisibilityOff", "GMDWork", "GMDYoutubeSearchedFor", "GMDZoomIn", "GMDZoomOut", "GMDAddAlert", "GMDError", "GMDErrorOutline", "GMDWarning", "GMDAirplay", "GMDAlbum", "GMDAvTimer", "GMDClosedCaption", "GMDEqualizer", "GMDExplicit", "GMDFastForward", "GMDFastRewind", "GMDForward10", "GMDForward30", "GMDForward5", "GMDGames", "GMDHd", "GMDHearing", "GMDHighQuality", "GMDLibraryAdd", "GMDLibraryBooks", "GMDLibraryMusic", "GMDLoop", "GMDMic", "GMDMicNone", "GMDMicOff", "GMDMovie", "GMDNewReleases", "GMDNotInterested", "GMDPause", "GMDPauseCircleFilled", "GMDPauseCircleOutline", "GMDPlayArrow", "GMDPlayCircleFilled", "GMDPlayCircleOutline", "GMDPlaylistAdd", "GMDQueue", "GMDQueueMusic", "GMDRadio", "GMDRecentActors", "GMDRepeat", "GMDRepeatOne", "GMDReplay", "GMDReplay10", "GMDReplay30", "GMDReplay5", "GMDShuffle", "GMDSkipNext", "GMDSkipPrevious", "GMDSnooze", "GMDSortByAlpha", "GMDStop", "GMDSubtitles", "GMDSurroundSound", "GMDVideoLibrary", "GMDVideocam", "GMDVideocamOff", "GMDVolumeDown", "GMDVolumeMute", "GMDVolumeOff", "GMDVolumeUp", "GMDWeb", "GMDBusiness", "GMDCall", "GMDCallEnd", "GMDCallMade", "GMDCallMerge", "GMDCallMissed", "GMDCallReceived", "GMDCallSplit", "GMDChat", "GMDChatBubble", "GMDChatBubbleOutline", "GMDClearAll", "GMDComment", "GMDContactPhone", "GMDContacts", "GMDDialerSip", "GMDDialpad", "GMDEmail", "GMDForum", "GMDImportExport", "GMDInvertColorsOff", "GMDLiveHelp", "GMDLocationOff", "GMDLocationOn", "GMDMessage", "GMDNoSim", "GMDPhone", "GMDPhonelinkErase", "GMDPhonelinkLock", "GMDPhonelinkRing", "GMDPhonelinkSetup", "GMDPortableWifiOff", "GMDPresentToAll", "GMDRingVolume", "GMDSpeakerPhone", "GMDStayCurrentLandscape", "GMDStayCurrentPortrait", "GMDStayPrimaryLandscape", "GMDStayPrimaryPortrait", "GMDSwapCalls", "GMDTextsms", "GMDVoicemail", "GMDVpnKey", "GMDAdd", "GMDAddBox", "GMDAddCircle", "GMDAddCircleOutline", "GMDArchive", "GMDBackspace", "GMDBlock", "GMDClear", "GMDContentCopy", "GMDContentCut", "GMDContentPaste", "GMDCreate", "GMDDrafts", "GMDFilterList", "GMDFlag", "GMDFontDownload", "GMDForward", "GMDGesture", "GMDInbox", "GMDLink", "GMDMail", "GMDMarkunread", "GMDRedo", "GMDRemove", "GMDRemoveCircle", "GMDRemoveCircleOutline", "GMDReply", "GMDReplyAll", "GMDReport", "GMDSave", "GMDSelectAll", "GMDSend", "GMDSort", "GMDTextFormat", "GMDUndo", "GMDAccessAlarm", "GMDAccessAlarms", "GMDAccessTime", "GMDAddAlarm", "GMDAirplanemodeActive", "GMDAirplanemodeInactive", "GMDBatteryAlert", "GMDBatteryChargingFull", "GMDBatteryFull", "GMDBatteryStd", "GMDBatteryUnknown", "GMDBluetooth", "GMDBluetoothConnected", "GMDBluetoothDisabled", "GMDBluetoothSearching", "GMDBrightnessAuto", "GMDBrightnessHigh", "GMDBrightnessLow", "GMDBrightnessMedium", "GMDDataUsage", "GMDDeveloperMode", "GMDDevices", "GMDDvr", "GMDGpsFixed", "GMDGpsNotFixed", "GMDGpsOff", "GMDGraphicEq", "GMDLocationDisabled", "GMDLocationSearching", "GMDNetworkCell", "GMDNetworkWifi", "GMDNfc", "GMDScreenLockLandscape", "GMDScreenLockPortrait", "GMDScreenLockRotation", "GMDScreenRotation", "GMDSdStorage", "GMDSettingsSystemDaydream", "GMDSignalCellular4Bar", "GMDSignalCellularConnectedNoInternet4Bar", "GMDSignalCellularNoSim", "GMDSignalCellularNull", "GMDSignalCellularOff", "GMDSignalWifi4Bar", "GMDSignalWifi4BarLock", "GMDSignalWifiOff", "GMDStorage", "GMDUsb", "GMDWallpaper", "GMDWidgets", "GMDWifiLock", "GMDWifiTethering", "GMDAttachFile", "GMDAttachMoney", "GMDBorderAll", "GMDBorderBottom", "GMDBorderClear", "GMDBorderColor", "GMDBorderHorizontal", "GMDBorderInner", "GMDBorderLeft", "GMDBorderOuter", "GMDBorderRight", "GMDBorderStyle", "GMDBorderTop", "GMDBorderVertical", "GMDFormatAlignCenter", "GMDFormatAlignJustify", "GMDFormatAlignLeft", "GMDFormatAlignRight", "GMDFormatBold", "GMDFormatClear", "GMDFormatColorFill", "GMDFormatColorReset", "GMDFormatColorText", "GMDFormatIndentDecrease", "GMDFormatIndentIncrease", "GMDFormatItalic", "GMDFormatLineSpacing", "GMDFormatListBulleted", "GMDFormatListNumbered", "GMDFormatPaint", "GMDFormatQuote", "GMDFormatSize", "GMDFormatStrikethrough", "GMDFormatTextdirectionLToR", "GMDFormatTextdirectionRToL", "GMDFormatUnderlined", "GMDFunctions", "GMDInsertChart", "GMDInsertComment", "GMDInsertDriveFile", "GMDInsertEmoticon", "GMDInsertInvitation", "GMDInsertLink", "GMDInsertPhoto", "GMDMergeType", "GMDModeComment", "GMDModeEdit", "GMDMoneyOff", "GMDPublish", "GMDSpaceBar", "GMDStrikethroughS", "GMDVerticalAlignBottom", "GMDVerticalAlignCenter", "GMDVerticalAlignTop", "GMDWrapText", "GMDAttachment", "GMDCloud", "GMDCloudCircle", "GMDCloudDone", "GMDCloudDownload", "GMDCloudOff", "GMDCloudQueue", "GMDCloudUpload", "GMDFileDownload", "GMDFileUpload", "GMDFolder", "GMDFolderOpen", "GMDFolderShared", "GMDCast", "GMDCastConnected", "GMDComputer", "GMDDesktopMac", "GMDDesktopWindows", "GMDDeveloperBoard", "GMDDeviceHub", "GMDDock", "GMDGamepad", "GMDHeadset", "GMDHeadsetMic", "GMDKeyboard", "GMDKeyboardArrowDown", "GMDKeyboardArrowLeft", "GMDKeyboardArrowRight", "GMDKeyboardArrowUp", "GMDKeyboardBackspace", "GMDKeyboardCapslock", "GMDKeyboardHide", "GMDKeyboardReturn", "GMDKeyboardTab", "GMDKeyboardVoice", "GMDLaptop", "GMDLaptopChromebook", "GMDLaptopMac", "GMDLaptopWindows", "GMDMemory", "GMDMouse", "GMDPhoneAndroid", "GMDPhoneIphone", "GMDPhonelink", "GMDPhonelinkOff", "GMDPowerInput", "GMDRouter", "GMDScanner", "GMDSecurity", "GMDSimCard", "GMDSmartphone", "GMDSpeaker", "GMDSpeakerGroup", "GMDTablet", "GMDTabletAndroid", "GMDTabletMac", "GMDToys", "GMDTv", "GMDWatch", "GMDAddToPhotos", "GMDAdjust", "GMDAssistant", "GMDAssistantPhoto", "GMDAudiotrack", "GMDBlurCircular", "GMDBlurLinear", "GMDBlurOff", "GMDBlurOn", "GMDBrightness1", "GMDBrightness2", "GMDBrightness3", "GMDBrightness4", "GMDBrightness5", "GMDBrightness6", "GMDBrightness7", "GMDBrokenImage", "GMDBrush", "GMDCamera", "GMDCameraAlt", "GMDCameraFront", "GMDCameraRear", "GMDCameraRoll", "GMDCenterFocusStrong", "GMDCenterFocusWeak", "GMDCollections", "GMDCollectionsBookmark", "GMDColorLens", "GMDColorize", "GMDCompare", "GMDControlPoint", "GMDControlPointDuplicate", "GMDCrop", "GMDCrop169", "GMDCrop32", "GMDCrop54", "GMDCrop75", "GMDCropDin", "GMDCropFree", "GMDCropLandscape", "GMDCropOriginal", "GMDCropPortrait", "GMDCropSquare", "GMDDehaze", "GMDDetails", "GMDEdit", "GMDExposure", "GMDExposureNeg1", "GMDExposureNeg2", "GMDExposurePlus1", "GMDExposurePlus2", "GMDExposureZero", "GMDFilter", "GMDFilter1", "GMDFilter2", "GMDFilter3", "GMDFilter4", "GMDFilter5", "GMDFilter6", "GMDFilter7", "GMDFilter8", "GMDFilter9", "GMDFilter9Plus", "GMDFilterBAndW", "GMDFilterCenterFocus", "GMDFilterDrama", "GMDFilterFrames", "GMDFilterHdr", "GMDFilterNone", "GMDFilterTiltShift", "GMDFilterVintage", "GMDFlare", "GMDFlashAuto", "GMDFlashOff", "GMDFlashOn", "GMDFlip", "GMDGradient", "GMDGrain", "GMDGridOff", "GMDGridOn", "GMDHdrOff", "GMDHdrOn", "GMDHdrStrong", "GMDHdrWeak", "GMDHealing", "GMDImage", "GMDImageAspectRatio", "GMDIso", "GMDLandscape", "GMDLeakAdd", "GMDLeakRemove", "GMDLens", "GMDLooks", "GMDLooks3", "GMDLooks4", "GMDLooks5", "GMDLooks6", "GMDLooksOne", "GMDLooksTwo", "GMDLoupe", "GMDMonochromePhotos", "GMDMovieCreation", "GMDMusicNote", "GMDNature", "GMDNaturePeople", "GMDNavigateBefore", "GMDNavigateNext", "GMDPalette", "GMDPanorama", "GMDPanoramaFishEye", "GMDPanoramaHorizontal", "GMDPanoramaVertical", "GMDPanoramaWideAngle", "GMDPhoto", "GMDPhotoAlbum", "GMDPhotoCamera", "GMDPhotoLibrary", "GMDPhotoSizeSelectActual", "GMDPhotoSizeSelectLarge", "GMDPhotoSizeSelectSmall", "GMDPictureAsPdf", "GMDPortrait", "GMDRemoveRedEye", "GMDRotate90DegreesCcw", "GMDRotateLeft", "GMDRotateRight", "GMDSlideshow", "GMDStraighten", "GMDStyle", "GMDSwitchCamera", "GMDSwitchVideo", "GMDTagFaces", "GMDTexture", "GMDTimelapse", "GMDTimer", "GMDTimer10", "GMDTimer3", "GMDTimerOff", "GMDTonality", "GMDTransform", "GMDTune", "GMDViewComfy", "GMDViewCompact", "GMDVignette", "GMDWbAuto", "GMDWbCloudy", "GMDWbIncandescent", "GMDWbIridescent", "GMDWbSunny", "GMDBeenhere", "GMDDirections", "GMDDirectionsBike", "GMDDirectionsBoat", "GMDDirectionsBus", "GMDDirectionsCar", "GMDDirectionsRailway", "GMDDirectionsRun", "GMDDirectionsSubway", "GMDDirectionsTransit", "GMDDirectionsWalk", "GMDFlight", "GMDHotel", "GMDLayers", "GMDLayersClear", "GMDLocalActivity", "GMDLocalAirport", "GMDLocalAtm", "GMDLocalBar", "GMDLocalCafe", "GMDLocalCarWash", "GMDLocalConvenienceStore", "GMDLocalDining", "GMDLocalDrink", "GMDLocalFlorist", "GMDLocalGasStation", "GMDLocalGroceryStore", "GMDLocalHospital", "GMDLocalHotel", "GMDLocalLaundryService", "GMDLocalLibrary", "GMDLocalMall", "GMDLocalMovies", "GMDLocalOffer", "GMDLocalParking", "GMDLocalPharmacy", "GMDLocalPhone", "GMDLocalPizza", "GMDLocalPlay", "GMDLocalPostOffice", "GMDLocalPrintshop", "GMDLocalSee", "GMDLocalShipping", "GMDLocalTaxi", "GMDMap", "GMDMyLocation", "GMDNavigation", "GMDPersonPin", "GMDPinDrop", "GMDPlace", "GMDRateReview", "GMDRestaurantMenu", "GMDSatellite", "GMDStoreMallDirectory", "GMDTerrain", "GMDTraffic", "GMDApps", "GMDArrowBack", "GMDArrowDropDown", "GMDArrowDropDownCircle", "GMDArrowDropUp", "GMDArrowForward", "GMDCancel", "GMDCheck", "GMDChevronLeft", "GMDChevronRight", "GMDClose", "GMDExpandLess", "GMDExpandMore", "GMDFullscreen", "GMDFullscreenExit", "GMDMenu", "GMDMoreHoriz", "GMDMoreVert", "GMDRefresh", "GMDAdb", "GMDAirlineSeatFlat", "GMDAirlineSeatFlatAngled", "GMDAirlineSeatIndividualSuite", "GMDAirlineSeatLegroomExtra", "GMDAirlineSeatLegroomNormal", "GMDAirlineSeatLegroomReduced", "GMDAirlineSeatReclineExtra", "GMDAirlineSeatReclineNormal", "GMDBluetoothAudio", "GMDConfirmationNumber", "GMDDiscFull", "GMDDoNotDisturb", "GMDDoNotDisturbAlt", "GMDDriveEta", "GMDEventAvailable", "GMDEventBusy", "GMDEventNote", "GMDFolderSpecial", "GMDLiveTv", "GMDMms", "GMDMore", "GMDNetworkLocked", "GMDOndemandVideo", "GMDPersonalVideo", "GMDPhoneBluetoothSpeaker", "GMDPhoneForwarded", "GMDPhoneInTalk", "GMDPhoneLocked", "GMDPhoneMissed", "GMDPhonePaused", "GMDPower", "GMDSdCard", "GMDSimCardAlert", "GMDSms", "GMDSmsFailed", "GMDSync", "GMDSyncDisabled", "GMDSyncProblem", "GMDSystemUpdate", "GMDTapAndPlay", "GMDTimeToLeave", "GMDVibration", "GMDVoiceChat", "GMDVpnLock", "GMDWc", "GMDWifi", "GMDCake", "GMDDomain", "GMDGroup", "GMDGroupAdd", "GMDLocationCity", "GMDMood", "GMDMoodBad", "GMDNotifications", "GMDNotificationsActive", "GMDNotificationsNone", "GMDNotificationsOff", "GMDNotificationsPaused", "GMDPages", "GMDPartyMode", "GMDPeople", "GMDPeopleOutline", "GMDPerson", "GMDPersonAdd", "GMDPersonOutline", "GMDPlusOne", "GMDPoll", "GMDPublic", "GMDSchool", "GMDShare", "GMDWhatshot", "GMDCheckBox", "GMDCheckBoxOutlineBlank", "GMDIndeterminateCheckBox", "GMDRadioButtonChecked", "GMDRadioButtonUnchecked", "GMDStar", "GMDStarBorder", "GMDStarHalf"] + let helper = GMDType.cases().map { (item) -> String in + return "\(item)" + } + } diff --git a/Source/GMDIcon.swift b/Source/GMDIcon.swift index 428719e..575ef1f 100644 --- a/Source/GMDIcon.swift +++ b/Source/GMDIcon.swift @@ -143,7 +143,804 @@ private class FontLoader { /** List of all icons in Google Material Design Font */ -public enum GMDType: Int { +public enum GMDType: Int, EnumCollection { + + + case gmd3DRotation = 0xE84D + case gmdAccessibility = 0xE84E + case gmdAccessibilityNew = 0xE92C + case gmdAccountBalance = 0xE84F + case gmdAccountBalanceWallet = 0xE850 + case gmdAccountBox = 0xE851 + case gmdAccountCircle = 0xE853 + case gmdAddShoppingCart = 0xE854 + case gmdAlarm = 0xE855 + case gmdAlarmAdd = 0xE856 + case gmdAlarmOff = 0xE857 + case gmdAlarmOn = 0xE858 + case gmdAndroid = 0xE859 + case gmdAnnouncement = 0xE85A + case gmdAspectRatio = 0xE85B + case gmdAssessment = 0xE85C + case gmdAssignment = 0xE85D + case gmdAssignmentInd = 0xE85E + case gmdAssignmentLate = 0xE85F + case gmdAssignmentReturn = 0xE860 + case gmdAssignmentReturned = 0xE861 + case gmdAssignmentTurnedIn = 0xE862 + case gmdAutorenew = 0xE863 + case gmdBackup = 0xE864 + case gmdBook = 0xE865 + case gmdBookmark = 0xE866 + case gmdBookmarkBorder = 0xE867 + case gmdBugReport = 0xE868 + case gmdBuild = 0xE869 + case gmdCached = 0xE86A + case gmdCameraEnhance = 0xE8FC + case gmdCardGiftcard = 0xE8F6 + case gmdCardMembership = 0xE8F7 + case gmdCardTravel = 0xE8F8 + case gmdChangeHistory = 0xE86B + case gmdCheckCircle = 0xE86C + case gmdChromeReaderMode = 0xE86D + case gmdClass = 0xE86E + case gmdCode = 0xE86F + case gmdCreditCard = 0xE870 + case gmdDashboard = 0xE871 + case gmdDelete = 0xE872 + case gmdDescription = 0xE873 + case gmdDns = 0xE875 + case gmdDone = 0xE876 + case gmdDoneAll = 0xE877 + case gmdEject = 0xE8FB + case gmdEvent = 0xE878 + case gmdEventSeat = 0xE903 + case gmdExitToApp = 0xE879 + case gmdExplore = 0xE87A + case gmdExtension = 0xE87B + case gmdFace = 0xE87C + case gmdFavorite = 0xE87D + case gmdFavoriteBorder = 0xE87E + case gmdFeedback = 0xE87F + case gmdFindInPage = 0xE880 + case gmdFindReplace = 0xE881 + case gmdFlightLand = 0xE904 + case gmdFlightTakeoff = 0xE905 + case gmdFlipToBack = 0xE882 + case gmdFlipToFront = 0xE883 + case gmdGetApp = 0xE884 + case gmdGif = 0xE908 + case gmdGrade = 0xE885 + case gmdGroupWork = 0xE886 + case gmdHelp = 0xE887 + case gmdHelpOutline = 0xE8FD + case gmdHighlightOff = 0xE888 + case gmdHistory = 0xE889 + case gmdHome = 0xE88A + case gmdHourglassEmpty = 0xE88B + case gmdHourglassFull = 0xE88C + case gmdHttp = 0xE902 + case gmdHttps = 0xE88D + case gmdInfo = 0xE88E + case gmdInfoOutline = 0xE88F + case gmdInput = 0xE890 + case gmdInvertColors = 0xE891 + case gmdLabel = 0xE892 + case gmdLabelOutline = 0xE893 + case gmdLanguage = 0xE894 + case gmdLaunch = 0xE895 + case gmdList = 0xE896 + case gmdLock = 0xE897 + case gmdLockOpen = 0xE898 + case gmdLockOutline = 0xE899 + case gmdLoyalty = 0xE89A + case gmdMarkunreadMailbox = 0xE89B + case gmdNoteAdd = 0xE89C + case gmdOfflinePin = 0xE90A + case gmdOpenInBrowser = 0xE89D + case gmdOpenInNew = 0xE89E + case gmdOpenWith = 0xE89F + case gmdPageview = 0xE8A0 + case gmdPayment = 0xE8A1 + case gmdPermCameraMic = 0xE8A2 + case gmdPermContactCalendar = 0xE8A3 + case gmdPermDataSetting = 0xE8A4 + case gmdPermDeviceInformation = 0xE8A5 + case gmdPermIdentity = 0xE8A6 + case gmdPermMedia = 0xE8A7 + case gmdPermPhoneMsg = 0xE8A8 + case gmdPermScanWifi = 0xE8A9 + case gmdPictureInPicture = 0xE8AA + case gmdPlayForWork = 0xE906 + case gmdPolymer = 0xE8AB + case gmdPowerSettingsNew = 0xE8AC + case gmdPrint = 0xE8AD + case gmdQueryBuilder = 0xE8AE + case gmdQuestionAnswer = 0xE8AF + case gmdReceipt = 0xE8B0 + case gmdRedeem = 0xE8B1 + case gmdReorder = 0xE8FE + case gmdReportProblem = 0xE8B2 + case gmdRestore = 0xE8B3 + case gmdRoom = 0xE8B4 + case gmdSchedule = 0xE8B5 + case gmdSearch = 0xE8B6 + case gmdSettings = 0xE8B8 + case gmdSettingsApplications = 0xE8B9 + case gmdSettingsBackupRestore = 0xE8BA + case gmdSettingsBluetooth = 0xE8BB + case gmdSettingsBrightness = 0xE8BD + case gmdSettingsCell = 0xE8BC + case gmdSettingsEthernet = 0xE8BE + case gmdSettingsInputAntenna = 0xE8BF + case gmdSettingsInputComponent = 0xE8C0 + case gmdSettingsInputComposite = 0xE8C1 + case gmdSettingsInputHdmi = 0xE8C2 + case gmdSettingsInputSvideo = 0xE8C3 + case gmdSettingsOverscan = 0xE8C4 + case gmdSettingsPhone = 0xE8C5 + case gmdSettingsPower = 0xE8C6 + case gmdSettingsRemote = 0xE8C7 + case gmdSettingsVoice = 0xE8C8 + case gmdShop = 0xE8C9 + case gmdShopTwo = 0xE8CA + case gmdShoppingBasket = 0xE8CB + case gmdShoppingCart = 0xE8CC + case gmdSpeakerNotes = 0xE8CD + case gmdSpellcheck = 0xE8CE + case gmdStarRate = 0xE8CF + case gmdStars = 0xE8D0 + case gmdStore = 0xE8D1 + case gmdSubject = 0xE8D2 + case gmdSupervisorAccount = 0xE8D3 + case gmdSwapHoriz = 0xE8D4 + case gmdSwapVert = 0xE8D5 + case gmdSwapVerticalCircle = 0xE8D6 + case gmdSystemUpdateAlt = 0xE8D7 + case gmdTab = 0xE8D8 + case gmdTabUnselected = 0xE8D9 + case gmdTheaters = 0xE8DA + case gmdThumbDown = 0xE8DB + case gmdThumbUp = 0xE8DC + case gmdThumbsUpDown = 0xE8DD + case gmdToc = 0xE8DE + case gmdToday = 0xE8DF + case gmdToll = 0xE8E0 + case gmdTrackChanges = 0xE8E1 + case gmdTranslate = 0xE8E2 + case gmdTrendingDown = 0xE8E3 + case gmdTrendingFlat = 0xE8E4 + case gmdTrendingUp = 0xE8E5 + case gmdTurnedIn = 0xE8E6 + case gmdTurnedInNot = 0xE8E7 + case gmdVerifiedUser = 0xE8E8 + case gmdViewAgenda = 0xE8E9 + case gmdViewArray = 0xE8EA + case gmdViewCarousel = 0xE8EB + case gmdViewColumn = 0xE8EC + case gmdViewDay = 0xE8ED + case gmdViewHeadline = 0xE8EE + case gmdViewList = 0xE8EF + case gmdViewModule = 0xE8F0 + case gmdViewQuilt = 0xE8F1 + case gmdViewStream = 0xE8F2 + case gmdViewWeek = 0xE8F3 + case gmdVisibility = 0xE8F4 + case gmdVisibilityOff = 0xE8F5 + case gmdWork = 0xE8F9 + case gmdYoutubeSearchedFor = 0xE8FA + case gmdZoomIn = 0xE8FF + case gmdZoomOut = 0xE900 + case gmdAddAlert = 0xE003 + case gmdError = 0xE000 + case gmdErrorOutline = 0xE001 + case gmdWarning = 0xE002 + case gmdAirplay = 0xE055 + case gmdAlbum = 0xE019 + case gmdAvTimer = 0xE01B + case gmdClosedCaption = 0xE01C + case gmdEqualizer = 0xE01D + case gmdExplicit = 0xE01E + case gmdFastForward = 0xE01F + case gmdFastRewind = 0xE020 + case gmdForward10 = 0xE056 + case gmdForward30 = 0xE057 + case gmdForward5 = 0xE058 + case gmdGames = 0xE021 + case gmdHd = 0xE052 + case gmdHearing = 0xE023 + case gmdHighQuality = 0xE024 + case gmdLibraryAdd = 0xE02E + case gmdLibraryBooks = 0xE02F + case gmdLibraryMusic = 0xE030 + case gmdLoop = 0xE028 + case gmdMic = 0xE029 + case gmdMicNone = 0xE02A + case gmdMicOff = 0xE02B + case gmdMovie = 0xE02C + case gmdNewReleases = 0xE031 + case gmdNotInterested = 0xE033 + case gmdPause = 0xE034 + case gmdPauseCircleFilled = 0xE035 + case gmdPauseCircleOutline = 0xE036 + case gmdPlayArrow = 0xE037 + case gmdPlayCircleFilled = 0xE038 + case gmdPlayCircleOutline = 0xE039 + case gmdPlaylistAdd = 0xE03B + case gmdQueue = 0xE03C + case gmdQueueMusic = 0xE03D + case gmdRadio = 0xE03E + case gmdRecentActors = 0xE03F + case gmdRepeat = 0xE040 + case gmdRepeatOne = 0xE041 + case gmdReplay = 0xE042 + case gmdReplay10 = 0xE059 + case gmdReplay30 = 0xE05A + case gmdReplay5 = 0xE05B + case gmdShuffle = 0xE043 + case gmdSkipNext = 0xE044 + case gmdSkipPrevious = 0xE045 + case gmdSnooze = 0xE046 + case gmdSortByAlpha = 0xE053 + case gmdStop = 0xE047 + case gmdSubtitles = 0xE048 + case gmdSurroundSound = 0xE049 + case gmdVideoLibrary = 0xE04A + case gmdVideocam = 0xE04B + case gmdVideocamOff = 0xE04C + case gmdVolumeDown = 0xE04D + case gmdVolumeMute = 0xE04E + case gmdVolumeOff = 0xE04F + case gmdVolumeUp = 0xE050 + case gmdWeb = 0xE051 + case gmdBusiness = 0xE0AF + case gmdCall = 0xE0B0 + case gmdCallEnd = 0xE0B1 + case gmdCallMade = 0xE0B2 + case gmdCallMerge = 0xE0B3 + case gmdCallMissed = 0xE0B4 + case gmdCallReceived = 0xE0B5 + case gmdCallSplit = 0xE0B6 + case gmdChat = 0xE0B7 + case gmdChatBubble = 0xE0CA + case gmdChatBubbleOutline = 0xE0CB + case gmdClearAll = 0xE0B8 + case gmdComment = 0xE0B9 + case gmdContactPhone = 0xE0CF + case gmdContacts = 0xE0BA + case gmdDialerSip = 0xE0BB + case gmdDialpad = 0xE0BC + case gmdEmail = 0xE0BE + case gmdForum = 0xE0BF + case gmdImportExport = 0xE0C3 + case gmdInvertColorsOff = 0xE0C4 + case gmdLiveHelp = 0xE0C6 + case gmdLocationOff = 0xE0C7 + case gmdLocationOn = 0xE0C8 + case gmdMessage = 0xE0C9 + case gmdNoSim = 0xE0CC + case gmdPhone = 0xE0CD + case gmdPhonelinkErase = 0xE0DB + case gmdPhonelinkLock = 0xE0DC + case gmdPhonelinkRing = 0xE0DD + case gmdPhonelinkSetup = 0xE0DE + case gmdPortableWifiOff = 0xE0CE + case gmdPresentToAll = 0xE0DF + case gmdRingVolume = 0xE0D1 + case gmdSpeakerPhone = 0xE0D2 + case gmdStayCurrentLandscape = 0xE0D3 + case gmdStayCurrentPortrait = 0xE0D4 + case gmdStayPrimaryLandscape = 0xE0D5 + case gmdStayPrimaryPortrait = 0xE0D6 + case gmdSwapCalls = 0xE0D7 + case gmdTextsms = 0xE0D8 + case gmdVoicemail = 0xE0D9 + case gmdVpnKey = 0xE0DA + case gmdAdd = 0xE145 + case gmdAddBox = 0xE146 + case gmdAddCircle = 0xE147 + case gmdAddCircleOutline = 0xE148 + case gmdArchive = 0xE149 + case gmdBackspace = 0xE14A + case gmdBlock = 0xE14B + case gmdClear = 0xE14C + case gmdContentCopy = 0xE14D + case gmdContentCut = 0xE14E + case gmdContentPaste = 0xE14F + case gmdCreate = 0xE150 + case gmdDrafts = 0xE151 + case gmdFilterList = 0xE152 + case gmdFlag = 0xE153 + case gmdFontDownload = 0xE167 + case gmdForward = 0xE154 + case gmdGesture = 0xE155 + case gmdInbox = 0xE156 + case gmdLink = 0xE157 + case gmdMail = 0xE158 + case gmdMarkunread = 0xE159 + case gmdRedo = 0xE15A + case gmdRemove = 0xE15B + case gmdRemoveCircle = 0xE15C + case gmdRemoveCircleOutline = 0xE15D + case gmdReply = 0xE15E + case gmdReplyAll = 0xE15F + case gmdReport = 0xE160 + case gmdSave = 0xE161 + case gmdSelectAll = 0xE162 + case gmdSend = 0xE163 + case gmdSort = 0xE164 + case gmdTextFormat = 0xE165 + case gmdUndo = 0xE166 + case gmdAccessAlarm = 0xE190 + case gmdAccessAlarms = 0xE191 + case gmdAccessTime = 0xE192 + case gmdAddAlarm = 0xE193 + case gmdAirplanemodeActive = 0xE195 + case gmdAirplanemodeInactive = 0xE194 + case gmdBatteryAlert = 0xE19C + case gmdBatteryChargingFull = 0xE1A3 + case gmdBatteryFull = 0xE1A4 + case gmdBatteryStd = 0xE1A5 + case gmdBatteryUnknown = 0xE1A6 + case gmdBluetooth = 0xE1A7 + case gmdBluetoothConnected = 0xE1A8 + case gmdBluetoothDisabled = 0xE1A9 + case gmdBluetoothSearching = 0xE1AA + case gmdBrightnessAuto = 0xE1AB + case gmdBrightnessHigh = 0xE1AC + case gmdBrightnessLow = 0xE1AD + case gmdBrightnessMedium = 0xE1AE + case gmdDataUsage = 0xE1AF + case gmdDeveloperMode = 0xE1B0 + case gmdDevices = 0xE1B1 + case gmdDvr = 0xE1B2 + case gmdGpsFixed = 0xE1B3 + case gmdGpsNotFixed = 0xE1B4 + case gmdGpsOff = 0xE1B5 + case gmdGraphicEq = 0xE1B8 + case gmdLocationDisabled = 0xE1B6 + case gmdLocationSearching = 0xE1B7 + case gmdNetworkCell = 0xE1B9 + case gmdNetworkWifi = 0xE1BA + case gmdNfc = 0xE1BB + case gmdScreenLockLandscape = 0xE1BE + case gmdScreenLockPortrait = 0xE1BF + case gmdScreenLockRotation = 0xE1C0 + case gmdScreenRotation = 0xE1C1 + case gmdSdStorage = 0xE1C2 + case gmdSettingsSystemDaydream = 0xE1C3 + case gmdSignalCellular4Bar = 0xE1C8 + case gmdSignalCellularConnectedNoInternet4Bar = 0xE1CD + case gmdSignalCellularNoSim = 0xE1CE + case gmdSignalCellularNull = 0xE1CF + case gmdSignalCellularOff = 0xE1D0 + case gmdSignalWifi4Bar = 0xE1D8 + case gmdSignalWifi4BarLock = 0xE1D9 + case gmdSignalWifiOff = 0xE1DA + case gmdStorage = 0xE1DB + case gmdUsb = 0xE1E0 + case gmdWallpaper = 0xE1BC + case gmdWidgets = 0xE1BD + case gmdWifiLock = 0xE1E1 + case gmdWifiTethering = 0xE1E2 + case gmdAttachFile = 0xE226 + case gmdAttachMoney = 0xE227 + case gmdBorderAll = 0xE228 + case gmdBorderBottom = 0xE229 + case gmdBorderClear = 0xE22A + case gmdBorderColor = 0xE22B + case gmdBorderHorizontal = 0xE22C + case gmdBorderInner = 0xE22D + case gmdBorderLeft = 0xE22E + case gmdBorderOuter = 0xE22F + case gmdBorderRight = 0xE230 + case gmdBorderStyle = 0xE231 + case gmdBorderTop = 0xE232 + case gmdBorderVertical = 0xE233 + case gmdFormatAlignCenter = 0xE234 + case gmdFormatAlignJustify = 0xE235 + case gmdFormatAlignLeft = 0xE236 + case gmdFormatAlignRight = 0xE237 + case gmdFormatBold = 0xE238 + case gmdFormatClear = 0xE239 + case gmdFormatColorFill = 0xE23A + case gmdFormatColorReset = 0xE23B + case gmdFormatColorText = 0xE23C + case gmdFormatIndentDecrease = 0xE23D + case gmdFormatIndentIncrease = 0xE23E + case gmdFormatItalic = 0xE23F + case gmdFormatLineSpacing = 0xE240 + case gmdFormatListBulleted = 0xE241 + case gmdFormatListNumbered = 0xE242 + case gmdFormatPaint = 0xE243 + case gmdFormatQuote = 0xE244 + case gmdFormatSize = 0xE245 + case gmdFormatStrikethrough = 0xE246 + case gmdFormatTextdirectionLToR = 0xE247 + case gmdFormatTextdirectionRToL = 0xE248 + case gmdFormatUnderlined = 0xE249 + case gmdFunctions = 0xE24A + case gmdInsertChart = 0xE24B + case gmdInsertComment = 0xE24C + case gmdInsertDriveFile = 0xE24D + case gmdInsertEmoticon = 0xE24E + case gmdInsertInvitation = 0xE24F + case gmdInsertLink = 0xE250 + case gmdInsertPhoto = 0xE251 + case gmdMergeType = 0xE252 + case gmdModeComment = 0xE253 + case gmdModeEdit = 0xE254 + case gmdMoneyOff = 0xE25C + case gmdPublish = 0xE255 + case gmdSpaceBar = 0xE256 + case gmdStrikethroughS = 0xE257 + case gmdVerticalAlignBottom = 0xE258 + case gmdVerticalAlignCenter = 0xE259 + case gmdVerticalAlignTop = 0xE25A + case gmdWrapText = 0xE25B + case gmdAttachment = 0xE2BC + case gmdCloud = 0xE2BD + case gmdCloudCircle = 0xE2BE + case gmdCloudDone = 0xE2BF + case gmdCloudDownload = 0xE2C0 + case gmdCloudOff = 0xE2C1 + case gmdCloudQueue = 0xE2C2 + case gmdCloudUpload = 0xE2C3 + case gmdFileDownload = 0xE2C4 + case gmdFileUpload = 0xE2C6 + case gmdFolder = 0xE2C7 + case gmdFolderOpen = 0xE2C8 + case gmdFolderShared = 0xE2C9 + case gmdCast = 0xE307 + case gmdCastConnected = 0xE308 + case gmdComputer = 0xE30A + case gmdDesktopMac = 0xE30B + case gmdDesktopWindows = 0xE30C + case gmdDeveloperBoard = 0xE30D + case gmdDeviceHub = 0xE335 + case gmdDock = 0xE30E + case gmdGamepad = 0xE30F + case gmdHeadset = 0xE310 + case gmdHeadsetMic = 0xE311 + case gmdKeyboard = 0xE312 + case gmdKeyboardArrowDown = 0xE313 + case gmdKeyboardArrowLeft = 0xE314 + case gmdKeyboardArrowRight = 0xE315 + case gmdKeyboardArrowUp = 0xE316 + case gmdKeyboardBackspace = 0xE317 + case gmdKeyboardCapslock = 0xE318 + case gmdKeyboardHide = 0xE31A + case gmdKeyboardReturn = 0xE31B + case gmdKeyboardTab = 0xE31C + case gmdKeyboardVoice = 0xE31D + case gmdLaptop = 0xE31E + case gmdLaptopChromebook = 0xE31F + case gmdLaptopMac = 0xE320 + case gmdLaptopWindows = 0xE321 + case gmdMemory = 0xE322 + case gmdMouse = 0xE323 + case gmdPhoneAndroid = 0xE324 + case gmdPhoneIphone = 0xE325 + case gmdPhonelink = 0xE326 + case gmdPhonelinkOff = 0xE327 + case gmdPowerInput = 0xE336 + case gmdRouter = 0xE328 + case gmdScanner = 0xE329 + case gmdSecurity = 0xE32A + case gmdSimCard = 0xE32B + case gmdSmartphone = 0xE32C + case gmdSpeaker = 0xE32D + case gmdSpeakerGroup = 0xE32E + case gmdTablet = 0xE32F + case gmdTabletAndroid = 0xE330 + case gmdTabletMac = 0xE331 + case gmdToys = 0xE332 + case gmdTv = 0xE333 + case gmdWatch = 0xE334 + case gmdAddToPhotos = 0xE39D + case gmdAdjust = 0xE39E + case gmdAssistant = 0xE39F + case gmdAssistantPhoto = 0xE3A0 + case gmdAudiotrack = 0xE3A1 + case gmdBlurCircular = 0xE3A2 + case gmdBlurLinear = 0xE3A3 + case gmdBlurOff = 0xE3A4 + case gmdBlurOn = 0xE3A5 + case gmdBrightness1 = 0xE3A6 + case gmdBrightness2 = 0xE3A7 + case gmdBrightness3 = 0xE3A8 + case gmdBrightness4 = 0xE3A9 + case gmdBrightness5 = 0xE3AA + case gmdBrightness6 = 0xE3AB + case gmdBrightness7 = 0xE3AC + case gmdBrokenImage = 0xE3AD + case gmdBrush = 0xE3AE + case gmdCamera = 0xE3AF + case gmdCameraAlt = 0xE3B0 + case gmdCameraFront = 0xE3B1 + case gmdCameraRear = 0xE3B2 + case gmdCameraRoll = 0xE3B3 + case gmdCenterFocusStrong = 0xE3B4 + case gmdCenterFocusWeak = 0xE3B5 + case gmdCollections = 0xE3B6 + case gmdCollectionsBookmark = 0xE431 + case gmdColorLens = 0xE3B7 + case gmdColorize = 0xE3B8 + case gmdCompare = 0xE3B9 + case gmdControlPoint = 0xE3BA + case gmdControlPointDuplicate = 0xE3BB + case gmdCrop = 0xE3BE + case gmdCrop169 = 0xE3BC + case gmdCrop32 = 0xE3BD + case gmdCrop54 = 0xE3BF + case gmdCrop75 = 0xE3C0 + case gmdCropDin = 0xE3C1 + case gmdCropFree = 0xE3C2 + case gmdCropLandscape = 0xE3C3 + case gmdCropOriginal = 0xE3C4 + case gmdCropPortrait = 0xE3C5 + case gmdCropSquare = 0xE3C6 + case gmdDehaze = 0xE3C7 + case gmdDetails = 0xE3C8 + case gmdEdit = 0xE3C9 + case gmdExposure = 0xE3CA + case gmdExposureNeg1 = 0xE3CB + case gmdExposureNeg2 = 0xE3CC + case gmdExposurePlus1 = 0xE3CD + case gmdExposurePlus2 = 0xE3CE + case gmdExposureZero = 0xE3CF + case gmdFilter = 0xE3D3 + case gmdFilter1 = 0xE3D0 + case gmdFilter2 = 0xE3D1 + case gmdFilter3 = 0xE3D2 + case gmdFilter4 = 0xE3D4 + case gmdFilter5 = 0xE3D5 + case gmdFilter6 = 0xE3D6 + case gmdFilter7 = 0xE3D7 + case gmdFilter8 = 0xE3D8 + case gmdFilter9 = 0xE3D9 + case gmdFilter9Plus = 0xE3DA + case gmdFilterBAndW = 0xE3DB + case gmdFilterCenterFocus = 0xE3DC + case gmdFilterDrama = 0xE3DD + case gmdFilterFrames = 0xE3DE + case gmdFilterHdr = 0xE3DF + case gmdFilterNone = 0xE3E0 + case gmdFilterTiltShift = 0xE3E2 + case gmdFilterVintage = 0xE3E3 + case gmdFlare = 0xE3E4 + case gmdFlashAuto = 0xE3E5 + case gmdFlashOff = 0xE3E6 + case gmdFlashOn = 0xE3E7 + case gmdFlip = 0xE3E8 + case gmdGradient = 0xE3E9 + case gmdGrain = 0xE3EA + case gmdGridOff = 0xE3EB + case gmdGridOn = 0xE3EC + case gmdHdrOff = 0xE3ED + case gmdHdrOn = 0xE3EE + case gmdHdrStrong = 0xE3F1 + case gmdHdrWeak = 0xE3F2 + case gmdHealing = 0xE3F3 + case gmdImage = 0xE3F4 + case gmdImageAspectRatio = 0xE3F5 + case gmdIso = 0xE3F6 + case gmdLandscape = 0xE3F7 + case gmdLeakAdd = 0xE3F8 + case gmdLeakRemove = 0xE3F9 + case gmdLens = 0xE3FA + case gmdLooks = 0xE3FC + case gmdLooks3 = 0xE3FB + case gmdLooks4 = 0xE3FD + case gmdLooks5 = 0xE3FE + case gmdLooks6 = 0xE3FF + case gmdLooksOne = 0xE400 + case gmdLooksTwo = 0xE401 + case gmdLoupe = 0xE402 + case gmdMonochromePhotos = 0xE403 + case gmdMovieCreation = 0xE404 + case gmdMusicNote = 0xE405 + case gmdNature = 0xE406 + case gmdNaturePeople = 0xE407 + case gmdNavigateBefore = 0xE408 + case gmdNavigateNext = 0xE409 + case gmdPalette = 0xE40A + case gmdPanorama = 0xE40B + case gmdPanoramaFishEye = 0xE40C + case gmdPanoramaHorizontal = 0xE40D + case gmdPanoramaVertical = 0xE40E + case gmdPanoramaWideAngle = 0xE40F + case gmdPhoto = 0xE410 + case gmdPhotoAlbum = 0xE411 + case gmdPhotoCamera = 0xE412 + case gmdPhotoLibrary = 0xE413 + case gmdPhotoSizeSelectActual = 0xE432 + case gmdPhotoSizeSelectLarge = 0xE433 + case gmdPhotoSizeSelectSmall = 0xE434 + case gmdPictureAsPdf = 0xE415 + case gmdPortrait = 0xE416 + case gmdRemoveRedEye = 0xE417 + case gmdRotate90DegreesCcw = 0xE418 + case gmdRotateLeft = 0xE419 + case gmdRotateRight = 0xE41A + case gmdSlideshow = 0xE41B + case gmdStraighten = 0xE41C + case gmdStyle = 0xE41D + case gmdSwitchCamera = 0xE41E + case gmdSwitchVideo = 0xE41F + case gmdTagFaces = 0xE420 + case gmdTexture = 0xE421 + case gmdTimelapse = 0xE422 + case gmdTimer = 0xE425 + case gmdTimer10 = 0xE423 + case gmdTimer3 = 0xE424 + case gmdTimerOff = 0xE426 + case gmdTonality = 0xE427 + case gmdTransform = 0xE428 + case gmdTune = 0xE429 + case gmdViewComfy = 0xE42A + case gmdViewCompact = 0xE42B + case gmdVignette = 0xE435 + case gmdWbAuto = 0xE42C + case gmdWbCloudy = 0xE42D + case gmdWbIncandescent = 0xE42E + case gmdWbIridescent = 0xE436 + case gmdWbSunny = 0xE430 + case gmdBeenhere = 0xE52D + case gmdDirections = 0xE52E + case gmdDirectionsBike = 0xE52F + case gmdDirectionsBoat = 0xE532 + case gmdDirectionsBus = 0xE530 + case gmdDirectionsCar = 0xE531 + case gmdDirectionsRailway = 0xE534 + case gmdDirectionsRun = 0xE566 + case gmdDirectionsSubway = 0xE533 + case gmdDirectionsTransit = 0xE535 + case gmdDirectionsWalk = 0xE536 + case gmdFlight = 0xE539 + case gmdHotel = 0xE53A + case gmdLayers = 0xE53B + case gmdLayersClear = 0xE53C + case gmdLocalActivity = 0xE53F + case gmdLocalAirport = 0xE53D + case gmdLocalAtm = 0xE53E + case gmdLocalBar = 0xE540 + case gmdLocalCafe = 0xE541 + case gmdLocalCarWash = 0xE542 + case gmdLocalConvenienceStore = 0xE543 + case gmdLocalDining = 0xE556 + case gmdLocalDrink = 0xE544 + case gmdLocalFlorist = 0xE545 + case gmdLocalGasStation = 0xE546 + case gmdLocalGroceryStore = 0xE547 + case gmdLocalHospital = 0xE548 + case gmdLocalHotel = 0xE549 + case gmdLocalLaundryService = 0xE54A + case gmdLocalLibrary = 0xE54B + case gmdLocalMall = 0xE54C + case gmdLocalMovies = 0xE54D + case gmdLocalOffer = 0xE54E + case gmdLocalParking = 0xE54F + case gmdLocalPharmacy = 0xE550 + case gmdLocalPhone = 0xE551 + case gmdLocalPizza = 0xE552 + case gmdLocalPlay = 0xE553 + case gmdLocalPostOffice = 0xE554 + case gmdLocalPrintshop = 0xE555 + case gmdLocalSee = 0xE557 + case gmdLocalShipping = 0xE558 + case gmdLocalTaxi = 0xE559 + case gmdMap = 0xE55B + case gmdMyLocation = 0xE55C + case gmdNavigation = 0xE55D + case gmdPersonPin = 0xE55A + case gmdPinDrop = 0xE55E + case gmdPlace = 0xE55F + case gmdRateReview = 0xE560 + case gmdRestaurantMenu = 0xE561 + case gmdSatellite = 0xE562 + case gmdStoreMallDirectory = 0xE563 + case gmdTerrain = 0xE564 + case gmdTraffic = 0xE565 + case gmdApps = 0xE5C3 + case gmdArrowBack = 0xE5C4 + case gmdArrowDropDown = 0xE5C5 + case gmdArrowDropDownCircle = 0xE5C6 + case gmdArrowDropUp = 0xE5C7 + case gmdArrowForward = 0xE5C8 + case gmdCancel = 0xE5C9 + case gmdCheck = 0xE5CA + case gmdChevronLeft = 0xE5CB + case gmdChevronRight = 0xE5CC + case gmdClose = 0xE5CD + case gmdExpandLess = 0xE5CE + case gmdExpandMore = 0xE5CF + case gmdFullscreen = 0xE5D0 + case gmdFullscreenExit = 0xE5D1 + case gmdMenu = 0xE5D2 + case gmdMoreHoriz = 0xE5D3 + case gmdMoreVert = 0xE5D4 + case gmdRefresh = 0xE5D5 + case gmdAdb = 0xE60E + case gmdAirlineSeatFlat = 0xE630 + case gmdAirlineSeatFlatAngled = 0xE631 + case gmdAirlineSeatIndividualSuite = 0xE632 + case gmdAirlineSeatLegroomExtra = 0xE633 + case gmdAirlineSeatLegroomNormal = 0xE634 + case gmdAirlineSeatLegroomReduced = 0xE635 + case gmdAirlineSeatReclineExtra = 0xE636 + case gmdAirlineSeatReclineNormal = 0xE637 + case gmdBluetoothAudio = 0xE60F + case gmdConfirmationNumber = 0xE638 + case gmdDiscFull = 0xE610 + case gmdDoNotDisturb = 0xE612 + case gmdDoNotDisturbAlt = 0xE611 + case gmdDriveEta = 0xE613 + case gmdEventAvailable = 0xE614 + case gmdEventBusy = 0xE615 + case gmdEventNote = 0xE616 + case gmdFolderSpecial = 0xE617 + case gmdLiveTv = 0xE639 + case gmdMms = 0xE618 + case gmdMore = 0xE619 + case gmdNetworkLocked = 0xE61A + case gmdOndemandVideo = 0xE63A + case gmdPersonalVideo = 0xE63B + case gmdPhoneBluetoothSpeaker = 0xE61B + case gmdPhoneForwarded = 0xE61C + case gmdPhoneInTalk = 0xE61D + case gmdPhoneLocked = 0xE61E + case gmdPhoneMissed = 0xE61F + case gmdPhonePaused = 0xE620 + case gmdPower = 0xE63C + case gmdSdCard = 0xE623 + case gmdSimCardAlert = 0xE624 + case gmdSms = 0xE625 + case gmdSmsFailed = 0xE626 + case gmdSync = 0xE627 + case gmdSyncDisabled = 0xE628 + case gmdSyncProblem = 0xE629 + case gmdSystemUpdate = 0xE62A + case gmdTapAndPlay = 0xE62B + case gmdTimeToLeave = 0xE62C + case gmdVibration = 0xE62D + case gmdVoiceChat = 0xE62E + case gmdVpnLock = 0xE62F + case gmdWc = 0xE63D + case gmdWifi = 0xE63E + case gmdCake = 0xE7E9 + case gmdDomain = 0xE7EE + case gmdGroup = 0xE7EF + case gmdGroupAdd = 0xE7F0 + case gmdLocationCity = 0xE7F1 + case gmdMood = 0xE7F2 + case gmdMoodBad = 0xE7F3 + case gmdNotifications = 0xE7F4 + case gmdNotificationsActive = 0xE7F7 + case gmdNotificationsNone = 0xE7F5 + case gmdNotificationsOff = 0xE7F6 + case gmdNotificationsPaused = 0xE7F8 + case gmdPages = 0xE7F9 + case gmdPartyMode = 0xE7FA + case gmdPeople = 0xE7FB + case gmdPeopleOutline = 0xE7FC + case gmdPerson = 0xE7FD + case gmdPersonAdd = 0xE7FE + case gmdPersonOutline = 0xE7FF + case gmdPlusOne = 0xE800 + case gmdPoll = 0xE801 + case gmdPublic = 0xE80B + case gmdSchool = 0xE80C + case gmdShare = 0xE80D + case gmdWhatshot = 0xE80E + case gmdCheckBox = 0xE834 + case gmdCheckBoxOutlineBlank = 0xE835 + case gmdIndeterminateCheckBox = 0xE909 + case gmdRadioButtonChecked = 0xE837 + case gmdRadioButtonUnchecked = 0xE836 + case gmdStar = 0xE838 + case gmdStarBorder = 0xE83A + case gmdStarHalf = 0xE839 static var count: Int { @@ -152,11 +949,17 @@ public enum GMDType: Int { public var text: String? { - return GMDIcons[rawValue] + return String(utf16CodeUnits: [UInt16(rawValue)], count: 1) } - case gmd3DRotation, gmdAccessibility, gmdAccountBalance, gmdAccountBalanceWallet, gmdAccountBox, gmdAccountCircle, gmdAddShoppingCart, gmdAlarm, gmdAlarmAdd, gmdAlarmOff, gmdAlarmOn, gmdAndroid, gmdAnnouncement, gmdAspectRatio, gmdAssessment, gmdAssignment, gmdAssignmentInd, gmdAssignmentLate, gmdAssignmentReturn, gmdAssignmentReturned, gmdAssignmentTurnedIn, gmdAutorenew, gmdBackup, gmdBook, gmdBookmark, gmdBookmarkBorder, gmdBugReport, gmdBuild, gmdCached, gmdCameraEnhance, gmdCardGiftcard, gmdCardMembership, gmdCardTravel, gmdChangeHistory, gmdCheckCircle, gmdChromeReaderMode, gmdClass, gmdCode, gmdCreditCard, gmdDashboard, gmdDelete, gmdDescription, gmdDns, gmdDone, gmdDoneAll, gmdEject, gmdEvent, gmdEventSeat, gmdExitToApp, gmdExplore, gmdExtension, gmdFace, gmdFavorite, gmdFavoriteBorder, gmdFeedback, gmdFindInPage, gmdFindReplace, gmdFlightLand, gmdFlightTakeoff, gmdFlipToBack, gmdFlipToFront, gmdGetApp, gmdGif, gmdGrade, gmdGroupWork, gmdHelp, gmdHelpOutline, gmdHighlightOff, gmdHistory, gmdHome, gmdHourglassEmpty, gmdHourglassFull, gmdHttp, gmdHttps, gmdInfo, gmdInfoOutline, gmdInput, gmdInvertColors, gmdLabel, gmdLabelOutline, gmdLanguage, gmdLaunch, gmdList, gmdLock, gmdLockOpen, gmdLockOutline, gmdLoyalty, gmdMarkunreadMailbox, gmdNoteAdd, gmdOfflinePin, gmdOpenInBrowser, gmdOpenInNew, gmdOpenWith, gmdPageview, gmdPayment, gmdPermCameraMic, gmdPermContactCalendar, gmdPermDataSetting, gmdPermDeviceInformation, gmdPermIdentity, gmdPermMedia, gmdPermPhoneMsg, gmdPermScanWifi, gmdPictureInPicture, gmdPlayForWork, gmdPolymer, gmdPowerSettingsNew, gmdPrint, gmdQueryBuilder, gmdQuestionAnswer, gmdReceipt, gmdRedeem, gmdReorder, gmdReportProblem, gmdRestore, gmdRoom, gmdSchedule, gmdSearch, gmdSettings, gmdSettingsApplications, gmdSettingsBackupRestore, gmdSettingsBluetooth, gmdSettingsBrightness, gmdSettingsCell, gmdSettingsEthernet, gmdSettingsInputAntenna, gmdSettingsInputComponent, gmdSettingsInputComposite, gmdSettingsInputHdmi, gmdSettingsInputSvideo, gmdSettingsOverscan, gmdSettingsPhone, gmdSettingsPower, gmdSettingsRemote, gmdSettingsVoice, gmdShop, gmdShopTwo, gmdShoppingBasket, gmdShoppingCart, gmdSpeakerNotes, gmdSpellcheck, gmdStarRate, gmdStars, gmdStore, gmdSubject, gmdSupervisorAccount, gmdSwapHoriz, gmdSwapVert, gmdSwapVerticalCircle, gmdSystemUpdateAlt, gmdTab, gmdTabUnselected, gmdTheaters, gmdThumbDown, gmdThumbUp, gmdThumbsUpDown, gmdToc, gmdToday, gmdToll, gmdTrackChanges, gmdTranslate, gmdTrendingDown, gmdTrendingFlat, gmdTrendingUp, gmdTurnedIn, gmdTurnedInNot, gmdVerifiedUser, gmdViewAgenda, gmdViewArray, gmdViewCarousel, gmdViewColumn, gmdViewDay, gmdViewHeadline, gmdViewList, gmdViewModule, gmdViewQuilt, gmdViewStream, gmdViewWeek, gmdVisibility, gmdVisibilityOff, gmdWork, gmdYoutubeSearchedFor, gmdZoomIn, gmdZoomOut, gmdAddAlert, gmdError, gmdErrorOutline, gmdWarning, gmdAirplay, gmdAlbum, gmdAvTimer, gmdClosedCaption, gmdEqualizer, gmdExplicit, gmdFastForward, gmdFastRewind, gmdForward10, gmdForward30, gmdForward5, gmdGames, gmdHd, gmdHearing, gmdHighQuality, gmdLibraryAdd, gmdLibraryBooks, gmdLibraryMusic, gmdLoop, gmdMic, gmdMicNone, gmdMicOff, gmdMovie, gmdNewReleases, gmdNotInterested, gmdPause, gmdPauseCircleFilled, gmdPauseCircleOutline, gmdPlayArrow, gmdPlayCircleFilled, gmdPlayCircleOutline, gmdPlaylistAdd, gmdQueue, gmdQueueMusic, gmdRadio, gmdRecentActors, gmdRepeat, gmdRepeatOne, gmdReplay, gmdReplay10, gmdReplay30, gmdReplay5, gmdShuffle, gmdSkipNext, gmdSkipPrevious, gmdSnooze, gmdSortByAlpha, gmdStop, gmdSubtitles, gmdSurroundSound, gmdVideoLibrary, gmdVideocam, gmdVideocamOff, gmdVolumeDown, gmdVolumeMute, gmdVolumeOff, gmdVolumeUp, gmdWeb, gmdBusiness, gmdCall, gmdCallEnd, gmdCallMade, gmdCallMerge, gmdCallMissed, gmdCallReceived, gmdCallSplit, gmdChat, gmdChatBubble, gmdChatBubbleOutline, gmdClearAll, gmdComment, gmdContactPhone, gmdContacts, gmdDialerSip, gmdDialpad, gmdEmail, gmdForum, gmdImportExport, gmdInvertColorsOff, gmdLiveHelp, gmdLocationOff, gmdLocationOn, gmdMessage, gmdNoSim, gmdPhone, gmdPhonelinkErase, gmdPhonelinkLock, gmdPhonelinkRing, gmdPhonelinkSetup, gmdPortableWifiOff, gmdPresentToAll, gmdRingVolume, gmdSpeakerPhone, gmdStayCurrentLandscape, gmdStayCurrentPortrait, gmdStayPrimaryLandscape, gmdStayPrimaryPortrait, gmdSwapCalls, gmdTextsms, gmdVoicemail, gmdVpnKey, gmdAdd, gmdAddBox, gmdAddCircle, gmdAddCircleOutline, gmdArchive, gmdBackspace, gmdBlock, gmdClear, gmdContentCopy, gmdContentCut, gmdContentPaste, gmdCreate, gmdDrafts, gmdFilterList, gmdFlag, gmdFontDownload, gmdForward, gmdGesture, gmdInbox, gmdLink, gmdMail, gmdMarkunread, gmdRedo, gmdRemove, gmdRemoveCircle, gmdRemoveCircleOutline, gmdReply, gmdReplyAll, gmdReport, gmdSave, gmdSelectAll, gmdSend, gmdSort, gmdTextFormat, gmdUndo, gmdAccessAlarm, gmdAccessAlarms, gmdAccessTime, gmdAddAlarm, gmdAirplanemodeActive, gmdAirplanemodeInactive, gmdBatteryAlert, gmdBatteryChargingFull, gmdBatteryFull, gmdBatteryStd, gmdBatteryUnknown, gmdBluetooth, gmdBluetoothConnected, gmdBluetoothDisabled, gmdBluetoothSearching, gmdBrightnessAuto, gmdBrightnessHigh, gmdBrightnessLow, gmdBrightnessMedium, gmdDataUsage, gmdDeveloperMode, gmdDevices, gmdDvr, gmdGpsFixed, gmdGpsNotFixed, gmdGpsOff, gmdGraphicEq, gmdLocationDisabled, gmdLocationSearching, gmdNetworkCell, gmdNetworkWifi, gmdNfc, gmdScreenLockLandscape, gmdScreenLockPortrait, gmdScreenLockRotation, gmdScreenRotation, gmdSdStorage, gmdSettingsSystemDaydream, gmdSignalCellular4Bar, gmdSignalCellularConnectedNoInternet4Bar, gmdSignalCellularNoSim, gmdSignalCellularNull, gmdSignalCellularOff, gmdSignalWifi4Bar, gmdSignalWifi4BarLock, gmdSignalWifiOff, gmdStorage, gmdUsb, gmdWallpaper, gmdWidgets, gmdWifiLock, gmdWifiTethering, gmdAttachFile, gmdAttachMoney, gmdBorderAll, gmdBorderBottom, gmdBorderClear, gmdBorderColor, gmdBorderHorizontal, gmdBorderInner, gmdBorderLeft, gmdBorderOuter, gmdBorderRight, gmdBorderStyle, gmdBorderTop, gmdBorderVertical, gmdFormatAlignCenter, gmdFormatAlignJustify, gmdFormatAlignLeft, gmdFormatAlignRight, gmdFormatBold, gmdFormatClear, gmdFormatColorFill, gmdFormatColorReset, gmdFormatColorText, gmdFormatIndentDecrease, gmdFormatIndentIncrease, gmdFormatItalic, gmdFormatLineSpacing, gmdFormatListBulleted, gmdFormatListNumbered, gmdFormatPaint, gmdFormatQuote, gmdFormatSize, gmdFormatStrikethrough, gmdFormatTextdirectionLToR, gmdFormatTextdirectionRToL, gmdFormatUnderlined, gmdFunctions, gmdInsertChart, gmdInsertComment, gmdInsertDriveFile, gmdInsertEmoticon, gmdInsertInvitation, gmdInsertLink, gmdInsertPhoto, gmdMergeType, gmdModeComment, gmdModeEdit, gmdMoneyOff, gmdPublish, gmdSpaceBar, gmdStrikethroughS, gmdVerticalAlignBottom, gmdVerticalAlignCenter, gmdVerticalAlignTop, gmdWrapText, gmdAttachment, gmdCloud, gmdCloudCircle, gmdCloudDone, gmdCloudDownload, gmdCloudOff, gmdCloudQueue, gmdCloudUpload, gmdFileDownload, gmdFileUpload, gmdFolder, gmdFolderOpen, gmdFolderShared, gmdCast, gmdCastConnected, gmdComputer, gmdDesktopMac, gmdDesktopWindows, gmdDeveloperBoard, gmdDeviceHub, gmdDock, gmdGamepad, gmdHeadset, gmdHeadsetMic, gmdKeyboard, gmdKeyboardArrowDown, gmdKeyboardArrowLeft, gmdKeyboardArrowRight, gmdKeyboardArrowUp, gmdKeyboardBackspace, gmdKeyboardCapslock, gmdKeyboardHide, gmdKeyboardReturn, gmdKeyboardTab, gmdKeyboardVoice, gmdLaptop, gmdLaptopChromebook, gmdLaptopMac, gmdLaptopWindows, gmdMemory, gmdMouse, gmdPhoneAndroid, gmdPhoneIphone, gmdPhonelink, gmdPhonelinkOff, gmdPowerInput, gmdRouter, gmdScanner, gmdSecurity, gmdSimCard, gmdSmartphone, gmdSpeaker, gmdSpeakerGroup, gmdTablet, gmdTabletAndroid, gmdTabletMac, gmdToys, gmdTv, gmdWatch, gmdAddToPhotos, gmdAdjust, gmdAssistant, gmdAssistantPhoto, gmdAudiotrack, gmdBlurCircular, gmdBlurLinear, gmdBlurOff, gmdBlurOn, gmdBrightness1, gmdBrightness2, gmdBrightness3, gmdBrightness4, gmdBrightness5, gmdBrightness6, gmdBrightness7, gmdBrokenImage, gmdBrush, gmdCamera, gmdCameraAlt, gmdCameraFront, gmdCameraRear, gmdCameraRoll, gmdCenterFocusStrong, gmdCenterFocusWeak, gmdCollections, gmdCollectionsBookmark, gmdColorLens, gmdColorize, gmdCompare, gmdControlPoint, gmdControlPointDuplicate, gmdCrop, gmdCrop169, gmdCrop32, gmdCrop54, gmdCrop75, gmdCropDin, gmdCropFree, gmdCropLandscape, gmdCropOriginal, gmdCropPortrait, gmdCropSquare, gmdDehaze, gmdDetails, gmdEdit, gmdExposure, gmdExposureNeg1, gmdExposureNeg2, gmdExposurePlus1, gmdExposurePlus2, gmdExposureZero, gmdFilter, gmdFilter1, gmdFilter2, gmdFilter3, gmdFilter4, gmdFilter5, gmdFilter6, gmdFilter7, gmdFilter8, gmdFilter9, gmdFilter9Plus, gmdFilterBAndW, gmdFilterCenterFocus, gmdFilterDrama, gmdFilterFrames, gmdFilterHdr, gmdFilterNone, gmdFilterTiltShift, gmdFilterVintage, gmdFlare, gmdFlashAuto, gmdFlashOff, gmdFlashOn, gmdFlip, gmdGradient, gmdGrain, gmdGridOff, gmdGridOn, gmdHdrOff, gmdHdrOn, gmdHdrStrong, gmdHdrWeak, gmdHealing, gmdImage, gmdImageAspectRatio, gmdIso, gmdLandscape, gmdLeakAdd, gmdLeakRemove, gmdLens, gmdLooks, gmdLooks3, gmdLooks4, gmdLooks5, gmdLooks6, gmdLooksOne, gmdLooksTwo, gmdLoupe, gmdMonochromePhotos, gmdMovieCreation, gmdMusicNote, gmdNature, gmdNaturePeople, gmdNavigateBefore, gmdNavigateNext, gmdPalette, gmdPanorama, gmdPanoramaFishEye, gmdPanoramaHorizontal, gmdPanoramaVertical, gmdPanoramaWideAngle, gmdPhoto, gmdPhotoAlbum, gmdPhotoCamera, gmdPhotoLibrary, gmdPhotoSizeSelectActual, gmdPhotoSizeSelectLarge, gmdPhotoSizeSelectSmall, gmdPictureAsPdf, gmdPortrait, gmdRemoveRedEye, gmdRotate90DegreesCcw, gmdRotateLeft, gmdRotateRight, gmdSlideshow, gmdStraighten, gmdStyle, gmdSwitchCamera, gmdSwitchVideo, gmdTagFaces, gmdTexture, gmdTimelapse, gmdTimer, gmdTimer10, gmdTimer3, gmdTimerOff, gmdTonality, gmdTransform, gmdTune, gmdViewComfy, gmdViewCompact, gmdVignette, gmdWbAuto, gmdWbCloudy, gmdWbIncandescent, gmdWbIridescent, gmdWbSunny, gmdBeenhere, gmdDirections, gmdDirectionsBike, gmdDirectionsBoat, gmdDirectionsBus, gmdDirectionsCar, gmdDirectionsRailway, gmdDirectionsRun, gmdDirectionsSubway, gmdDirectionsTransit, gmdDirectionsWalk, gmdFlight, gmdHotel, gmdLayers, gmdLayersClear, gmdLocalActivity, gmdLocalAirport, gmdLocalAtm, gmdLocalBar, gmdLocalCafe, gmdLocalCarWash, gmdLocalConvenienceStore, gmdLocalDining, gmdLocalDrink, gmdLocalFlorist, gmdLocalGasStation, gmdLocalGroceryStore, gmdLocalHospital, gmdLocalHotel, gmdLocalLaundryService, gmdLocalLibrary, gmdLocalMall, gmdLocalMovies, gmdLocalOffer, gmdLocalParking, gmdLocalPharmacy, gmdLocalPhone, gmdLocalPizza, gmdLocalPlay, gmdLocalPostOffice, gmdLocalPrintshop, gmdLocalSee, gmdLocalShipping, gmdLocalTaxi, gmdMap, gmdMyLocation, gmdNavigation, gmdPersonPin, gmdPinDrop, gmdPlace, gmdRateReview, gmdRestaurantMenu, gmdSatellite, gmdStoreMallDirectory, gmdTerrain, gmdTraffic, gmdApps, gmdArrowBack, gmdArrowDropDown, gmdArrowDropDownCircle, gmdArrowDropUp, gmdArrowForward, gmdCancel, gmdCheck, gmdChevronLeft, gmdChevronRight, gmdClose, gmdExpandLess, gmdExpandMore, gmdFullscreen, gmdFullscreenExit, gmdMenu, gmdMoreHoriz, gmdMoreVert, gmdRefresh, gmdAdb, gmdAirlineSeatFlat, gmdAirlineSeatFlatAngled, gmdAirlineSeatIndividualSuite, gmdAirlineSeatLegroomExtra, gmdAirlineSeatLegroomNormal, gmdAirlineSeatLegroomReduced, gmdAirlineSeatReclineExtra, gmdAirlineSeatReclineNormal, gmdBluetoothAudio, gmdConfirmationNumber, gmdDiscFull, gmdDoNotDisturb, gmdDoNotDisturbAlt, gmdDriveEta, gmdEventAvailable, gmdEventBusy, gmdEventNote, gmdFolderSpecial, gmdLiveTv, gmdMms, gmdMore, gmdNetworkLocked, gmdOndemandVideo, gmdPersonalVideo, gmdPhoneBluetoothSpeaker, gmdPhoneForwarded, gmdPhoneInTalk, gmdPhoneLocked, gmdPhoneMissed, gmdPhonePaused, gmdPower, gmdSdCard, gmdSimCardAlert, gmdSms, gmdSmsFailed, gmdSync, gmdSyncDisabled, gmdSyncProblem, gmdSystemUpdate, gmdTapAndPlay, gmdTimeToLeave, gmdVibration, gmdVoiceChat, gmdVpnLock, gmdWc, gmdWifi, gmdCake, gmdDomain, gmdGroup, gmdGroupAdd, gmdLocationCity, gmdMood, gmdMoodBad, gmdNotifications, gmdNotificationsActive, gmdNotificationsNone, gmdNotificationsOff, gmdNotificationsPaused, gmdPages, gmdPartyMode, gmdPeople, gmdPeopleOutline, gmdPerson, gmdPersonAdd, gmdPersonOutline, gmdPlusOne, gmdPoll, gmdPublic, gmdSchool, gmdShare, gmdWhatshot, gmdCheckBox, gmdCheckBoxOutlineBlank, gmdIndeterminateCheckBox, gmdRadioButtonChecked, gmdRadioButtonUnchecked, gmdStar, gmdStarBorder, gmdStarHalf + static func showAll() { + for item in GMDType.cases() { + let number = item.text!.utf16.first! + let hex = String(format:"%02X", number) + print("case \(item) = 0x\(hex),") + } + } + } -private let GMDIcons = ["\u{e84d}", "\u{e84e}", "\u{e84f}", "\u{e850}", "\u{e851}", "\u{e853}", "\u{e854}", "\u{e855}", "\u{e856}", "\u{e857}", "\u{e858}", "\u{e859}", "\u{e85a}", "\u{e85b}", "\u{e85c}", "\u{e85d}", "\u{e85e}", "\u{e85f}", "\u{e860}", "\u{e861}", "\u{e862}", "\u{e863}", "\u{e864}", "\u{e865}", "\u{e866}", "\u{e867}", "\u{e868}", "\u{e869}", "\u{e86a}", "\u{e8fc}", "\u{e8f6}", "\u{e8f7}", "\u{e8f8}", "\u{e86b}", "\u{e86c}", "\u{e86d}", "\u{e86e}", "\u{e86f}", "\u{e870}", "\u{e871}", "\u{e872}", "\u{e873}", "\u{e875}", "\u{e876}", "\u{e877}", "\u{e8fb}", "\u{e878}", "\u{e903}", "\u{e879}", "\u{e87a}", "\u{e87b}", "\u{e87c}", "\u{e87d}", "\u{e87e}", "\u{e87f}", "\u{e880}", "\u{e881}", "\u{e904}", "\u{e905}", "\u{e882}", "\u{e883}", "\u{e884}", "\u{e908}", "\u{e885}", "\u{e886}", "\u{e887}", "\u{e8fd}", "\u{e888}", "\u{e889}", "\u{e88a}", "\u{e88b}", "\u{e88c}", "\u{e902}", "\u{e88d}", "\u{e88e}", "\u{e88f}", "\u{e890}", "\u{e891}", "\u{e892}", "\u{e893}", "\u{e894}", "\u{e895}", "\u{e896}", "\u{e897}", "\u{e898}", "\u{e899}", "\u{e89a}", "\u{e89b}", "\u{e89c}", "\u{e90a}", "\u{e89d}", "\u{e89e}", "\u{e89f}", "\u{e8a0}", "\u{e8a1}", "\u{e8a2}", "\u{e8a3}", "\u{e8a4}", "\u{e8a5}", "\u{e8a6}", "\u{e8a7}", "\u{e8a8}", "\u{e8a9}", "\u{e8aa}", "\u{e906}", "\u{e8ab}", "\u{e8ac}", "\u{e8ad}", "\u{e8ae}", "\u{e8af}", "\u{e8b0}", "\u{e8b1}", "\u{e8fe}", "\u{e8b2}", "\u{e8b3}", "\u{e8b4}", "\u{e8b5}", "\u{e8b6}", "\u{e8b8}", "\u{e8b9}", "\u{e8ba}", "\u{e8bb}", "\u{e8bd}", "\u{e8bc}", "\u{e8be}", "\u{e8bf}", "\u{e8c0}", "\u{e8c1}", "\u{e8c2}", "\u{e8c3}", "\u{e8c4}", "\u{e8c5}", "\u{e8c6}", "\u{e8c7}", "\u{e8c8}", "\u{e8c9}", "\u{e8ca}", "\u{e8cb}", "\u{e8cc}", "\u{e8cd}", "\u{e8ce}", "\u{e8cf}", "\u{e8d0}", "\u{e8d1}", "\u{e8d2}", "\u{e8d3}", "\u{e8d4}", "\u{e8d5}", "\u{e8d6}", "\u{e8d7}", "\u{e8d8}", "\u{e8d9}", "\u{e8da}", "\u{e8db}", "\u{e8dc}", "\u{e8dd}", "\u{e8de}", "\u{e8df}", "\u{e8e0}", "\u{e8e1}", "\u{e8e2}", "\u{e8e3}", "\u{e8e4}", "\u{e8e5}", "\u{e8e6}", "\u{e8e7}", "\u{e8e8}", "\u{e8e9}", "\u{e8ea}", "\u{e8eb}", "\u{e8ec}", "\u{e8ed}", "\u{e8ee}", "\u{e8ef}", "\u{e8f0}", "\u{e8f1}", "\u{e8f2}", "\u{e8f3}", "\u{e8f4}", "\u{e8f5}", "\u{e8f9}", "\u{e8fa}", "\u{e8ff}", "\u{e900}", "\u{e003}", "\u{e000}", "\u{e001}", "\u{e002}", "\u{e055}", "\u{e019}", "\u{e01b}", "\u{e01c}", "\u{e01d}", "\u{e01e}", "\u{e01f}", "\u{e020}", "\u{e056}", "\u{e057}", "\u{e058}", "\u{e021}", "\u{e052}", "\u{e023}", "\u{e024}", "\u{e02e}", "\u{e02f}", "\u{e030}", "\u{e028}", "\u{e029}", "\u{e02a}", "\u{e02b}", "\u{e02c}", "\u{e031}", "\u{e033}", "\u{e034}", "\u{e035}", "\u{e036}", "\u{e037}", "\u{e038}", "\u{e039}", "\u{e03b}", "\u{e03c}", "\u{e03d}", "\u{e03e}", "\u{e03f}", "\u{e040}", "\u{e041}", "\u{e042}", "\u{e059}", "\u{e05a}", "\u{e05b}", "\u{e043}", "\u{e044}", "\u{e045}", "\u{e046}", "\u{e053}", "\u{e047}", "\u{e048}", "\u{e049}", "\u{e04a}", "\u{e04b}", "\u{e04c}", "\u{e04d}", "\u{e04e}", "\u{e04f}", "\u{e050}", "\u{e051}", "\u{e0af}", "\u{e0b0}", "\u{e0b1}", "\u{e0b2}", "\u{e0b3}", "\u{e0b4}", "\u{e0b5}", "\u{e0b6}", "\u{e0b7}", "\u{e0ca}", "\u{e0cb}", "\u{e0b8}", "\u{e0b9}", "\u{e0cf}", "\u{e0ba}", "\u{e0bb}", "\u{e0bc}", "\u{e0be}", "\u{e0bf}", "\u{e0c3}", "\u{e0c4}", "\u{e0c6}", "\u{e0c7}", "\u{e0c8}", "\u{e0c9}", "\u{e0cc}", "\u{e0cd}", "\u{e0db}", "\u{e0dc}", "\u{e0dd}", "\u{e0de}", "\u{e0ce}", "\u{e0df}", "\u{e0d1}", "\u{e0d2}", "\u{e0d3}", "\u{e0d4}", "\u{e0d5}", "\u{e0d6}", "\u{e0d7}", "\u{e0d8}", "\u{e0d9}", "\u{e0da}", "\u{e145}", "\u{e146}", "\u{e147}", "\u{e148}", "\u{e149}", "\u{e14a}", "\u{e14b}", "\u{e14c}", "\u{e14d}", "\u{e14e}", "\u{e14f}", "\u{e150}", "\u{e151}", "\u{e152}", "\u{e153}", "\u{e167}", "\u{e154}", "\u{e155}", "\u{e156}", "\u{e157}", "\u{e158}", "\u{e159}", "\u{e15a}", "\u{e15b}", "\u{e15c}", "\u{e15d}", "\u{e15e}", "\u{e15f}", "\u{e160}", "\u{e161}", "\u{e162}", "\u{e163}", "\u{e164}", "\u{e165}", "\u{e166}", "\u{e190}", "\u{e191}", "\u{e192}", "\u{e193}", "\u{e195}", "\u{e194}", "\u{e19c}", "\u{e1a3}", "\u{e1a4}", "\u{e1a5}", "\u{e1a6}", "\u{e1a7}", "\u{e1a8}", "\u{e1a9}", "\u{e1aa}", "\u{e1ab}", "\u{e1ac}", "\u{e1ad}", "\u{e1ae}", "\u{e1af}", "\u{e1b0}", "\u{e1b1}", "\u{e1b2}", "\u{e1b3}", "\u{e1b4}", "\u{e1b5}", "\u{e1b8}", "\u{e1b6}", "\u{e1b7}", "\u{e1b9}", "\u{e1ba}", "\u{e1bb}", "\u{e1be}", "\u{e1bf}", "\u{e1c0}", "\u{e1c1}", "\u{e1c2}", "\u{e1c3}", "\u{e1c8}", "\u{e1cd}", "\u{e1ce}", "\u{e1cf}", "\u{e1d0}", "\u{e1d8}", "\u{e1d9}", "\u{e1da}", "\u{e1db}", "\u{e1e0}", "\u{e1bc}", "\u{e1bd}", "\u{e1e1}", "\u{e1e2}", "\u{e226}", "\u{e227}", "\u{e228}", "\u{e229}", "\u{e22a}", "\u{e22b}", "\u{e22c}", "\u{e22d}", "\u{e22e}", "\u{e22f}", "\u{e230}", "\u{e231}", "\u{e232}", "\u{e233}", "\u{e234}", "\u{e235}", "\u{e236}", "\u{e237}", "\u{e238}", "\u{e239}", "\u{e23a}", "\u{e23b}", "\u{e23c}", "\u{e23d}", "\u{e23e}", "\u{e23f}", "\u{e240}", "\u{e241}", "\u{e242}", "\u{e243}", "\u{e244}", "\u{e245}", "\u{e246}", "\u{e247}", "\u{e248}", "\u{e249}", "\u{e24a}", "\u{e24b}", "\u{e24c}", "\u{e24d}", "\u{e24e}", "\u{e24f}", "\u{e250}", "\u{e251}", "\u{e252}", "\u{e253}", "\u{e254}", "\u{e25c}", "\u{e255}", "\u{e256}", "\u{e257}", "\u{e258}", "\u{e259}", "\u{e25a}", "\u{e25b}", "\u{e2bc}", "\u{e2bd}", "\u{e2be}", "\u{e2bf}", "\u{e2c0}", "\u{e2c1}", "\u{e2c2}", "\u{e2c3}", "\u{e2c4}", "\u{e2c6}", "\u{e2c7}", "\u{e2c8}", "\u{e2c9}", "\u{e307}", "\u{e308}", "\u{e30a}", "\u{e30b}", "\u{e30c}", "\u{e30d}", "\u{e335}", "\u{e30e}", "\u{e30f}", "\u{e310}", "\u{e311}", "\u{e312}", "\u{e313}", "\u{e314}", "\u{e315}", "\u{e316}", "\u{e317}", "\u{e318}", "\u{e31a}", "\u{e31b}", "\u{e31c}", "\u{e31d}", "\u{e31e}", "\u{e31f}", "\u{e320}", "\u{e321}", "\u{e322}", "\u{e323}", "\u{e324}", "\u{e325}", "\u{e326}", "\u{e327}", "\u{e336}", "\u{e328}", "\u{e329}", "\u{e32a}", "\u{e32b}", "\u{e32c}", "\u{e32d}", "\u{e32e}", "\u{e32f}", "\u{e330}", "\u{e331}", "\u{e332}", "\u{e333}", "\u{e334}", "\u{e39d}", "\u{e39e}", "\u{e39f}", "\u{e3a0}", "\u{e3a1}", "\u{e3a2}", "\u{e3a3}", "\u{e3a4}", "\u{e3a5}", "\u{e3a6}", "\u{e3a7}", "\u{e3a8}", "\u{e3a9}", "\u{e3aa}", "\u{e3ab}", "\u{e3ac}", "\u{e3ad}", "\u{e3ae}", "\u{e3af}", "\u{e3b0}", "\u{e3b1}", "\u{e3b2}", "\u{e3b3}", "\u{e3b4}", "\u{e3b5}", "\u{e3b6}", "\u{e431}", "\u{e3b7}", "\u{e3b8}", "\u{e3b9}", "\u{e3ba}", "\u{e3bb}", "\u{e3be}", "\u{e3bc}", "\u{e3bd}", "\u{e3bf}", "\u{e3c0}", "\u{e3c1}", "\u{e3c2}", "\u{e3c3}", "\u{e3c4}", "\u{e3c5}", "\u{e3c6}", "\u{e3c7}", "\u{e3c8}", "\u{e3c9}", "\u{e3ca}", "\u{e3cb}", "\u{e3cc}", "\u{e3cd}", "\u{e3ce}", "\u{e3cf}", "\u{e3d3}", "\u{e3d0}", "\u{e3d1}", "\u{e3d2}", "\u{e3d4}", "\u{e3d5}", "\u{e3d6}", "\u{e3d7}", "\u{e3d8}", "\u{e3d9}", "\u{e3da}", "\u{e3db}", "\u{e3dc}", "\u{e3dd}", "\u{e3de}", "\u{e3df}", "\u{e3e0}", "\u{e3e2}", "\u{e3e3}", "\u{e3e4}", "\u{e3e5}", "\u{e3e6}", "\u{e3e7}", "\u{e3e8}", "\u{e3e9}", "\u{e3ea}", "\u{e3eb}", "\u{e3ec}", "\u{e3ed}", "\u{e3ee}", "\u{e3f1}", "\u{e3f2}", "\u{e3f3}", "\u{e3f4}", "\u{e3f5}", "\u{e3f6}", "\u{e3f7}", "\u{e3f8}", "\u{e3f9}", "\u{e3fa}", "\u{e3fc}", "\u{e3fb}", "\u{e3fd}", "\u{e3fe}", "\u{e3ff}", "\u{e400}", "\u{e401}", "\u{e402}", "\u{e403}", "\u{e404}", "\u{e405}", "\u{e406}", "\u{e407}", "\u{e408}", "\u{e409}", "\u{e40a}", "\u{e40b}", "\u{e40c}", "\u{e40d}", "\u{e40e}", "\u{e40f}", "\u{e410}", "\u{e411}", "\u{e412}", "\u{e413}", "\u{e432}", "\u{e433}", "\u{e434}", "\u{e415}", "\u{e416}", "\u{e417}", "\u{e418}", "\u{e419}", "\u{e41a}", "\u{e41b}", "\u{e41c}", "\u{e41d}", "\u{e41e}", "\u{e41f}", "\u{e420}", "\u{e421}", "\u{e422}", "\u{e425}", "\u{e423}", "\u{e424}", "\u{e426}", "\u{e427}", "\u{e428}", "\u{e429}", "\u{e42a}", "\u{e42b}", "\u{e435}", "\u{e42c}", "\u{e42d}", "\u{e42e}", "\u{e436}", "\u{e430}", "\u{e52d}", "\u{e52e}", "\u{e52f}", "\u{e532}", "\u{e530}", "\u{e531}", "\u{e534}", "\u{e566}", "\u{e533}", "\u{e535}", "\u{e536}", "\u{e539}", "\u{e53a}", "\u{e53b}", "\u{e53c}", "\u{e53f}", "\u{e53d}", "\u{e53e}", "\u{e540}", "\u{e541}", "\u{e542}", "\u{e543}", "\u{e556}", "\u{e544}", "\u{e545}", "\u{e546}", "\u{e547}", "\u{e548}", "\u{e549}", "\u{e54a}", "\u{e54b}", "\u{e54c}", "\u{e54d}", "\u{e54e}", "\u{e54f}", "\u{e550}", "\u{e551}", "\u{e552}", "\u{e553}", "\u{e554}", "\u{e555}", "\u{e557}", "\u{e558}", "\u{e559}", "\u{e55b}", "\u{e55c}", "\u{e55d}", "\u{e55a}", "\u{e55e}", "\u{e55f}", "\u{e560}", "\u{e561}", "\u{e562}", "\u{e563}", "\u{e564}", "\u{e565}", "\u{e5c3}", "\u{e5c4}", "\u{e5c5}", "\u{e5c6}", "\u{e5c7}", "\u{e5c8}", "\u{e5c9}", "\u{e5ca}", "\u{e5cb}", "\u{e5cc}", "\u{e5cd}", "\u{e5ce}", "\u{e5cf}", "\u{e5d0}", "\u{e5d1}", "\u{e5d2}", "\u{e5d3}", "\u{e5d4}", "\u{e5d5}", "\u{e60e}", "\u{e630}", "\u{e631}", "\u{e632}", "\u{e633}", "\u{e634}", "\u{e635}", "\u{e636}", "\u{e637}", "\u{e60f}", "\u{e638}", "\u{e610}", "\u{e612}", "\u{e611}", "\u{e613}", "\u{e614}", "\u{e615}", "\u{e616}", "\u{e617}", "\u{e639}", "\u{e618}", "\u{e619}", "\u{e61a}", "\u{e63a}", "\u{e63b}", "\u{e61b}", "\u{e61c}", "\u{e61d}", "\u{e61e}", "\u{e61f}", "\u{e620}", "\u{e63c}", "\u{e623}", "\u{e624}", "\u{e625}", "\u{e626}", "\u{e627}", "\u{e628}", "\u{e629}", "\u{e62a}", "\u{e62b}", "\u{e62c}", "\u{e62d}", "\u{e62e}", "\u{e62f}", "\u{e63d}", "\u{e63e}", "\u{e7e9}", "\u{e7ee}", "\u{e7ef}", "\u{e7f0}", "\u{e7f1}", "\u{e7f2}", "\u{e7f3}", "\u{e7f4}", "\u{e7f7}", "\u{e7f5}", "\u{e7f6}", "\u{e7f8}", "\u{e7f9}", "\u{e7fa}", "\u{e7fb}", "\u{e7fc}", "\u{e7fd}", "\u{e7fe}", "\u{e7ff}", "\u{e800}", "\u{e801}", "\u{e80b}", "\u{e80c}", "\u{e80d}", "\u{e80e}", "\u{e834}", "\u{e835}", "\u{e909}", "\u{e837}", "\u{e836}", "\u{e838}", "\u{e83a}", "\u{e839}"] From c9abefaf96626ee86afc60b09458abb516e36bd1 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Fri, 24 Aug 2018 17:45:39 +0100 Subject: [PATCH 08/25] Update ttf file again --- Source/GMDIcons.ttf | Bin 142176 -> 162704 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Source/GMDIcons.ttf b/Source/GMDIcons.ttf index bc92153a36adeac292d4447a96fe148a1b937c64..d7a20d7f547de66fe819e4872370e247ba392b83 100644 GIT binary patch delta 42551 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 Date: Fri, 24 Aug 2018 17:46:16 +0100 Subject: [PATCH 09/25] List all known icon names - though commented out where I haven't hunted down the codepoints --- Source/GMDIcon.swift | 302 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 275 insertions(+), 27 deletions(-) diff --git a/Source/GMDIcon.swift b/Source/GMDIcon.swift index 575ef1f..93ba091 100644 --- a/Source/GMDIcon.swift +++ b/Source/GMDIcon.swift @@ -39,12 +39,11 @@ public extension UILabel { } get { - if let text = text { - - if let index = GMDIcons.index(of: text) { - return GMDType(rawValue: index) + + if text?.utf16.count == 1 { + return GMDType(rawValue: Int(text!.utf16.first!)) } - } + return nil } } @@ -79,12 +78,11 @@ public extension UIBarButtonItem { } get { - if let title = title { - - if let index = GMDIcons.index(of: title) { - return GMDType(rawValue: index) + + if title?.utf16.count == 1 { + return GMDType(rawValue: Int(title!.utf16.first!)) } - } + return nil } } @@ -145,10 +143,13 @@ List of all icons in Google Material Design Font */ public enum GMDType: Int, EnumCollection { + //See UpdatingNotes.txt for info on how to add missing glyphs - case gmd3DRotation = 0xE84D + case gmd3dRotation = 0xE84D case gmdAccessibility = 0xE84E case gmdAccessibilityNew = 0xE92C + case gmdAccessible = 0xE914 + case gmdAccessibleForward = 0xE934 case gmdAccountBalance = 0xE84F case gmdAccountBalanceWallet = 0xE850 case gmdAccountBox = 0xE851 @@ -158,8 +159,11 @@ public enum GMDType: Int, EnumCollection { case gmdAlarmAdd = 0xE856 case gmdAlarmOff = 0xE857 case gmdAlarmOn = 0xE858 + case gmdAllInbox = 0xE97F + //case gmdAllOut = 0x case gmdAndroid = 0xE859 case gmdAnnouncement = 0xE85A + case gmdArrowRightAlt = 0xE8E4 case gmdAspectRatio = 0xE85B case gmdAssessment = 0xE85C case gmdAssignment = 0xE85D @@ -173,30 +177,47 @@ public enum GMDType: Int, EnumCollection { case gmdBook = 0xE865 case gmdBookmark = 0xE866 case gmdBookmarkBorder = 0xE867 + case gmdBookmarks = 0xE98B case gmdBugReport = 0xE868 case gmdBuild = 0xE869 case gmdCached = 0xE86A + case gmdCalendarToday = 0xE935 + case gmdCalendarViewDay = 0xE936 case gmdCameraEnhance = 0xE8FC case gmdCardGiftcard = 0xE8F6 case gmdCardMembership = 0xE8F7 case gmdCardTravel = 0xE8F8 case gmdChangeHistory = 0xE86B case gmdCheckCircle = 0xE86C + case gmdCheckCircleOutline = 0xE92D case gmdChromeReaderMode = 0xE86D case gmdClass = 0xE86E case gmdCode = 0xE86F + //case gmdCommute = 0x + case gmdCompareArrows = 0xE915 + case gmdContactSupport = 0xE94C + //case gmdCopyright = 0x case gmdCreditCard = 0xE870 case gmdDashboard = 0xE871 + case gmdDateRange = 0xE916 case gmdDelete = 0xE872 + //case gmdDeleteForever = 0x + //case gmdDeleteOutline = 0x case gmdDescription = 0xE873 case gmdDns = 0xE875 case gmdDone = 0xE876 case gmdDoneAll = 0xE877 + //case gmdDoneOutline = 0x + //case gmdDonutLarge = 0x + //case gmdDonutSmall = 0x + //case gmdDragIndicator = 0x case gmdEject = 0xE8FB + case gmdEuroSymbol = 0xE926 case gmdEvent = 0xE878 case gmdEventSeat = 0xE903 case gmdExitToApp = 0xE879 case gmdExplore = 0xE87A + //case gmdExploreOff = 0x case gmdExtension = 0xE87B case gmdFace = 0xE87C case gmdFavorite = 0xE87D @@ -204,10 +225,13 @@ public enum GMDType: Int, EnumCollection { case gmdFeedback = 0xE87F case gmdFindInPage = 0xE880 case gmdFindReplace = 0xE881 + //case gmdFingerprint = 0x case gmdFlightLand = 0xE904 case gmdFlightTakeoff = 0xE905 case gmdFlipToBack = 0xE882 case gmdFlipToFront = 0xE883 + //case gmdGTranslate = 0x + //case gmdGavel = 0x case gmdGetApp = 0xE884 case gmdGif = 0xE908 case gmdGrade = 0xE885 @@ -217,30 +241,39 @@ public enum GMDType: Int, EnumCollection { case gmdHighlightOff = 0xE888 case gmdHistory = 0xE889 case gmdHome = 0xE88A + //case gmdHorizontalSplit = 0x case gmdHourglassEmpty = 0xE88B case gmdHourglassFull = 0xE88C case gmdHttp = 0xE902 case gmdHttps = 0xE88D + //case gmdImportantDevices = 0x case gmdInfo = 0xE88E - case gmdInfoOutline = 0xE88F case gmdInput = 0xE890 case gmdInvertColors = 0xE891 case gmdLabel = 0xE892 - case gmdLabelOutline = 0xE893 + //case gmdLabelImportant = 0x + //case gmdLabelOff = 0x case gmdLanguage = 0xE894 case gmdLaunch = 0xE895 + //case gmdLineStyle = 0x + //case gmdLineWeight = 0x case gmdList = 0xE896 case gmdLock = 0xE897 case gmdLockOpen = 0xE898 - case gmdLockOutline = 0xE899 case gmdLoyalty = 0xE89A case gmdMarkunreadMailbox = 0xE89B + case gmdMaximize = 0xE930 + case gmdMinimize = 0xE931 + //case gmdMotorcycle = 0x case gmdNoteAdd = 0xE89C + //case gmdOfflineBolt = 0x case gmdOfflinePin = 0xE90A + //case gmdOpacity = 0x case gmdOpenInBrowser = 0xE89D case gmdOpenInNew = 0xE89E case gmdOpenWith = 0xE89F case gmdPageview = 0xE8A0 + //case gmdPanTool = 0x case gmdPayment = 0xE8A1 case gmdPermCameraMic = 0xE8A2 case gmdPermContactCalendar = 0xE8A3 @@ -250,19 +283,28 @@ public enum GMDType: Int, EnumCollection { case gmdPermMedia = 0xE8A7 case gmdPermPhoneMsg = 0xE8A8 case gmdPermScanWifi = 0xE8A9 + //case gmdPets = 0x case gmdPictureInPicture = 0xE8AA + //case gmdPictureInPictureAlt = 0x case gmdPlayForWork = 0xE906 case gmdPolymer = 0xE8AB case gmdPowerSettingsNew = 0xE8AC + //case gmdPregnantWoman = 0x case gmdPrint = 0xE8AD case gmdQueryBuilder = 0xE8AE case gmdQuestionAnswer = 0xE8AF case gmdReceipt = 0xE8B0 + //case gmdRecordVoiceOver = 0x case gmdRedeem = 0xE8B1 + //case gmdRemoveShoppingCart = 0x case gmdReorder = 0xE8FE case gmdReportProblem = 0xE8B2 case gmdRestore = 0xE8B3 + //case gmdRestoreFromTrash = 0x + //case gmdRestorePage = 0x case gmdRoom = 0xE8B4 + //case gmdRoundedCorner = 0x + //case gmdRowing = 0x case gmdSchedule = 0xE8B5 case gmdSearch = 0xE8B6 case gmdSettings = 0xE8B8 @@ -287,33 +329,43 @@ public enum GMDType: Int, EnumCollection { case gmdShoppingBasket = 0xE8CB case gmdShoppingCart = 0xE8CC case gmdSpeakerNotes = 0xE8CD + //case gmdSpeakerNotesOff = 0x case gmdSpellcheck = 0xE8CE case gmdStarRate = 0xE8CF case gmdStars = 0xE8D0 case gmdStore = 0xE8D1 case gmdSubject = 0xE8D2 + //case gmdSupervisedUserCircle = 0x case gmdSupervisorAccount = 0xE8D3 case gmdSwapHoriz = 0xE8D4 + //case gmdSwapHorizontalCircle = 0x case gmdSwapVert = 0xE8D5 case gmdSwapVerticalCircle = 0xE8D6 - case gmdSystemUpdateAlt = 0xE8D7 case gmdTab = 0xE8D8 case gmdTabUnselected = 0xE8D9 + //case gmdTextRotateUp = 0x + //case gmdTextRotateVertical = 0x + //case gmdTextRotationDown = 0x + //case gmdTextRotationNone = 0x case gmdTheaters = 0xE8DA case gmdThumbDown = 0xE8DB case gmdThumbUp = 0xE8DC case gmdThumbsUpDown = 0xE8DD + //case gmdTimeline = 0x case gmdToc = 0xE8DE case gmdToday = 0xE8DF case gmdToll = 0xE8E0 + //case gmdTouchApp = 0x case gmdTrackChanges = 0xE8E1 case gmdTranslate = 0xE8E2 case gmdTrendingDown = 0xE8E3 - case gmdTrendingFlat = 0xE8E4 + //case gmdTrendingFlat = 0x case gmdTrendingUp = 0xE8E5 case gmdTurnedIn = 0xE8E6 case gmdTurnedInNot = 0xE8E7 + //case gmdUpdate = 0x case gmdVerifiedUser = 0xE8E8 + //case gmdVerticalSplit = 0x case gmdViewAgenda = 0xE8E9 case gmdViewArray = 0xE8EA case gmdViewCarousel = 0xE8EB @@ -327,22 +379,40 @@ public enum GMDType: Int, EnumCollection { case gmdViewWeek = 0xE8F3 case gmdVisibility = 0xE8F4 case gmdVisibilityOff = 0xE8F5 + //case gmdVoiceOverOff = 0x + //case gmdWatchLater = 0x case gmdWork = 0xE8F9 + //case gmdWorkOff = 0x + //case gmdWorkOutline = 0x case gmdYoutubeSearchedFor = 0xE8FA case gmdZoomIn = 0xE8FF case gmdZoomOut = 0xE900 case gmdAddAlert = 0xE003 case gmdError = 0xE000 case gmdErrorOutline = 0xE001 + //case gmdNotificationImportant = 0x case gmdWarning = 0xE002 + //case gmd4k = 0x + //case gmdAddToQueue = 0x case gmdAirplay = 0xE055 case gmdAlbum = 0xE019 + //case gmdArtTrack = 0x case gmdAvTimer = 0xE01B + //case gmdBrandingWatermark = 0x + //case gmdCallToAction = 0x case gmdClosedCaption = 0xE01C + //case gmdControlCamera = 0x case gmdEqualizer = 0xE01D case gmdExplicit = 0xE01E case gmdFastForward = 0xE01F case gmdFastRewind = 0xE020 + //case gmdFeaturedPlayList = 0x + //case gmdFeaturedVideo = 0x + //case gmdFiberDvr = 0x + //case gmdFiberManualRecord = 0x + //case gmdFiberNew = 0x + //case gmdFiberPin = 0x + //case gmdFiberSmartRecord = 0x case gmdForward10 = 0xE056 case gmdForward30 = 0xE057 case gmdForward5 = 0xE058 @@ -357,20 +427,28 @@ public enum GMDType: Int, EnumCollection { case gmdMic = 0xE029 case gmdMicNone = 0xE02A case gmdMicOff = 0xE02B + //case gmdMissedVideoCall = 0x case gmdMovie = 0xE02C + //case gmdMusicVideo = 0x case gmdNewReleases = 0xE031 case gmdNotInterested = 0xE033 + //case gmdNote = 0x case gmdPause = 0xE034 case gmdPauseCircleFilled = 0xE035 case gmdPauseCircleOutline = 0xE036 case gmdPlayArrow = 0xE037 case gmdPlayCircleFilled = 0xE038 + //case gmdPlayCircleFilledWhite = 0x case gmdPlayCircleOutline = 0xE039 case gmdPlaylistAdd = 0xE03B + //case gmdPlaylistAddCheck = 0x + //case gmdPlaylistPlay = 0x case gmdQueue = 0xE03C case gmdQueueMusic = 0xE03D + //case gmdQueuePlayNext = 0x case gmdRadio = 0xE03E case gmdRecentActors = 0xE03F + //case gmdRemoveFromQueue = 0x case gmdRepeat = 0xE040 case gmdRepeatOne = 0xE041 case gmdReplay = 0xE042 @@ -380,11 +458,15 @@ public enum GMDType: Int, EnumCollection { case gmdShuffle = 0xE043 case gmdSkipNext = 0xE044 case gmdSkipPrevious = 0xE045 + //case gmdSlowMotionVideo = 0x case gmdSnooze = 0xE046 case gmdSortByAlpha = 0xE053 case gmdStop = 0xE047 + //case gmdSubscriptions = 0x case gmdSubtitles = 0xE048 case gmdSurroundSound = 0xE049 + //case gmdVideoCall = 0x + //case gmdVideoLabel = 0x case gmdVideoLibrary = 0xE04A case gmdVideocam = 0xE04B case gmdVideocamOff = 0xE04C @@ -393,32 +475,47 @@ public enum GMDType: Int, EnumCollection { case gmdVolumeOff = 0xE04F case gmdVolumeUp = 0xE050 case gmdWeb = 0xE051 + //case gmdWebAsset = 0x + //case gmdAlternateEmail = 0x case gmdBusiness = 0xE0AF case gmdCall = 0xE0B0 case gmdCallEnd = 0xE0B1 case gmdCallMade = 0xE0B2 case gmdCallMerge = 0xE0B3 case gmdCallMissed = 0xE0B4 + //case gmdCallMissedOutgoing = 0x case gmdCallReceived = 0xE0B5 case gmdCallSplit = 0xE0B6 + //case gmdCancelPresentation = 0x + //case gmdCellWifi = 0x case gmdChat = 0xE0B7 case gmdChatBubble = 0xE0CA case gmdChatBubbleOutline = 0xE0CB case gmdClearAll = 0xE0B8 case gmdComment = 0xE0B9 + //case gmdContactMail = 0x case gmdContactPhone = 0xE0CF case gmdContacts = 0xE0BA + //case gmdDesktopAccessDisabled = 0x case gmdDialerSip = 0xE0BB case gmdDialpad = 0xE0BC + //case gmdDomainDisabled = 0x + //case gmdDuo = 0x case gmdEmail = 0xE0BE case gmdForum = 0xE0BF + //case gmdImportContacts = 0x case gmdImportExport = 0xE0C3 case gmdInvertColorsOff = 0xE0C4 + //case gmdListAlt = 0x case gmdLiveHelp = 0xE0C6 case gmdLocationOff = 0xE0C7 case gmdLocationOn = 0xE0C8 + //case gmdMailOutline = 0x case gmdMessage = 0xE0C9 + //case gmdMobileScreenShare = 0x case gmdNoSim = 0xE0CC + //case gmdPausePresentation = 0x + //case gmdPersonAddDisabled = 0x case gmdPhone = 0xE0CD case gmdPhonelinkErase = 0xE0DB case gmdPhonelinkLock = 0xE0DC @@ -426,14 +523,20 @@ public enum GMDType: Int, EnumCollection { case gmdPhonelinkSetup = 0xE0DE case gmdPortableWifiOff = 0xE0CE case gmdPresentToAll = 0xE0DF + //case gmdPrintDisabled = 0x case gmdRingVolume = 0xE0D1 + //case gmdRssFeed = 0x + //case gmdScreenShare = 0x + //case gmdSentimentSatisfiedAlt = 0x case gmdSpeakerPhone = 0xE0D2 case gmdStayCurrentLandscape = 0xE0D3 case gmdStayCurrentPortrait = 0xE0D4 case gmdStayPrimaryLandscape = 0xE0D5 case gmdStayPrimaryPortrait = 0xE0D6 + //case gmdStopScreenShare = 0x case gmdSwapCalls = 0xE0D7 case gmdTextsms = 0xE0D8 + //case gmdUnsubscribe = 0x case gmdVoicemail = 0xE0D9 case gmdVpnKey = 0xE0DA case gmdAdd = 0xE145 @@ -442,22 +545,29 @@ public enum GMDType: Int, EnumCollection { case gmdAddCircleOutline = 0xE148 case gmdArchive = 0xE149 case gmdBackspace = 0xE14A + //case gmdBallot = 0x case gmdBlock = 0xE14B case gmdClear = 0xE14C - case gmdContentCopy = 0xE14D - case gmdContentCut = 0xE14E - case gmdContentPaste = 0xE14F case gmdCreate = 0xE150 + //case gmdDeleteSweep = 0x case gmdDrafts = 0xE151 + //case gmdFileCopy = 0x case gmdFilterList = 0xE152 case gmdFlag = 0xE153 case gmdFontDownload = 0xE167 case gmdForward = 0xE154 case gmdGesture = 0xE155 + //case gmdHowToReg = 0x + //case gmdHowToVote = 0x case gmdInbox = 0xE156 case gmdLink = 0xE157 + //case gmdLinkOff = 0x + //case gmdLowPriority = 0x case gmdMail = 0xE158 case gmdMarkunread = 0xE159 + //case gmdMoveToInbox = 0x + //case gmdNextWeek = 0x + //case gmdOutlinedFlag = 0x case gmdRedo = 0xE15A case gmdRemove = 0xE15B case gmdRemoveCircle = 0xE15C @@ -465,19 +575,38 @@ public enum GMDType: Int, EnumCollection { case gmdReply = 0xE15E case gmdReplyAll = 0xE15F case gmdReport = 0xE160 + //case gmdReportOff = 0x case gmdSave = 0xE161 + //case gmdSaveAlt = 0x case gmdSelectAll = 0xE162 case gmdSend = 0xE163 case gmdSort = 0xE164 case gmdTextFormat = 0xE165 + //case gmdUnarchive = 0x case gmdUndo = 0xE166 + //case gmdWaves = 0x + //case gmdWeekend = 0x + //case gmdWhereToVote = 0x case gmdAccessAlarm = 0xE190 case gmdAccessAlarms = 0xE191 case gmdAccessTime = 0xE192 case gmdAddAlarm = 0xE193 + //case gmdAddToHomeScreen = 0x case gmdAirplanemodeActive = 0xE195 case gmdAirplanemodeInactive = 0xE194 + //case gmdBattery20 = 0x + //case gmdBattery30 = 0x + //case gmdBattery50 = 0x + //case gmdBattery60 = 0x + //case gmdBattery80 = 0x + //case gmdBattery90 = 0x case gmdBatteryAlert = 0xE19C + //case gmdBatteryCharging20 = 0x + //case gmdBatteryCharging30 = 0x + //case gmdBatteryCharging50 = 0x + //case gmdBatteryCharging60 = 0x + //case gmdBatteryCharging80 = 0x + //case gmdBatteryCharging90 = 0x case gmdBatteryChargingFull = 0xE1A3 case gmdBatteryFull = 0xE1A4 case gmdBatteryStd = 0xE1A5 @@ -500,6 +629,8 @@ public enum GMDType: Int, EnumCollection { case gmdGraphicEq = 0xE1B8 case gmdLocationDisabled = 0xE1B6 case gmdLocationSearching = 0xE1B7 + //case gmdMobileFriendly = 0x + //case gmdMobileOff = 0x case gmdNetworkCell = 0xE1B9 case gmdNetworkWifi = 0xE1BA case gmdNfc = 0xE1BB @@ -509,11 +640,27 @@ public enum GMDType: Int, EnumCollection { case gmdScreenRotation = 0xE1C1 case gmdSdStorage = 0xE1C2 case gmdSettingsSystemDaydream = 0xE1C3 + //case gmdSignalCellular0Bar = 0x + //case gmdSignalCellular1Bar = 0x + //case gmdSignalCellular2Bar = 0x + //case gmdSignalCellular3Bar = 0x case gmdSignalCellular4Bar = 0xE1C8 + //case gmdSignalCellularAlt = 0x + //case gmdSignalCellularConnectedNoInternet0Bar = 0x + //case gmdSignalCellularConnectedNoInternet1Bar = 0x + //case gmdSignalCellularConnectedNoInternet2Bar = 0x + //case gmdSignalCellularConnectedNoInternet3Bar = 0x case gmdSignalCellularConnectedNoInternet4Bar = 0xE1CD case gmdSignalCellularNoSim = 0xE1CE case gmdSignalCellularNull = 0xE1CF case gmdSignalCellularOff = 0xE1D0 + //case gmdSignalWifi0Bar = 0x + //case gmdSignalWifi1Bar = 0x + //case gmdSignalWifi1BarLock = 0x + //case gmdSignalWifi2Bar = 0x + //case gmdSignalWifi2BarLock = 0x + //case gmdSignalWifi3Bar = 0x + //case gmdSignalWifi3BarLock = 0x case gmdSignalWifi4Bar = 0xE1D8 case gmdSignalWifi4BarLock = 0xE1D9 case gmdSignalWifiOff = 0xE1DA @@ -523,8 +670,10 @@ public enum GMDType: Int, EnumCollection { case gmdWidgets = 0xE1BD case gmdWifiLock = 0xE1E1 case gmdWifiTethering = 0xE1E2 + //case gmdAddComment = 0x case gmdAttachFile = 0xE226 case gmdAttachMoney = 0xE227 + //case gmdBarChart = 0x case gmdBorderAll = 0xE228 case gmdBorderBottom = 0xE229 case gmdBorderClear = 0xE22A @@ -537,6 +686,8 @@ public enum GMDType: Int, EnumCollection { case gmdBorderStyle = 0xE231 case gmdBorderTop = 0xE232 case gmdBorderVertical = 0xE233 + //case gmdBubbleChart = 0x + //case gmdDragHandle = 0x case gmdFormatAlignCenter = 0xE234 case gmdFormatAlignJustify = 0xE235 case gmdFormatAlignLeft = 0xE236 @@ -552,28 +703,43 @@ public enum GMDType: Int, EnumCollection { case gmdFormatLineSpacing = 0xE240 case gmdFormatListBulleted = 0xE241 case gmdFormatListNumbered = 0xE242 + //case gmdFormatListNumberedRtl = 0x case gmdFormatPaint = 0xE243 case gmdFormatQuote = 0xE244 + //case gmdFormatShapes = 0x case gmdFormatSize = 0xE245 case gmdFormatStrikethrough = 0xE246 case gmdFormatTextdirectionLToR = 0xE247 case gmdFormatTextdirectionRToL = 0xE248 case gmdFormatUnderlined = 0xE249 case gmdFunctions = 0xE24A + //case gmdHighlight = 0x case gmdInsertChart = 0xE24B + //case gmdInsertChartOutlined = 0x case gmdInsertComment = 0xE24C case gmdInsertDriveFile = 0xE24D case gmdInsertEmoticon = 0xE24E case gmdInsertInvitation = 0xE24F case gmdInsertLink = 0xE250 case gmdInsertPhoto = 0xE251 + //case gmdLinearScale = 0x case gmdMergeType = 0xE252 case gmdModeComment = 0xE253 - case gmdModeEdit = 0xE254 + //case gmdMonetizationOn = 0x case gmdMoneyOff = 0xE25C + //case gmdMultilineChart = 0x + //case gmdNotes = 0x + //case gmdPieChart = 0x case gmdPublish = 0xE255 + //case gmdScatterPlot = 0x + //case gmdScore = 0x + //case gmdShortText = 0x + //case gmdShowChart = 0x case gmdSpaceBar = 0xE256 case gmdStrikethroughS = 0xE257 + //case gmdTableChart = 0x + //case gmdTextFields = 0x + //case gmdTitle = 0x case gmdVerticalAlignBottom = 0xE258 case gmdVerticalAlignCenter = 0xE259 case gmdVerticalAlignTop = 0xE25A @@ -586,18 +752,20 @@ public enum GMDType: Int, EnumCollection { case gmdCloudOff = 0xE2C1 case gmdCloudQueue = 0xE2C2 case gmdCloudUpload = 0xE2C3 - case gmdFileDownload = 0xE2C4 - case gmdFileUpload = 0xE2C6 + //case gmdCreateNewFolder = 0x case gmdFolder = 0xE2C7 case gmdFolderOpen = 0xE2C8 case gmdFolderShared = 0xE2C9 case gmdCast = 0xE307 case gmdCastConnected = 0xE308 + //case gmdCastForEducation = 0x case gmdComputer = 0xE30A case gmdDesktopMac = 0xE30B case gmdDesktopWindows = 0xE30C case gmdDeveloperBoard = 0xE30D case gmdDeviceHub = 0xE335 + //case gmdDeviceUnknown = 0x + //case gmdDevicesOther = 0x case gmdDock = 0xE30E case gmdGamepad = 0xE30F case gmdHeadset = 0xE310 @@ -636,7 +804,10 @@ public enum GMDType: Int, EnumCollection { case gmdTabletMac = 0xE331 case gmdToys = 0xE332 case gmdTv = 0xE333 + //case gmdVideogameAsset = 0x case gmdWatch = 0xE334 + //case gmdAddAPhoto = 0x + //case gmdAddPhotoAlternate = 0x case gmdAddToPhotos = 0xE39D case gmdAdjust = 0xE39E case gmdAssistant = 0xE39F @@ -655,6 +826,7 @@ public enum GMDType: Int, EnumCollection { case gmdBrightness7 = 0xE3AC case gmdBrokenImage = 0xE3AD case gmdBrush = 0xE3AE + //case gmdBurstMode = 0x case gmdCamera = 0xE3AF case gmdCameraAlt = 0xE3B0 case gmdCameraFront = 0xE3B1 @@ -679,6 +851,7 @@ public enum GMDType: Int, EnumCollection { case gmdCropLandscape = 0xE3C3 case gmdCropOriginal = 0xE3C4 case gmdCropPortrait = 0xE3C5 + //case gmdCropRotate = 0x case gmdCropSquare = 0xE3C6 case gmdDehaze = 0xE3C7 case gmdDetails = 0xE3C8 @@ -724,11 +897,13 @@ public enum GMDType: Int, EnumCollection { case gmdHealing = 0xE3F3 case gmdImage = 0xE3F4 case gmdImageAspectRatio = 0xE3F5 + //case gmdImageSearch = 0x case gmdIso = 0xE3F6 case gmdLandscape = 0xE3F7 case gmdLeakAdd = 0xE3F8 case gmdLeakRemove = 0xE3F9 case gmdLens = 0xE3FA + //case gmdLinkedCamera = 0x case gmdLooks = 0xE3FC case gmdLooks3 = 0xE3FB case gmdLooks4 = 0xE3FD @@ -739,7 +914,9 @@ public enum GMDType: Int, EnumCollection { case gmdLoupe = 0xE402 case gmdMonochromePhotos = 0xE403 case gmdMovieCreation = 0xE404 + //case gmdMovieFilter = 0x case gmdMusicNote = 0xE405 + //case gmdMusicOff = 0x case gmdNature = 0xE406 case gmdNaturePeople = 0xE407 case gmdNavigateBefore = 0xE408 @@ -753,6 +930,7 @@ public enum GMDType: Int, EnumCollection { case gmdPhoto = 0xE410 case gmdPhotoAlbum = 0xE411 case gmdPhotoCamera = 0xE412 + //case gmdPhotoFilter = 0x case gmdPhotoLibrary = 0xE413 case gmdPhotoSizeSelectActual = 0xE432 case gmdPhotoSizeSelectLarge = 0xE433 @@ -763,6 +941,7 @@ public enum GMDType: Int, EnumCollection { case gmdRotate90DegreesCcw = 0xE418 case gmdRotateLeft = 0xE419 case gmdRotateRight = 0xE41A + //case gmdShutterSpeed = 0x case gmdSlideshow = 0xE41B case gmdStraighten = 0xE41C case gmdStyle = 0xE41D @@ -786,7 +965,13 @@ public enum GMDType: Int, EnumCollection { case gmdWbIncandescent = 0xE42E case gmdWbIridescent = 0xE436 case gmdWbSunny = 0xE430 + //case gmd360 = 0x + //case gmdAddLocation = 0x + //case gmdAtm = 0x case gmdBeenhere = 0xE52D + //case gmdCategory = 0x + //case gmdCompassCalibration = 0x + //case gmdDepartureBoard = 0x case gmdDirections = 0xE52E case gmdDirectionsBike = 0xE52F case gmdDirectionsBoat = 0xE532 @@ -797,6 +982,10 @@ public enum GMDType: Int, EnumCollection { case gmdDirectionsSubway = 0xE533 case gmdDirectionsTransit = 0xE535 case gmdDirectionsWalk = 0xE536 + //case gmdEditAttributes = 0x + //case gmdEditLocation = 0x + //case gmdEvStation = 0x + //case gmdFastfood = 0x case gmdFlight = 0xE539 case gmdHotel = 0xE53A case gmdLayers = 0xE53B @@ -831,23 +1020,42 @@ public enum GMDType: Int, EnumCollection { case gmdLocalShipping = 0xE558 case gmdLocalTaxi = 0xE559 case gmdMap = 0xE55B + //case gmdMoney = 0x case gmdMyLocation = 0xE55C case gmdNavigation = 0xE55D + //case gmdNearMe = 0x + //case gmdNotListedLocation = 0x case gmdPersonPin = 0xE55A + //case gmdPersonPinCircle = 0x case gmdPinDrop = 0xE55E case gmdPlace = 0xE55F case gmdRateReview = 0xE560 + //case gmdRestaurant = 0x case gmdRestaurantMenu = 0xE561 case gmdSatellite = 0xE562 case gmdStoreMallDirectory = 0xE563 + //case gmdStreetview = 0x + //case gmdSubway = 0x case gmdTerrain = 0xE564 case gmdTraffic = 0xE565 + //case gmdTrain = 0x + //case gmdTram = 0x + //case gmdTransferWithinAStation = 0x + //case gmdTransitEnterexit = 0x + //case gmdTripOrigin = 0x + //case gmdZoomOutMap = 0x case gmdApps = 0xE5C3 case gmdArrowBack = 0xE5C4 + //case gmdArrowBackIos = 0x + //case gmdArrowDownward = 0x case gmdArrowDropDown = 0xE5C5 case gmdArrowDropDownCircle = 0xE5C6 case gmdArrowDropUp = 0xE5C7 case gmdArrowForward = 0xE5C8 + //case gmdArrowForwardIos = 0x + //case gmdArrowLeft = 0x + //case gmdArrowRight = 0x + //case gmdArrowUpward = 0x case gmdCancel = 0xE5C9 case gmdCheck = 0xE5CA case gmdChevronLeft = 0xE5CB @@ -855,12 +1063,18 @@ public enum GMDType: Int, EnumCollection { case gmdClose = 0xE5CD case gmdExpandLess = 0xE5CE case gmdExpandMore = 0xE5CF + //case gmdFirstPage = 0x case gmdFullscreen = 0xE5D0 case gmdFullscreenExit = 0xE5D1 + //case gmdLastPage = 0x case gmdMenu = 0xE5D2 case gmdMoreHoriz = 0xE5D3 case gmdMoreVert = 0xE5D4 case gmdRefresh = 0xE5D5 + //case gmdSubdirectoryArrowLeft = 0x + //case gmdSubdirectoryArrowRight = 0x + //case gmdUnfoldLess = 0x + //case gmdUnfoldMore = 0x case gmdAdb = 0xE60E case gmdAirlineSeatFlat = 0xE630 case gmdAirlineSeatFlatAngled = 0xE631 @@ -873,9 +1087,8 @@ public enum GMDType: Int, EnumCollection { case gmdBluetoothAudio = 0xE60F case gmdConfirmationNumber = 0xE638 case gmdDiscFull = 0xE610 - case gmdDoNotDisturb = 0xE612 - case gmdDoNotDisturbAlt = 0xE611 case gmdDriveEta = 0xE613 + //case gmdEnhancedEncryption = 0x case gmdEventAvailable = 0xE614 case gmdEventBusy = 0xE615 case gmdEventNote = 0xE616 @@ -883,18 +1096,22 @@ public enum GMDType: Int, EnumCollection { case gmdLiveTv = 0xE639 case gmdMms = 0xE618 case gmdMore = 0xE619 + //case gmdNetworkCheck = 0x case gmdNetworkLocked = 0xE61A + //case gmdNoEncryption = 0x case gmdOndemandVideo = 0xE63A case gmdPersonalVideo = 0xE63B case gmdPhoneBluetoothSpeaker = 0xE61B + //case gmdPhoneCallback = 0x case gmdPhoneForwarded = 0xE61C case gmdPhoneInTalk = 0xE61D case gmdPhoneLocked = 0xE61E case gmdPhoneMissed = 0xE61F case gmdPhonePaused = 0xE620 case gmdPower = 0xE63C + //case gmdPowerOff = 0x + //case gmdPriorityHigh = 0x case gmdSdCard = 0xE623 - case gmdSimCardAlert = 0xE624 case gmdSms = 0xE625 case gmdSmsFailed = 0xE626 case gmdSync = 0xE627 @@ -903,11 +1120,34 @@ public enum GMDType: Int, EnumCollection { case gmdSystemUpdate = 0xE62A case gmdTapAndPlay = 0xE62B case gmdTimeToLeave = 0xE62C + //case gmdTvOff = 0x case gmdVibration = 0xE62D case gmdVoiceChat = 0xE62E case gmdVpnLock = 0xE62F case gmdWc = 0xE63D case gmdWifi = 0xE63E + //case gmdWifiOff = 0x + //case gmdAcUnit = 0x + //case gmdAirportShuttle = 0x + //case gmdAllInclusive = 0x + //case gmdBeachAccess = 0x + //case gmdBusinessCenter = 0x + //case gmdCasino = 0x + //case gmdChildCare = 0x + //case gmdChildFriendly = 0x + //case gmdFitnessCenter = 0x + //case gmdFreeBreakfast = 0x + //case gmdGolfCourse = 0x + //case gmdHotTub = 0x + //case gmdKitchen = 0x + //case gmdMeetingRoom = 0x + //case gmdNoMeetingRoom = 0x + //case gmdPool = 0x + //case gmdRoomService = 0x + //case gmdRvHookup = 0x + //case gmdSmokeFree = 0x + //case gmdSmokingRooms = 0x + //case gmdSpa = 0x case gmdCake = 0xE7E9 case gmdDomain = 0xE7EE case gmdGroup = 0xE7EF @@ -931,7 +1171,13 @@ public enum GMDType: Int, EnumCollection { case gmdPoll = 0xE801 case gmdPublic = 0xE80B case gmdSchool = 0xE80C + //case gmdSentimentDissatisfied = 0x + //case gmdSentimentSatisfied = 0x + //case gmdSentimentVeryDissatisfied = 0x + //case gmdSentimentVerySatisfied = 0x case gmdShare = 0xE80D + //case gmdThumbDownAlt = 0x + //case gmdThumbUpAlt = 0x case gmdWhatshot = 0xE80E case gmdCheckBox = 0xE834 case gmdCheckBoxOutlineBlank = 0xE835 @@ -941,10 +1187,12 @@ public enum GMDType: Int, EnumCollection { case gmdStar = 0xE838 case gmdStarBorder = 0xE83A case gmdStarHalf = 0xE839 + //case gmdToggleOff = 0x + //case gmdToggleOn = 0x + static var count: Int { - - return GMDIcons.count + return GMDType.allValues.count } public var text: String? { From 308b7109015c65943baef709a0163f61e56037fb Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Fri, 24 Aug 2018 17:46:47 +0100 Subject: [PATCH 10/25] Add notes on updating and create CaseGenerator to semi-automatically update the code names --- Example/GMD Swift.xcodeproj/project.pbxproj | 8 ++++ Example/GMD Swift/AppDelegate.swift | 3 ++ Example/GMD Swift/CaseGenerator.swift | 33 ++++++++++++++++ Example/GMD Swift/UpdatingNotes.txt | 44 +++++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 Example/GMD Swift/CaseGenerator.swift create mode 100644 Example/GMD Swift/UpdatingNotes.txt diff --git a/Example/GMD Swift.xcodeproj/project.pbxproj b/Example/GMD Swift.xcodeproj/project.pbxproj index 70b97e3..5b74790 100644 --- a/Example/GMD Swift.xcodeproj/project.pbxproj +++ b/Example/GMD Swift.xcodeproj/project.pbxproj @@ -15,6 +15,8 @@ 4E19E0241B919D5400825B73 /* IconCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E19E0231B919D5400825B73 /* IconCell.swift */; }; 4E19E0261B91B34800825B73 /* GMDIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E19E0251B91B34800825B73 /* GMDIcon.swift */; }; 4E19E0281B91B35E00825B73 /* GMDIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */; }; + D44CBB23213061BE002741C7 /* UpdatingNotes.txt in Resources */ = {isa = PBXBuildFile; fileRef = D44CBB22213061BE002741C7 /* UpdatingNotes.txt */; }; + D44CBB252130628E002741C7 /* CaseGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44CBB242130628E002741C7 /* CaseGenerator.swift */; }; D4817F7E21304D2D005F9950 /* EnumCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4817F7D21304D2D005F9950 /* EnumCollection.swift */; }; /* End PBXBuildFile section */ @@ -29,6 +31,8 @@ 4E19E0231B919D5400825B73 /* IconCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IconCell.swift; sourceTree = ""; }; 4E19E0251B91B34800825B73 /* GMDIcon.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GMDIcon.swift; sourceTree = ""; }; 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = GMDIcons.ttf; sourceTree = ""; }; + D44CBB22213061BE002741C7 /* UpdatingNotes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = UpdatingNotes.txt; sourceTree = ""; }; + D44CBB242130628E002741C7 /* CaseGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaseGenerator.swift; sourceTree = ""; }; D4817F7D21304D2D005F9950 /* EnumCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumCollection.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -63,6 +67,7 @@ isa = PBXGroup; children = ( 4E19E0221B919C3600825B73 /* Source - Google Material Icons Swift */, + D44CBB242130628E002741C7 /* CaseGenerator.swift */, 4E19E00F1B919AFC00825B73 /* AppDelegate.swift */, D4817F7D21304D2D005F9950 /* EnumCollection.swift */, 4E19E0231B919D5400825B73 /* IconCell.swift */, @@ -71,6 +76,7 @@ 4E19E0161B919AFC00825B73 /* Assets.xcassets */, 4E19E0181B919AFC00825B73 /* LaunchScreen.storyboard */, 4E19E01B1B919AFC00825B73 /* Info.plist */, + D44CBB22213061BE002741C7 /* UpdatingNotes.txt */, ); path = "GMD Swift"; sourceTree = ""; @@ -146,6 +152,7 @@ 4E19E0281B91B35E00825B73 /* GMDIcons.ttf in Resources */, 4E19E01A1B919AFC00825B73 /* LaunchScreen.storyboard in Resources */, 4E19E0171B919AFC00825B73 /* Assets.xcassets in Resources */, + D44CBB23213061BE002741C7 /* UpdatingNotes.txt in Resources */, 4E19E0151B919AFC00825B73 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -160,6 +167,7 @@ 4E19E0121B919AFC00825B73 /* ViewController.swift in Sources */, 4E19E0261B91B34800825B73 /* GMDIcon.swift in Sources */, 4E19E0101B919AFC00825B73 /* AppDelegate.swift in Sources */, + D44CBB252130628E002741C7 /* CaseGenerator.swift in Sources */, D4817F7E21304D2D005F9950 /* EnumCollection.swift in Sources */, 4E19E0241B919D5400825B73 /* IconCell.swift in Sources */, ); diff --git a/Example/GMD Swift/AppDelegate.swift b/Example/GMD Swift/AppDelegate.swift index a361fe5..8c08109 100644 --- a/Example/GMD Swift/AppDelegate.swift +++ b/Example/GMD Swift/AppDelegate.swift @@ -20,6 +20,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { if let font = UIFont(name: "HelveticaNeue-Light", size: 20) { UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.font: font, NSAttributedStringKey.foregroundColor: UIColor.black] } + + CaseGenerator.printNewCases() + return true } diff --git a/Example/GMD Swift/CaseGenerator.swift b/Example/GMD Swift/CaseGenerator.swift new file mode 100644 index 0000000..6928fdf --- /dev/null +++ b/Example/GMD Swift/CaseGenerator.swift @@ -0,0 +1,33 @@ +// +// CaseGenerator.swift +// GMD Swift +// +// Created by Rob Jonson on 24/08/2018. +// Copyright © 2018 Patrik Vaberer. All rights reserved. +// + +import Foundation + +class CaseGenerator { + static func printNewCases() { + for iconName in iconNames { + if let foundCase = caseLookup[iconName] { + let hex = String(format:"%02X", foundCase.rawValue) + print("case \(iconName) = 0x\(hex)") + } + else { + print("//case \(iconName) = 0x") + } + } + } + + static var caseLookup:[String:GMDType] = { + var lookup:[String:GMDType] = [:] + for item in GMDType.allValues { + lookup["\(item)"] = item + } + return lookup + }() + + static let iconNames = ["gmd3dRotation","gmdAccessibility","gmdAccessibilityNew","gmdAccessible","gmdAccessibleForward","gmdAccountBalance","gmdAccountBalanceWallet","gmdAccountBox","gmdAccountCircle","gmdAddShoppingCart","gmdAlarm","gmdAlarmAdd","gmdAlarmOff","gmdAlarmOn","gmdAllInbox","gmdAllOut","gmdAndroid","gmdAnnouncement","gmdArrowRightAlt","gmdAspectRatio","gmdAssessment","gmdAssignment","gmdAssignmentInd","gmdAssignmentLate","gmdAssignmentReturn","gmdAssignmentReturned","gmdAssignmentTurnedIn","gmdAutorenew","gmdBackup","gmdBook","gmdBookmark","gmdBookmarkBorder","gmdBookmarks","gmdBugReport","gmdBuild","gmdCached","gmdCalendarToday","gmdCalendarViewDay","gmdCameraEnhance","gmdCardGiftcard","gmdCardMembership","gmdCardTravel","gmdChangeHistory","gmdCheckCircle","gmdCheckCircleOutline","gmdChromeReaderMode","gmdClass","gmdCode","gmdCommute","gmdCompareArrows","gmdContactSupport","gmdCopyright","gmdCreditCard","gmdDashboard","gmdDateRange","gmdDelete","gmdDeleteForever","gmdDeleteOutline","gmdDescription","gmdDns","gmdDone","gmdDoneAll","gmdDoneOutline","gmdDonutLarge","gmdDonutSmall","gmdDragIndicator","gmdEject","gmdEuroSymbol","gmdEvent","gmdEventSeat","gmdExitToApp","gmdExplore","gmdExploreOff","gmdExtension","gmdFace","gmdFavorite","gmdFavoriteBorder","gmdFeedback","gmdFindInPage","gmdFindReplace","gmdFingerprint","gmdFlightLand","gmdFlightTakeoff","gmdFlipToBack","gmdFlipToFront","gmdGTranslate","gmdGavel","gmdGetApp","gmdGif","gmdGrade","gmdGroupWork","gmdHelp","gmdHelpOutline","gmdHighlightOff","gmdHistory","gmdHome","gmdHorizontalSplit","gmdHourglassEmpty","gmdHourglassFull","gmdHttp","gmdHttps","gmdImportantDevices","gmdInfo","gmdInput","gmdInvertColors","gmdLabel","gmdLabelImportant","gmdLabelOff","gmdLanguage","gmdLaunch","gmdLineStyle","gmdLineWeight","gmdList","gmdLock","gmdLockOpen","gmdLoyalty","gmdMarkunreadMailbox","gmdMaximize","gmdMinimize","gmdMotorcycle","gmdNoteAdd","gmdOfflineBolt","gmdOfflinePin","gmdOpacity","gmdOpenInBrowser","gmdOpenInNew","gmdOpenWith","gmdPageview","gmdPanTool","gmdPayment","gmdPermCameraMic","gmdPermContactCalendar","gmdPermDataSetting","gmdPermDeviceInformation","gmdPermIdentity","gmdPermMedia","gmdPermPhoneMsg","gmdPermScanWifi","gmdPets","gmdPictureInPicture","gmdPictureInPictureAlt","gmdPlayForWork","gmdPolymer","gmdPowerSettingsNew","gmdPregnantWoman","gmdPrint","gmdQueryBuilder","gmdQuestionAnswer","gmdReceipt","gmdRecordVoiceOver","gmdRedeem","gmdRemoveShoppingCart","gmdReorder","gmdReportProblem","gmdRestore","gmdRestoreFromTrash","gmdRestorePage","gmdRoom","gmdRoundedCorner","gmdRowing","gmdSchedule","gmdSearch","gmdSettings","gmdSettingsApplications","gmdSettingsBackupRestore","gmdSettingsBluetooth","gmdSettingsBrightness","gmdSettingsCell","gmdSettingsEthernet","gmdSettingsInputAntenna","gmdSettingsInputComponent","gmdSettingsInputComposite","gmdSettingsInputHdmi","gmdSettingsInputSvideo","gmdSettingsOverscan","gmdSettingsPhone","gmdSettingsPower","gmdSettingsRemote","gmdSettingsVoice","gmdShop","gmdShopTwo","gmdShoppingBasket","gmdShoppingCart","gmdSpeakerNotes","gmdSpeakerNotesOff","gmdSpellcheck","gmdStarRate","gmdStars","gmdStore","gmdSubject","gmdSupervisedUserCircle","gmdSupervisorAccount","gmdSwapHoriz","gmdSwapHorizontalCircle","gmdSwapVert","gmdSwapVerticalCircle","gmdTab","gmdTabUnselected","gmdTextRotateUp","gmdTextRotateVertical","gmdTextRotationDown","gmdTextRotationNone","gmdTheaters","gmdThumbDown","gmdThumbUp","gmdThumbsUpDown","gmdTimeline","gmdToc","gmdToday","gmdToll","gmdTouchApp","gmdTrackChanges","gmdTranslate","gmdTrendingDown","gmdTrendingFlat","gmdTrendingUp","gmdTurnedIn","gmdTurnedInNot","gmdUpdate","gmdVerifiedUser","gmdVerticalSplit","gmdViewAgenda","gmdViewArray","gmdViewCarousel","gmdViewColumn","gmdViewDay","gmdViewHeadline","gmdViewList","gmdViewModule","gmdViewQuilt","gmdViewStream","gmdViewWeek","gmdVisibility","gmdVisibilityOff","gmdVoiceOverOff","gmdWatchLater","gmdWork","gmdWorkOff","gmdWorkOutline","gmdYoutubeSearchedFor","gmdZoomIn","gmdZoomOut","gmdAddAlert","gmdError","gmdErrorOutline","gmdNotificationImportant","gmdWarning","gmd4k","gmdAddToQueue","gmdAirplay","gmdAlbum","gmdArtTrack","gmdAvTimer","gmdBrandingWatermark","gmdCallToAction","gmdClosedCaption","gmdControlCamera","gmdEqualizer","gmdExplicit","gmdFastForward","gmdFastRewind","gmdFeaturedPlayList","gmdFeaturedVideo","gmdFiberDvr","gmdFiberManualRecord","gmdFiberNew","gmdFiberPin","gmdFiberSmartRecord","gmdForward10","gmdForward30","gmdForward5","gmdGames","gmdHd","gmdHearing","gmdHighQuality","gmdLibraryAdd","gmdLibraryBooks","gmdLibraryMusic","gmdLoop","gmdMic","gmdMicNone","gmdMicOff","gmdMissedVideoCall","gmdMovie","gmdMusicVideo","gmdNewReleases","gmdNotInterested","gmdNote","gmdPause","gmdPauseCircleFilled","gmdPauseCircleOutline","gmdPlayArrow","gmdPlayCircleFilled","gmdPlayCircleFilledWhite","gmdPlayCircleOutline","gmdPlaylistAdd","gmdPlaylistAddCheck","gmdPlaylistPlay","gmdQueue","gmdQueueMusic","gmdQueuePlayNext","gmdRadio","gmdRecentActors","gmdRemoveFromQueue","gmdRepeat","gmdRepeatOne","gmdReplay","gmdReplay10","gmdReplay30","gmdReplay5","gmdShuffle","gmdSkipNext","gmdSkipPrevious","gmdSlowMotionVideo","gmdSnooze","gmdSortByAlpha","gmdStop","gmdSubscriptions","gmdSubtitles","gmdSurroundSound","gmdVideoCall","gmdVideoLabel","gmdVideoLibrary","gmdVideocam","gmdVideocamOff","gmdVolumeDown","gmdVolumeMute","gmdVolumeOff","gmdVolumeUp","gmdWeb","gmdWebAsset","gmdAlternateEmail","gmdBusiness","gmdCall","gmdCallEnd","gmdCallMade","gmdCallMerge","gmdCallMissed","gmdCallMissedOutgoing","gmdCallReceived","gmdCallSplit","gmdCancelPresentation","gmdCellWifi","gmdChat","gmdChatBubble","gmdChatBubbleOutline","gmdClearAll","gmdComment","gmdContactMail","gmdContactPhone","gmdContacts","gmdDesktopAccessDisabled","gmdDialerSip","gmdDialpad","gmdDomainDisabled","gmdDuo","gmdEmail","gmdForum","gmdImportContacts","gmdImportExport","gmdInvertColorsOff","gmdListAlt","gmdLiveHelp","gmdLocationOff","gmdLocationOn","gmdMailOutline","gmdMessage","gmdMobileScreenShare","gmdNoSim","gmdPausePresentation","gmdPersonAddDisabled","gmdPhone","gmdPhonelinkErase","gmdPhonelinkLock","gmdPhonelinkRing","gmdPhonelinkSetup","gmdPortableWifiOff","gmdPresentToAll","gmdPrintDisabled","gmdRingVolume","gmdRssFeed","gmdScreenShare","gmdSentimentSatisfiedAlt","gmdSpeakerPhone","gmdStayCurrentLandscape","gmdStayCurrentPortrait","gmdStayPrimaryLandscape","gmdStayPrimaryPortrait","gmdStopScreenShare","gmdSwapCalls","gmdTextsms","gmdUnsubscribe","gmdVoicemail","gmdVpnKey","gmdAdd","gmdAddBox","gmdAddCircle","gmdAddCircleOutline","gmdArchive","gmdBackspace","gmdBallot","gmdBlock","gmdClear","gmdCreate","gmdDeleteSweep","gmdDrafts","gmdFileCopy","gmdFilterList","gmdFlag","gmdFontDownload","gmdForward","gmdGesture","gmdHowToReg","gmdHowToVote","gmdInbox","gmdLink","gmdLinkOff","gmdLowPriority","gmdMail","gmdMarkunread","gmdMoveToInbox","gmdNextWeek","gmdOutlinedFlag","gmdRedo","gmdRemove","gmdRemoveCircle","gmdRemoveCircleOutline","gmdReply","gmdReplyAll","gmdReport","gmdReportOff","gmdSave","gmdSaveAlt","gmdSelectAll","gmdSend","gmdSort","gmdTextFormat","gmdUnarchive","gmdUndo","gmdWaves","gmdWeekend","gmdWhereToVote","gmdAccessAlarm","gmdAccessAlarms","gmdAccessTime","gmdAddAlarm","gmdAddToHomeScreen","gmdAirplanemodeActive","gmdAirplanemodeInactive","gmdBattery20","gmdBattery30","gmdBattery50","gmdBattery60","gmdBattery80","gmdBattery90","gmdBatteryAlert","gmdBatteryCharging20","gmdBatteryCharging30","gmdBatteryCharging50","gmdBatteryCharging60","gmdBatteryCharging80","gmdBatteryCharging90","gmdBatteryChargingFull","gmdBatteryFull","gmdBatteryStd","gmdBatteryUnknown","gmdBluetooth","gmdBluetoothConnected","gmdBluetoothDisabled","gmdBluetoothSearching","gmdBrightnessAuto","gmdBrightnessHigh","gmdBrightnessLow","gmdBrightnessMedium","gmdDataUsage","gmdDeveloperMode","gmdDevices","gmdDvr","gmdGpsFixed","gmdGpsNotFixed","gmdGpsOff","gmdGraphicEq","gmdLocationDisabled","gmdLocationSearching","gmdMobileFriendly","gmdMobileOff","gmdNetworkCell","gmdNetworkWifi","gmdNfc","gmdScreenLockLandscape","gmdScreenLockPortrait","gmdScreenLockRotation","gmdScreenRotation","gmdSdStorage","gmdSettingsSystemDaydream","gmdSignalCellular0Bar","gmdSignalCellular1Bar","gmdSignalCellular2Bar","gmdSignalCellular3Bar","gmdSignalCellular4Bar","gmdSignalCellularAlt","gmdSignalCellularConnectedNoInternet0Bar","gmdSignalCellularConnectedNoInternet1Bar","gmdSignalCellularConnectedNoInternet2Bar","gmdSignalCellularConnectedNoInternet3Bar","gmdSignalCellularConnectedNoInternet4Bar","gmdSignalCellularNoSim","gmdSignalCellularNull","gmdSignalCellularOff","gmdSignalWifi0Bar","gmdSignalWifi1Bar","gmdSignalWifi1BarLock","gmdSignalWifi2Bar","gmdSignalWifi2BarLock","gmdSignalWifi3Bar","gmdSignalWifi3BarLock","gmdSignalWifi4Bar","gmdSignalWifi4BarLock","gmdSignalWifiOff","gmdStorage","gmdUsb","gmdWallpaper","gmdWidgets","gmdWifiLock","gmdWifiTethering","gmdAddComment","gmdAttachFile","gmdAttachMoney","gmdBarChart","gmdBorderAll","gmdBorderBottom","gmdBorderClear","gmdBorderColor","gmdBorderHorizontal","gmdBorderInner","gmdBorderLeft","gmdBorderOuter","gmdBorderRight","gmdBorderStyle","gmdBorderTop","gmdBorderVertical","gmdBubbleChart","gmdDragHandle","gmdFormatAlignCenter","gmdFormatAlignJustify","gmdFormatAlignLeft","gmdFormatAlignRight","gmdFormatBold","gmdFormatClear","gmdFormatColorFill","gmdFormatColorReset","gmdFormatColorText","gmdFormatIndentDecrease","gmdFormatIndentIncrease","gmdFormatItalic","gmdFormatLineSpacing","gmdFormatListBulleted","gmdFormatListNumbered","gmdFormatListNumberedRtl","gmdFormatPaint","gmdFormatQuote","gmdFormatShapes","gmdFormatSize","gmdFormatStrikethrough","gmdFormatTextdirectionLToR","gmdFormatTextdirectionRToL","gmdFormatUnderlined","gmdFunctions","gmdHighlight","gmdInsertChart","gmdInsertChartOutlined","gmdInsertComment","gmdInsertDriveFile","gmdInsertEmoticon","gmdInsertInvitation","gmdInsertLink","gmdInsertPhoto","gmdLinearScale","gmdMergeType","gmdModeComment","gmdMonetizationOn","gmdMoneyOff","gmdMultilineChart","gmdNotes","gmdPieChart","gmdPublish","gmdScatterPlot","gmdScore","gmdShortText","gmdShowChart","gmdSpaceBar","gmdStrikethroughS","gmdTableChart","gmdTextFields","gmdTitle","gmdVerticalAlignBottom","gmdVerticalAlignCenter","gmdVerticalAlignTop","gmdWrapText","gmdAttachment","gmdCloud","gmdCloudCircle","gmdCloudDone","gmdCloudDownload","gmdCloudOff","gmdCloudQueue","gmdCloudUpload","gmdCreateNewFolder","gmdFolder","gmdFolderOpen","gmdFolderShared","gmdCast","gmdCastConnected","gmdCastForEducation","gmdComputer","gmdDesktopMac","gmdDesktopWindows","gmdDeveloperBoard","gmdDeviceHub","gmdDeviceUnknown","gmdDevicesOther","gmdDock","gmdGamepad","gmdHeadset","gmdHeadsetMic","gmdKeyboard","gmdKeyboardArrowDown","gmdKeyboardArrowLeft","gmdKeyboardArrowRight","gmdKeyboardArrowUp","gmdKeyboardBackspace","gmdKeyboardCapslock","gmdKeyboardHide","gmdKeyboardReturn","gmdKeyboardTab","gmdKeyboardVoice","gmdLaptop","gmdLaptopChromebook","gmdLaptopMac","gmdLaptopWindows","gmdMemory","gmdMouse","gmdPhoneAndroid","gmdPhoneIphone","gmdPhonelink","gmdPhonelinkOff","gmdPowerInput","gmdRouter","gmdScanner","gmdSecurity","gmdSimCard","gmdSmartphone","gmdSpeaker","gmdSpeakerGroup","gmdTablet","gmdTabletAndroid","gmdTabletMac","gmdToys","gmdTv","gmdVideogameAsset","gmdWatch","gmdAddAPhoto","gmdAddPhotoAlternate","gmdAddToPhotos","gmdAdjust","gmdAssistant","gmdAssistantPhoto","gmdAudiotrack","gmdBlurCircular","gmdBlurLinear","gmdBlurOff","gmdBlurOn","gmdBrightness1","gmdBrightness2","gmdBrightness3","gmdBrightness4","gmdBrightness5","gmdBrightness6","gmdBrightness7","gmdBrokenImage","gmdBrush","gmdBurstMode","gmdCamera","gmdCameraAlt","gmdCameraFront","gmdCameraRear","gmdCameraRoll","gmdCenterFocusStrong","gmdCenterFocusWeak","gmdCollections","gmdCollectionsBookmark","gmdColorLens","gmdColorize","gmdCompare","gmdControlPoint","gmdControlPointDuplicate","gmdCrop","gmdCrop169","gmdCrop32","gmdCrop54","gmdCrop75","gmdCropDin","gmdCropFree","gmdCropLandscape","gmdCropOriginal","gmdCropPortrait","gmdCropRotate","gmdCropSquare","gmdDehaze","gmdDetails","gmdEdit","gmdExposure","gmdExposureNeg1","gmdExposureNeg2","gmdExposurePlus1","gmdExposurePlus2","gmdExposureZero","gmdFilter","gmdFilter1","gmdFilter2","gmdFilter3","gmdFilter4","gmdFilter5","gmdFilter6","gmdFilter7","gmdFilter8","gmdFilter9","gmdFilter9Plus","gmdFilterBAndW","gmdFilterCenterFocus","gmdFilterDrama","gmdFilterFrames","gmdFilterHdr","gmdFilterNone","gmdFilterTiltShift","gmdFilterVintage","gmdFlare","gmdFlashAuto","gmdFlashOff","gmdFlashOn","gmdFlip","gmdGradient","gmdGrain","gmdGridOff","gmdGridOn","gmdHdrOff","gmdHdrOn","gmdHdrStrong","gmdHdrWeak","gmdHealing","gmdImage","gmdImageAspectRatio","gmdImageSearch","gmdIso","gmdLandscape","gmdLeakAdd","gmdLeakRemove","gmdLens","gmdLinkedCamera","gmdLooks","gmdLooks3","gmdLooks4","gmdLooks5","gmdLooks6","gmdLooksOne","gmdLooksTwo","gmdLoupe","gmdMonochromePhotos","gmdMovieCreation","gmdMovieFilter","gmdMusicNote","gmdMusicOff","gmdNature","gmdNaturePeople","gmdNavigateBefore","gmdNavigateNext","gmdPalette","gmdPanorama","gmdPanoramaFishEye","gmdPanoramaHorizontal","gmdPanoramaVertical","gmdPanoramaWideAngle","gmdPhoto","gmdPhotoAlbum","gmdPhotoCamera","gmdPhotoFilter","gmdPhotoLibrary","gmdPhotoSizeSelectActual","gmdPhotoSizeSelectLarge","gmdPhotoSizeSelectSmall","gmdPictureAsPdf","gmdPortrait","gmdRemoveRedEye","gmdRotate90DegreesCcw","gmdRotateLeft","gmdRotateRight","gmdShutterSpeed","gmdSlideshow","gmdStraighten","gmdStyle","gmdSwitchCamera","gmdSwitchVideo","gmdTagFaces","gmdTexture","gmdTimelapse","gmdTimer","gmdTimer10","gmdTimer3","gmdTimerOff","gmdTonality","gmdTransform","gmdTune","gmdViewComfy","gmdViewCompact","gmdVignette","gmdWbAuto","gmdWbCloudy","gmdWbIncandescent","gmdWbIridescent","gmdWbSunny","gmd360","gmdAddLocation","gmdAtm","gmdBeenhere","gmdCategory","gmdCompassCalibration","gmdDepartureBoard","gmdDirections","gmdDirectionsBike","gmdDirectionsBoat","gmdDirectionsBus","gmdDirectionsCar","gmdDirectionsRailway","gmdDirectionsRun","gmdDirectionsSubway","gmdDirectionsTransit","gmdDirectionsWalk","gmdEditAttributes","gmdEditLocation","gmdEvStation","gmdFastfood","gmdFlight","gmdHotel","gmdLayers","gmdLayersClear","gmdLocalActivity","gmdLocalAirport","gmdLocalAtm","gmdLocalBar","gmdLocalCafe","gmdLocalCarWash","gmdLocalConvenienceStore","gmdLocalDining","gmdLocalDrink","gmdLocalFlorist","gmdLocalGasStation","gmdLocalGroceryStore","gmdLocalHospital","gmdLocalHotel","gmdLocalLaundryService","gmdLocalLibrary","gmdLocalMall","gmdLocalMovies","gmdLocalOffer","gmdLocalParking","gmdLocalPharmacy","gmdLocalPhone","gmdLocalPizza","gmdLocalPlay","gmdLocalPostOffice","gmdLocalPrintshop","gmdLocalSee","gmdLocalShipping","gmdLocalTaxi","gmdMap","gmdMoney","gmdMyLocation","gmdNavigation","gmdNearMe","gmdNotListedLocation","gmdPersonPin","gmdPersonPinCircle","gmdPinDrop","gmdPlace","gmdRateReview","gmdRestaurant","gmdRestaurantMenu","gmdSatellite","gmdStoreMallDirectory","gmdStreetview","gmdSubway","gmdTerrain","gmdTraffic","gmdTrain","gmdTram","gmdTransferWithinAStation","gmdTransitEnterexit","gmdTripOrigin","gmdZoomOutMap","gmdApps","gmdArrowBack","gmdArrowBackIos","gmdArrowDownward","gmdArrowDropDown","gmdArrowDropDownCircle","gmdArrowDropUp","gmdArrowForward","gmdArrowForwardIos","gmdArrowLeft","gmdArrowRight","gmdArrowUpward","gmdCancel","gmdCheck","gmdChevronLeft","gmdChevronRight","gmdClose","gmdExpandLess","gmdExpandMore","gmdFirstPage","gmdFullscreen","gmdFullscreenExit","gmdLastPage","gmdMenu","gmdMoreHoriz","gmdMoreVert","gmdRefresh","gmdSubdirectoryArrowLeft","gmdSubdirectoryArrowRight","gmdUnfoldLess","gmdUnfoldMore","gmdAdb","gmdAirlineSeatFlat","gmdAirlineSeatFlatAngled","gmdAirlineSeatIndividualSuite","gmdAirlineSeatLegroomExtra","gmdAirlineSeatLegroomNormal","gmdAirlineSeatLegroomReduced","gmdAirlineSeatReclineExtra","gmdAirlineSeatReclineNormal","gmdBluetoothAudio","gmdConfirmationNumber","gmdDiscFull","gmdDriveEta","gmdEnhancedEncryption","gmdEventAvailable","gmdEventBusy","gmdEventNote","gmdFolderSpecial","gmdLiveTv","gmdMms","gmdMore","gmdNetworkCheck","gmdNetworkLocked","gmdNoEncryption","gmdOndemandVideo","gmdPersonalVideo","gmdPhoneBluetoothSpeaker","gmdPhoneCallback","gmdPhoneForwarded","gmdPhoneInTalk","gmdPhoneLocked","gmdPhoneMissed","gmdPhonePaused","gmdPower","gmdPowerOff","gmdPriorityHigh","gmdSdCard","gmdSms","gmdSmsFailed","gmdSync","gmdSyncDisabled","gmdSyncProblem","gmdSystemUpdate","gmdTapAndPlay","gmdTimeToLeave","gmdTvOff","gmdVibration","gmdVoiceChat","gmdVpnLock","gmdWc","gmdWifi","gmdWifiOff","gmdAcUnit","gmdAirportShuttle","gmdAllInclusive","gmdBeachAccess","gmdBusinessCenter","gmdCasino","gmdChildCare","gmdChildFriendly","gmdFitnessCenter","gmdFreeBreakfast","gmdGolfCourse","gmdHotTub","gmdKitchen","gmdMeetingRoom","gmdNoMeetingRoom","gmdPool","gmdRoomService","gmdRvHookup","gmdSmokeFree","gmdSmokingRooms","gmdSpa","gmdCake","gmdDomain","gmdGroup","gmdGroupAdd","gmdLocationCity","gmdMood","gmdMoodBad","gmdNotifications","gmdNotificationsActive","gmdNotificationsNone","gmdNotificationsOff","gmdNotificationsPaused","gmdPages","gmdPartyMode","gmdPeople","gmdPeopleOutline","gmdPerson","gmdPersonAdd","gmdPersonOutline","gmdPlusOne","gmdPoll","gmdPublic","gmdSchool","gmdSentimentDissatisfied","gmdSentimentSatisfied","gmdSentimentVeryDissatisfied","gmdSentimentVerySatisfied","gmdShare","gmdThumbDownAlt","gmdThumbUpAlt","gmdWhatshot","gmdCheckBox","gmdCheckBoxOutlineBlank","gmdIndeterminateCheckBox","gmdRadioButtonChecked","gmdRadioButtonUnchecked","gmdStar","gmdStarBorder","gmdStarHalf","gmdToggleOff","gmdToggleOn"] +} diff --git a/Example/GMD Swift/UpdatingNotes.txt b/Example/GMD Swift/UpdatingNotes.txt new file mode 100644 index 0000000..dafa174 --- /dev/null +++ b/Example/GMD Swift/UpdatingNotes.txt @@ -0,0 +1,44 @@ +1) How to add a missing icon + +Take GMDIcons.ttf and upload it at http://torinak.com/font/lsfont.html +Hunt in here for the icon that is missing. Once you find it - get the codepoint (Hex is shown on the left for the leftmost icon) +Now find the icon name in CMDIcons.swift - it should be in the list, but commented out +Add the code value +Send a pull request + + + + + +2) How to update if the icon is not in the current ttf + + +Get the latest woff file from Google +Convert to ttf with https://everythingfonts.com/woff2-to-ttf + +Array of iconNames can be scraped with the following js + +//////////JS to scrape iconNames from https://material.io/tools/icons/?style=baseline +var x = document.getElementsByClassName("icon-image-preview"); +var iconNames = [] + +for (var i=0; i Date: Fri, 24 Aug 2018 17:49:53 +0100 Subject: [PATCH 11/25] readme update --- README.md | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 3450c95..f018de9 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,16 @@ Forked from original project by @vaberer -Updated for Swift 4 -Various convenience methods updated to make them even more convenient +Updated for Swift 4 and rewritten to simplify the code and make it easier to update + +The code now lists all icons for the 3.0.1 release, and includes the updated font file + +However - updating the code points is a manual process - so most new icons are still commented out. +If you want a new icon, you just have to find and update the codepoint. See instructions in the demo project UpdatingNotes.txt on how to do that. + + + +Various convenience methods have been updated to make them even more convenient. ![Font Awesome Swift](https://github.com/Vaberer/Font-Awesome-Swift/blob/master/resources/opensource_matters.png) @@ -26,7 +34,7 @@ Google Material Design Icons Swift library for iOS. No image icons any more. Usi ## Requirements -- iOS 8.0+ +- iOS 8.0+ - Xcode 7 ## Installation @@ -80,17 +88,17 @@ Super easy way how to add an icon. ### UILabel ```Swift labelName.GMDIcon = .gmdPublic - + labelName.textColor = UIColor.redColor() ``` ### UIButton ```Swift buttonName.setGMDIcon(.gmdPublic) - + //or if you want to set an icon size and/or specify the state, use: buttonName.setGMDIcon(.gmdPublic, forState: .highlighted, iconSize: 30) - + buttonName.setTitleColor(UIColor.redColor(), forState: .normal) ``` @@ -98,10 +106,10 @@ Super easy way how to add an icon. ```Swift //Standard font size barName.GMDIcon = .gmdPublic - + //Custom font size barName.setGMDIcon(.gmdPublic, iconSize: 35) - + barName.tintColor = UIColor.redColor() ``` From 9acfe42ecfe23a3049329238b11d286f1d65a5b0 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Fri, 24 Aug 2018 18:41:37 +0100 Subject: [PATCH 12/25] add enumCollection into the pod so it builds This will be taken out for swift 4.2 --- Example/GMD Swift.xcodeproj/project.pbxproj | 2 +- {Example/GMD Swift => Source}/EnumCollection.swift | 0 google-material-design-icons-swift.podspec | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename {Example/GMD Swift => Source}/EnumCollection.swift (100%) diff --git a/Example/GMD Swift.xcodeproj/project.pbxproj b/Example/GMD Swift.xcodeproj/project.pbxproj index 5b74790..bbd3d25 100644 --- a/Example/GMD Swift.xcodeproj/project.pbxproj +++ b/Example/GMD Swift.xcodeproj/project.pbxproj @@ -69,7 +69,6 @@ 4E19E0221B919C3600825B73 /* Source - Google Material Icons Swift */, D44CBB242130628E002741C7 /* CaseGenerator.swift */, 4E19E00F1B919AFC00825B73 /* AppDelegate.swift */, - D4817F7D21304D2D005F9950 /* EnumCollection.swift */, 4E19E0231B919D5400825B73 /* IconCell.swift */, 4E19E0111B919AFC00825B73 /* ViewController.swift */, 4E19E0131B919AFC00825B73 /* Main.storyboard */, @@ -85,6 +84,7 @@ isa = PBXGroup; children = ( 4E19E0251B91B34800825B73 /* GMDIcon.swift */, + D4817F7D21304D2D005F9950 /* EnumCollection.swift */, 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */, ); name = "Source - Google Material Icons Swift"; diff --git a/Example/GMD Swift/EnumCollection.swift b/Source/EnumCollection.swift similarity index 100% rename from Example/GMD Swift/EnumCollection.swift rename to Source/EnumCollection.swift diff --git a/google-material-design-icons-swift.podspec b/google-material-design-icons-swift.podspec index cebcbfe..5479081 100644 --- a/google-material-design-icons-swift.podspec +++ b/google-material-design-icons-swift.podspec @@ -10,8 +10,8 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/Vaberer/Google-Material-Design-Icons-Swift.git', :tag => s.version } s.ios.deployment_target = '8.0' - s.source_files = 'Source/GMDIcon.swift' + s.source_files = ['Source/GMDIcon.swift','Source/EnumCollection.swift'] s.resource_bundle = { 'Google-Material-Design-Icons-Swift' => 'Source/GMDIcons.ttf' } s.frameworks = 'UIKit', 'CoreText' s.requires_arc = true -end \ No newline at end of file +end From a7757719a7150886970174d8a2b28c74f3cea7ae Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Sat, 25 Aug 2018 15:38:57 +0100 Subject: [PATCH 13/25] Added view controller for unidentified glyphs --- Example/GMD Swift.xcodeproj/project.pbxproj | 4 + .../Base.lproj/LaunchScreen.storyboard | 15 +- Example/GMD Swift/Base.lproj/Main.storyboard | 167 +++++++++++++++--- Example/GMD Swift/MissingViewController.swift | 111 ++++++++++++ Example/GMD Swift/UpdatingNotes.txt | 10 +- Example/GMD Swift/ViewController.swift | 15 +- 6 files changed, 278 insertions(+), 44 deletions(-) create mode 100644 Example/GMD Swift/MissingViewController.swift diff --git a/Example/GMD Swift.xcodeproj/project.pbxproj b/Example/GMD Swift.xcodeproj/project.pbxproj index bbd3d25..060b580 100644 --- a/Example/GMD Swift.xcodeproj/project.pbxproj +++ b/Example/GMD Swift.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 4E19E0281B91B35E00825B73 /* GMDIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */; }; D44CBB23213061BE002741C7 /* UpdatingNotes.txt in Resources */ = {isa = PBXBuildFile; fileRef = D44CBB22213061BE002741C7 /* UpdatingNotes.txt */; }; D44CBB252130628E002741C7 /* CaseGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44CBB242130628E002741C7 /* CaseGenerator.swift */; }; + D44CBB272131790F002741C7 /* MissingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44CBB262131790F002741C7 /* MissingViewController.swift */; }; D4817F7E21304D2D005F9950 /* EnumCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4817F7D21304D2D005F9950 /* EnumCollection.swift */; }; /* End PBXBuildFile section */ @@ -33,6 +34,7 @@ 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = GMDIcons.ttf; sourceTree = ""; }; D44CBB22213061BE002741C7 /* UpdatingNotes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = UpdatingNotes.txt; sourceTree = ""; }; D44CBB242130628E002741C7 /* CaseGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaseGenerator.swift; sourceTree = ""; }; + D44CBB262131790F002741C7 /* MissingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MissingViewController.swift; sourceTree = ""; }; D4817F7D21304D2D005F9950 /* EnumCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumCollection.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -71,6 +73,7 @@ 4E19E00F1B919AFC00825B73 /* AppDelegate.swift */, 4E19E0231B919D5400825B73 /* IconCell.swift */, 4E19E0111B919AFC00825B73 /* ViewController.swift */, + D44CBB262131790F002741C7 /* MissingViewController.swift */, 4E19E0131B919AFC00825B73 /* Main.storyboard */, 4E19E0161B919AFC00825B73 /* Assets.xcassets */, 4E19E0181B919AFC00825B73 /* LaunchScreen.storyboard */, @@ -165,6 +168,7 @@ buildActionMask = 2147483647; files = ( 4E19E0121B919AFC00825B73 /* ViewController.swift in Sources */, + D44CBB272131790F002741C7 /* MissingViewController.swift in Sources */, 4E19E0261B91B34800825B73 /* GMDIcon.swift in Sources */, 4E19E0101B919AFC00825B73 /* AppDelegate.swift in Sources */, D44CBB252130628E002741C7 /* CaseGenerator.swift in Sources */, diff --git a/Example/GMD Swift/Base.lproj/LaunchScreen.storyboard b/Example/GMD Swift/Base.lproj/LaunchScreen.storyboard index 565aa5b..12baca9 100644 --- a/Example/GMD Swift/Base.lproj/LaunchScreen.storyboard +++ b/Example/GMD Swift/Base.lproj/LaunchScreen.storyboard @@ -1,8 +1,12 @@ - - + + + + + - + + @@ -14,10 +18,9 @@ - + - - + diff --git a/Example/GMD Swift/Base.lproj/Main.storyboard b/Example/GMD Swift/Base.lproj/Main.storyboard index bc49bb3..70e8aa5 100644 --- a/Example/GMD Swift/Base.lproj/Main.storyboard +++ b/Example/GMD Swift/Base.lproj/Main.storyboard @@ -1,10 +1,14 @@ - - + + + + + - + + @@ -16,47 +20,47 @@ - + - - + + - + - + - - + @@ -119,21 +123,21 @@ - + - + - + - + @@ -147,7 +151,7 @@ - + @@ -159,5 +163,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/GMD Swift/MissingViewController.swift b/Example/GMD Swift/MissingViewController.swift new file mode 100644 index 0000000..accac1a --- /dev/null +++ b/Example/GMD Swift/MissingViewController.swift @@ -0,0 +1,111 @@ +// +// ViewController.swift +// GMD Swift +// +// Created by Patrik Vaberer on 8/29/15. +// Copyright © 2015 Patrik Vaberer. All rights reserved. +// + +// +// ViewController.swift +// Google Material Design Icons Swift +// +// Created by Patrik Vaberer on 7/13/15. +// Copyright (c) 2015 Patrik Vaberer. All rights reserved. +// + +import UIKit +import Foundation + +class MissingViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { + + @IBOutlet weak var tableView: UITableView! + var missingItems:[Character] = [] + + + override func viewDidLoad() { + super.viewDidLoad() + + buildMissingItemList() + } + + func buildMissingItemList() { + + let font = GMDType.font() + if var extantChars = font.fontDescriptor.object(forKey: .characterSet) as? CharacterSet { + let knownCharString:String = GMDType.allValues.reduce("") { (total, icon) -> String in + total + icon.text + } + + extantChars.remove(charactersIn: knownCharString) + let missingChars = extantChars.allCharacters() + + //ignore characters before 0xE00 as they seem to be just spaces + missingItems = missingChars.filter { (character) -> Bool in + return character.description.utf16.first! >= 0xE00 + } + + } + + } + + + //MARK: UITableView + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + let c = tableView.dequeueReusableCell(withIdentifier: "IconCellMissing") as! IconCell + + let icon = GMDType.gmd3dRotation + + //set with known char to set the font + c.lSmall.GMDIcon = icon + c.lMedium.GMDIcon = icon + c.lBig.GMDIcon = icon + + let character = missingItems[indexPath.row] + c.lSmall.text = character.description + c.lMedium.text = character.description + c.lBig.text = character.description + + let number = character.description.utf16.first! + let hex = String(format:"%02X", number) + c.lFont.text = ("0x\(hex)") + + return c + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + + return missingItems.count + } + + + + @IBAction func bGithubPressed(_ sender: UIBarButtonItem) { + + if let requestUrl = URL(string: "https://github.com/Vaberer/Google-Material-Design-Icons-Swift") { + UIApplication.shared.openURL(requestUrl) + } + } + + + + let helper = GMDType.cases().map { (item) -> String in + return "\(item)" + } + +} + +extension CharacterSet { + func allCharacters() -> [Character] { + var result: [Character] = [] + for plane: UInt8 in 0...16 where self.hasMember(inPlane: plane) { + for unicode in UInt32(plane) << 16 ..< UInt32(plane + 1) << 16 { + if let uniChar = UnicodeScalar(unicode), self.contains(uniChar) { + result.append(Character(uniChar)) + } + } + } + return result + } +} diff --git a/Example/GMD Swift/UpdatingNotes.txt b/Example/GMD Swift/UpdatingNotes.txt index dafa174..1aeb6e8 100644 --- a/Example/GMD Swift/UpdatingNotes.txt +++ b/Example/GMD Swift/UpdatingNotes.txt @@ -1,18 +1,20 @@ 1) How to add a missing icon -Take GMDIcons.ttf and upload it at http://torinak.com/font/lsfont.html -Hunt in here for the icon that is missing. Once you find it - get the codepoint (Hex is shown on the left for the leftmost icon) +Fire up the demo app and click the warning icon to view glyphs which have not been matched with an enum + +Hunt in here for the icon that is missing. Once you find it - get the codepoint Now find the icon name in CMDIcons.swift - it should be in the list, but commented out Add the code value Send a pull request - +Note - there are currently a lot of icons which don't have names (that I can find) on http://material.io +If you want to add on of these to the code, please give it a name in the format gmdSomeName_tmp +When/if we get an 'official' name for the item, I'll rename the _tmp one 2) How to update if the icon is not in the current ttf - Get the latest woff file from Google Convert to ttf with https://everythingfonts.com/woff2-to-ttf diff --git a/Example/GMD Swift/ViewController.swift b/Example/GMD Swift/ViewController.swift index 55cd73b..1454dba 100644 --- a/Example/GMD Swift/ViewController.swift +++ b/Example/GMD Swift/ViewController.swift @@ -20,7 +20,7 @@ class ViewController: UIViewController, UITableViewDataSource, UITableViewDelega @IBOutlet weak var tableView: UITableView! @IBOutlet weak var bGithub: UIBarButtonItem! - @IBOutlet weak var bTwitter: UIBarButtonItem! + @IBOutlet weak var bMissing: UIBarButtonItem! var filteredData = [String]() var resultSearchController = UISearchController() @@ -41,7 +41,7 @@ class ViewController: UIViewController, UITableViewDataSource, UITableViewDelega })() bGithub.GMDIcon = GMDType.gmdPublic - bTwitter.GMDIcon = GMDType.gmdPerson + bMissing.GMDIcon = GMDType.gmdReportProblem @@ -87,16 +87,7 @@ class ViewController: UIViewController, UITableViewDataSource, UITableViewDelega } } - @IBAction func bTwitterPressed(_ sender: UIBarButtonItem) { - - if let twitterURL = URL(string: "twitter://user?id=2271666416") { - - if UIApplication.shared.canOpenURL(twitterURL) { - - UIApplication.shared.openURL(twitterURL) - } - } - } + //MARK: Helpers func filterContentForSearchText(_ searchText: String) { From 511608ea24523edd65e1e84733b8b60419a771e0 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Sat, 25 Aug 2018 15:39:22 +0100 Subject: [PATCH 14/25] added a lot of missing icons --- Source/GMDIcon.swift | 446 ++++++++++++++++++++++--------------------- 1 file changed, 225 insertions(+), 221 deletions(-) diff --git a/Source/GMDIcon.swift b/Source/GMDIcon.swift index 93ba091..daaf309 100644 --- a/Source/GMDIcon.swift +++ b/Source/GMDIcon.swift @@ -144,6 +144,7 @@ List of all icons in Google Material Design Font public enum GMDType: Int, EnumCollection { //See UpdatingNotes.txt for info on how to add missing glyphs + case gmd3dRotation = 0xE84D case gmdAccessibility = 0xE84E @@ -160,7 +161,7 @@ public enum GMDType: Int, EnumCollection { case gmdAlarmOff = 0xE857 case gmdAlarmOn = 0xE858 case gmdAllInbox = 0xE97F - //case gmdAllOut = 0x + case gmdAllOut = 0xE90B case gmdAndroid = 0xE859 case gmdAnnouncement = 0xE85A case gmdArrowRightAlt = 0xE8E4 @@ -193,31 +194,31 @@ public enum GMDType: Int, EnumCollection { case gmdChromeReaderMode = 0xE86D case gmdClass = 0xE86E case gmdCode = 0xE86F - //case gmdCommute = 0x + case gmdCommute = 0xE940 case gmdCompareArrows = 0xE915 case gmdContactSupport = 0xE94C - //case gmdCopyright = 0x + case gmdCopyright = 0xE90C case gmdCreditCard = 0xE870 case gmdDashboard = 0xE871 case gmdDateRange = 0xE916 case gmdDelete = 0xE872 - //case gmdDeleteForever = 0x - //case gmdDeleteOutline = 0x + case gmdDeleteForever = 0xE92B + case gmdDeleteOutline = 0xE92E case gmdDescription = 0xE873 case gmdDns = 0xE875 case gmdDone = 0xE876 case gmdDoneAll = 0xE877 - //case gmdDoneOutline = 0x - //case gmdDonutLarge = 0x - //case gmdDonutSmall = 0x - //case gmdDragIndicator = 0x + case gmdDoneOutline = 0xE92F + case gmdDonutLarge = 0xE917 + case gmdDonutSmall = 0xE918 + case gmdDragIndicator = 0xE945 case gmdEject = 0xE8FB case gmdEuroSymbol = 0xE926 case gmdEvent = 0xE878 case gmdEventSeat = 0xE903 case gmdExitToApp = 0xE879 case gmdExplore = 0xE87A - //case gmdExploreOff = 0x + case gmdExploreOff = 0xE9A8 case gmdExtension = 0xE87B case gmdFace = 0xE87C case gmdFavorite = 0xE87D @@ -225,13 +226,13 @@ public enum GMDType: Int, EnumCollection { case gmdFeedback = 0xE87F case gmdFindInPage = 0xE880 case gmdFindReplace = 0xE881 - //case gmdFingerprint = 0x + case gmdFingerprint = 0xE90D case gmdFlightLand = 0xE904 case gmdFlightTakeoff = 0xE905 case gmdFlipToBack = 0xE882 case gmdFlipToFront = 0xE883 - //case gmdGTranslate = 0x - //case gmdGavel = 0x + case gmdGTranslate = 0xE927 + case gmdGavel = 0xE90E case gmdGetApp = 0xE884 case gmdGif = 0xE908 case gmdGrade = 0xE885 @@ -241,22 +242,22 @@ public enum GMDType: Int, EnumCollection { case gmdHighlightOff = 0xE888 case gmdHistory = 0xE889 case gmdHome = 0xE88A - //case gmdHorizontalSplit = 0x + case gmdHorizontalSplit = 0xE947 case gmdHourglassEmpty = 0xE88B case gmdHourglassFull = 0xE88C case gmdHttp = 0xE902 case gmdHttps = 0xE88D - //case gmdImportantDevices = 0x + case gmdImportantDevices = 0xE912 case gmdInfo = 0xE88E case gmdInput = 0xE890 case gmdInvertColors = 0xE891 case gmdLabel = 0xE892 - //case gmdLabelImportant = 0x - //case gmdLabelOff = 0x + case gmdLabelImportant = 0xE937 + case gmdLabelOff = 0xE9B6 case gmdLanguage = 0xE894 case gmdLaunch = 0xE895 - //case gmdLineStyle = 0x - //case gmdLineWeight = 0x + case gmdLineStyle = 0xE919 + case gmdLineWeight = 0xE91A case gmdList = 0xE896 case gmdLock = 0xE897 case gmdLockOpen = 0xE898 @@ -264,16 +265,16 @@ public enum GMDType: Int, EnumCollection { case gmdMarkunreadMailbox = 0xE89B case gmdMaximize = 0xE930 case gmdMinimize = 0xE931 - //case gmdMotorcycle = 0x + case gmdMotorcycle = 0xE91B case gmdNoteAdd = 0xE89C - //case gmdOfflineBolt = 0x + case gmdOfflineBolt = 0xE932 case gmdOfflinePin = 0xE90A - //case gmdOpacity = 0x + case gmdOpacity = 0xE91C case gmdOpenInBrowser = 0xE89D case gmdOpenInNew = 0xE89E case gmdOpenWith = 0xE89F case gmdPageview = 0xE8A0 - //case gmdPanTool = 0x + case gmdPanTool = 0xE925 case gmdPayment = 0xE8A1 case gmdPermCameraMic = 0xE8A2 case gmdPermContactCalendar = 0xE8A3 @@ -283,28 +284,28 @@ public enum GMDType: Int, EnumCollection { case gmdPermMedia = 0xE8A7 case gmdPermPhoneMsg = 0xE8A8 case gmdPermScanWifi = 0xE8A9 - //case gmdPets = 0x + case gmdPets = 0xE91D case gmdPictureInPicture = 0xE8AA - //case gmdPictureInPictureAlt = 0x + case gmdPictureInPictureAlt = 0xE911 case gmdPlayForWork = 0xE906 case gmdPolymer = 0xE8AB case gmdPowerSettingsNew = 0xE8AC - //case gmdPregnantWoman = 0x + case gmdPregnantWoman = 0xE91E case gmdPrint = 0xE8AD case gmdQueryBuilder = 0xE8AE case gmdQuestionAnswer = 0xE8AF case gmdReceipt = 0xE8B0 - //case gmdRecordVoiceOver = 0x + case gmdRecordVoiceOver = 0xE91F case gmdRedeem = 0xE8B1 - //case gmdRemoveShoppingCart = 0x + case gmdRemoveShoppingCart = 0xE928 case gmdReorder = 0xE8FE case gmdReportProblem = 0xE8B2 case gmdRestore = 0xE8B3 - //case gmdRestoreFromTrash = 0x - //case gmdRestorePage = 0x + case gmdRestoreFromTrash = 0xE938 + case gmdRestorePage = 0xE929 case gmdRoom = 0xE8B4 - //case gmdRoundedCorner = 0x - //case gmdRowing = 0x + case gmdRoundedCorner = 0xE920 + case gmdRowing = 0xE921 case gmdSchedule = 0xE8B5 case gmdSearch = 0xE8B6 case gmdSettings = 0xE8B8 @@ -329,43 +330,43 @@ public enum GMDType: Int, EnumCollection { case gmdShoppingBasket = 0xE8CB case gmdShoppingCart = 0xE8CC case gmdSpeakerNotes = 0xE8CD - //case gmdSpeakerNotesOff = 0x + case gmdSpeakerNotesOff = 0xE92A case gmdSpellcheck = 0xE8CE case gmdStarRate = 0xE8CF case gmdStars = 0xE8D0 case gmdStore = 0xE8D1 case gmdSubject = 0xE8D2 - //case gmdSupervisedUserCircle = 0x + case gmdSupervisedUserCircle = 0xE939 case gmdSupervisorAccount = 0xE8D3 case gmdSwapHoriz = 0xE8D4 - //case gmdSwapHorizontalCircle = 0x + case gmdSwapHorizontalCircle = 0xE933 case gmdSwapVert = 0xE8D5 case gmdSwapVerticalCircle = 0xE8D6 case gmdTab = 0xE8D8 case gmdTabUnselected = 0xE8D9 - //case gmdTextRotateUp = 0x - //case gmdTextRotateVertical = 0x - //case gmdTextRotationDown = 0x - //case gmdTextRotationNone = 0x + case gmdTextRotateUp = 0xE93A + case gmdTextRotateVertical = 0xE93B + case gmdTextRotationDown = 0xE93E + case gmdTextRotationNone = 0xE93F case gmdTheaters = 0xE8DA case gmdThumbDown = 0xE8DB case gmdThumbUp = 0xE8DC case gmdThumbsUpDown = 0xE8DD - //case gmdTimeline = 0x + case gmdTimeline = 0xE922 case gmdToc = 0xE8DE case gmdToday = 0xE8DF case gmdToll = 0xE8E0 - //case gmdTouchApp = 0x + case gmdTouchApp = 0xE913 case gmdTrackChanges = 0xE8E1 case gmdTranslate = 0xE8E2 case gmdTrendingDown = 0xE8E3 - //case gmdTrendingFlat = 0x + case gmdTrendingFlat = 0xE941 case gmdTrendingUp = 0xE8E5 case gmdTurnedIn = 0xE8E6 case gmdTurnedInNot = 0xE8E7 - //case gmdUpdate = 0x + case gmdUpdate = 0xE923 case gmdVerifiedUser = 0xE8E8 - //case gmdVerticalSplit = 0x + case gmdVerticalSplit = 0xE949 case gmdViewAgenda = 0xE8E9 case gmdViewArray = 0xE8EA case gmdViewCarousel = 0xE8EB @@ -379,40 +380,40 @@ public enum GMDType: Int, EnumCollection { case gmdViewWeek = 0xE8F3 case gmdVisibility = 0xE8F4 case gmdVisibilityOff = 0xE8F5 - //case gmdVoiceOverOff = 0x - //case gmdWatchLater = 0x + case gmdVoiceOverOff = 0xE94A + case gmdWatchLater = 0xE924 case gmdWork = 0xE8F9 - //case gmdWorkOff = 0x - //case gmdWorkOutline = 0x + case gmdWorkOff = 0xE942 + case gmdWorkOutline = 0xE943 case gmdYoutubeSearchedFor = 0xE8FA case gmdZoomIn = 0xE8FF case gmdZoomOut = 0xE900 case gmdAddAlert = 0xE003 case gmdError = 0xE000 case gmdErrorOutline = 0xE001 - //case gmdNotificationImportant = 0x + case gmdNotificationImportant = 0xE004 case gmdWarning = 0xE002 - //case gmd4k = 0x - //case gmdAddToQueue = 0x + case gmd4k = 0xE072 + case gmdAddToQueue = 0xE05C case gmdAirplay = 0xE055 case gmdAlbum = 0xE019 - //case gmdArtTrack = 0x + case gmdArtTrack = 0xE060 case gmdAvTimer = 0xE01B - //case gmdBrandingWatermark = 0x - //case gmdCallToAction = 0x + case gmdBrandingWatermark = 0xE06B + case gmdCallToAction = 0xE06C case gmdClosedCaption = 0xE01C - //case gmdControlCamera = 0x + case gmdControlCamera = 0xE074 case gmdEqualizer = 0xE01D case gmdExplicit = 0xE01E case gmdFastForward = 0xE01F case gmdFastRewind = 0xE020 - //case gmdFeaturedPlayList = 0x - //case gmdFeaturedVideo = 0x - //case gmdFiberDvr = 0x - //case gmdFiberManualRecord = 0x - //case gmdFiberNew = 0x - //case gmdFiberPin = 0x - //case gmdFiberSmartRecord = 0x + case gmdFeaturedPlayList = 0xE06E + case gmdFeaturedVideo = 0xE06D + case gmdFiberDvr = 0xE05D + case gmdFiberManualRecord = 0xE061 + case gmdFiberNew = 0xE05E + case gmdFiberPin = 0xE06A + case gmdFiberSmartRecord = 0xE062 case gmdForward10 = 0xE056 case gmdForward30 = 0xE057 case gmdForward5 = 0xE058 @@ -427,12 +428,12 @@ public enum GMDType: Int, EnumCollection { case gmdMic = 0xE029 case gmdMicNone = 0xE02A case gmdMicOff = 0xE02B - //case gmdMissedVideoCall = 0x + case gmdMissedVideoCall = 0xE073 case gmdMovie = 0xE02C - //case gmdMusicVideo = 0x + case gmdMusicVideo = 0xE063 case gmdNewReleases = 0xE031 case gmdNotInterested = 0xE033 - //case gmdNote = 0x + case gmdNote = 0xE06F case gmdPause = 0xE034 case gmdPauseCircleFilled = 0xE035 case gmdPauseCircleOutline = 0xE036 @@ -441,14 +442,14 @@ public enum GMDType: Int, EnumCollection { //case gmdPlayCircleFilledWhite = 0x case gmdPlayCircleOutline = 0xE039 case gmdPlaylistAdd = 0xE03B - //case gmdPlaylistAddCheck = 0x - //case gmdPlaylistPlay = 0x + case gmdPlaylistAddCheck = 0xE065 + case gmdPlaylistPlay = 0xE05F case gmdQueue = 0xE03C case gmdQueueMusic = 0xE03D - //case gmdQueuePlayNext = 0x + case gmdQueuePlayNext = 0xE066 case gmdRadio = 0xE03E case gmdRecentActors = 0xE03F - //case gmdRemoveFromQueue = 0x + case gmdRemoveFromQueue = 0xE067 case gmdRepeat = 0xE040 case gmdRepeatOne = 0xE041 case gmdReplay = 0xE042 @@ -462,11 +463,11 @@ public enum GMDType: Int, EnumCollection { case gmdSnooze = 0xE046 case gmdSortByAlpha = 0xE053 case gmdStop = 0xE047 - //case gmdSubscriptions = 0x + case gmdSubscriptions = 0xE064 case gmdSubtitles = 0xE048 case gmdSurroundSound = 0xE049 - //case gmdVideoCall = 0x - //case gmdVideoLabel = 0x + case gmdVideoCall = 0xE070 + case gmdVideoLabel = 0xE071 case gmdVideoLibrary = 0xE04A case gmdVideocam = 0xE04B case gmdVideocamOff = 0xE04C @@ -475,47 +476,47 @@ public enum GMDType: Int, EnumCollection { case gmdVolumeOff = 0xE04F case gmdVolumeUp = 0xE050 case gmdWeb = 0xE051 - //case gmdWebAsset = 0x - //case gmdAlternateEmail = 0x + case gmdWebAsset = 0xE069 + case gmdAlternateEmail = 0xE0E6 case gmdBusiness = 0xE0AF case gmdCall = 0xE0B0 case gmdCallEnd = 0xE0B1 case gmdCallMade = 0xE0B2 case gmdCallMerge = 0xE0B3 case gmdCallMissed = 0xE0B4 - //case gmdCallMissedOutgoing = 0x + case gmdCallMissedOutgoing = 0xE0E4 case gmdCallReceived = 0xE0B5 case gmdCallSplit = 0xE0B6 - //case gmdCancelPresentation = 0x - //case gmdCellWifi = 0x + case gmdCancelPresentation = 0xE0E9 + case gmdCellWifi = 0xE0EC //Note - this isn't quite the same as the icon on material.io - possibly a versioning issue case gmdChat = 0xE0B7 case gmdChatBubble = 0xE0CA case gmdChatBubbleOutline = 0xE0CB case gmdClearAll = 0xE0B8 case gmdComment = 0xE0B9 - //case gmdContactMail = 0x + case gmdContactMail = 0xE0D0 case gmdContactPhone = 0xE0CF case gmdContacts = 0xE0BA - //case gmdDesktopAccessDisabled = 0x + case gmdDesktopAccessDisabled = 0xE99D case gmdDialerSip = 0xE0BB case gmdDialpad = 0xE0BC - //case gmdDomainDisabled = 0x - //case gmdDuo = 0x + case gmdDomainDisabled = 0xE0EF + case gmdDuo = 0xE9A5 case gmdEmail = 0xE0BE case gmdForum = 0xE0BF - //case gmdImportContacts = 0x + case gmdImportContacts = 0xE0E0 case gmdImportExport = 0xE0C3 case gmdInvertColorsOff = 0xE0C4 - //case gmdListAlt = 0x + case gmdListAlt = 0xE0EE case gmdLiveHelp = 0xE0C6 case gmdLocationOff = 0xE0C7 case gmdLocationOn = 0xE0C8 - //case gmdMailOutline = 0x + case gmdMailOutline = 0xE0E1 case gmdMessage = 0xE0C9 - //case gmdMobileScreenShare = 0x + case gmdMobileScreenShare = 0xE0E7 case gmdNoSim = 0xE0CC - //case gmdPausePresentation = 0x - //case gmdPersonAddDisabled = 0x + case gmdPausePresentation = 0xE0EA + case gmdPersonAddDisabled = 0xE9CB case gmdPhone = 0xE0CD case gmdPhonelinkErase = 0xE0DB case gmdPhonelinkLock = 0xE0DC @@ -523,20 +524,20 @@ public enum GMDType: Int, EnumCollection { case gmdPhonelinkSetup = 0xE0DE case gmdPortableWifiOff = 0xE0CE case gmdPresentToAll = 0xE0DF - //case gmdPrintDisabled = 0x + case gmdPrintDisabled = 0xE9CF case gmdRingVolume = 0xE0D1 - //case gmdRssFeed = 0x - //case gmdScreenShare = 0x - //case gmdSentimentSatisfiedAlt = 0x + case gmdRssFeed = 0xE0E5 + case gmdScreenShare = 0xE0E2 + case gmdSentimentSatisfiedAlt = 0xE0ED case gmdSpeakerPhone = 0xE0D2 case gmdStayCurrentLandscape = 0xE0D3 case gmdStayCurrentPortrait = 0xE0D4 case gmdStayPrimaryLandscape = 0xE0D5 case gmdStayPrimaryPortrait = 0xE0D6 - //case gmdStopScreenShare = 0x + case gmdStopScreenShare = 0xE0E3 case gmdSwapCalls = 0xE0D7 case gmdTextsms = 0xE0D8 - //case gmdUnsubscribe = 0x + case gmdUnsubscribe = 0xE0EB case gmdVoicemail = 0xE0D9 case gmdVpnKey = 0xE0DA case gmdAdd = 0xE145 @@ -545,29 +546,29 @@ public enum GMDType: Int, EnumCollection { case gmdAddCircleOutline = 0xE148 case gmdArchive = 0xE149 case gmdBackspace = 0xE14A - //case gmdBallot = 0x + case gmdBallot = 0xE172 case gmdBlock = 0xE14B case gmdClear = 0xE14C case gmdCreate = 0xE150 - //case gmdDeleteSweep = 0x + case gmdDeleteSweep = 0xE16C case gmdDrafts = 0xE151 - //case gmdFileCopy = 0x + case gmdFileCopy = 0xE173 case gmdFilterList = 0xE152 case gmdFlag = 0xE153 case gmdFontDownload = 0xE167 case gmdForward = 0xE154 case gmdGesture = 0xE155 - //case gmdHowToReg = 0x - //case gmdHowToVote = 0x + case gmdHowToReg = 0xE174 + case gmdHowToVote = 0xE175 case gmdInbox = 0xE156 case gmdLink = 0xE157 - //case gmdLinkOff = 0x - //case gmdLowPriority = 0x + case gmdLinkOff = 0xE16F + case gmdLowPriority = 0xE16D case gmdMail = 0xE158 case gmdMarkunread = 0xE159 - //case gmdMoveToInbox = 0x - //case gmdNextWeek = 0x - //case gmdOutlinedFlag = 0x + case gmdMoveToInbox = 0xE168 + case gmdNextWeek = 0xE16A + case gmdOutlinedFlag = 0xE16E case gmdRedo = 0xE15A case gmdRemove = 0xE15B case gmdRemoveCircle = 0xE15C @@ -575,23 +576,23 @@ public enum GMDType: Int, EnumCollection { case gmdReply = 0xE15E case gmdReplyAll = 0xE15F case gmdReport = 0xE160 - //case gmdReportOff = 0x + case gmdReportOff = 0xE170 case gmdSave = 0xE161 - //case gmdSaveAlt = 0x + case gmdSaveAlt = 0xE171 case gmdSelectAll = 0xE162 case gmdSend = 0xE163 case gmdSort = 0xE164 case gmdTextFormat = 0xE165 - //case gmdUnarchive = 0x + case gmdUnarchive = 0xE169 case gmdUndo = 0xE166 - //case gmdWaves = 0x - //case gmdWeekend = 0x - //case gmdWhereToVote = 0x + case gmdWaves = 0xE176 + case gmdWeekend = 0xE16B + case gmdWhereToVote = 0xE177 case gmdAccessAlarm = 0xE190 case gmdAccessAlarms = 0xE191 case gmdAccessTime = 0xE192 case gmdAddAlarm = 0xE193 - //case gmdAddToHomeScreen = 0x + case gmdAddToHomeScreen = 0xE1FE case gmdAirplanemodeActive = 0xE195 case gmdAirplanemodeInactive = 0xE194 //case gmdBattery20 = 0x @@ -629,8 +630,8 @@ public enum GMDType: Int, EnumCollection { case gmdGraphicEq = 0xE1B8 case gmdLocationDisabled = 0xE1B6 case gmdLocationSearching = 0xE1B7 - //case gmdMobileFriendly = 0x - //case gmdMobileOff = 0x + case gmdMobileFriendly = 0xE200 + case gmdMobileOff = 0xE201 case gmdNetworkCell = 0xE1B9 case gmdNetworkWifi = 0xE1BA case gmdNfc = 0xE1BB @@ -670,10 +671,10 @@ public enum GMDType: Int, EnumCollection { case gmdWidgets = 0xE1BD case gmdWifiLock = 0xE1E1 case gmdWifiTethering = 0xE1E2 - //case gmdAddComment = 0x + case gmdAddComment = 0xE266 case gmdAttachFile = 0xE226 case gmdAttachMoney = 0xE227 - //case gmdBarChart = 0x + case gmdBarChart = 0xE26B case gmdBorderAll = 0xE228 case gmdBorderBottom = 0xE229 case gmdBorderClear = 0xE22A @@ -686,8 +687,8 @@ public enum GMDType: Int, EnumCollection { case gmdBorderStyle = 0xE231 case gmdBorderTop = 0xE232 case gmdBorderVertical = 0xE233 - //case gmdBubbleChart = 0x - //case gmdDragHandle = 0x + case gmdBubbleChart = 0xE6DD + case gmdDragHandle = 0xE25D case gmdFormatAlignCenter = 0xE234 case gmdFormatAlignJustify = 0xE235 case gmdFormatAlignLeft = 0xE236 @@ -703,43 +704,43 @@ public enum GMDType: Int, EnumCollection { case gmdFormatLineSpacing = 0xE240 case gmdFormatListBulleted = 0xE241 case gmdFormatListNumbered = 0xE242 - //case gmdFormatListNumberedRtl = 0x + case gmdFormatListNumberedRtl = 0xE267 case gmdFormatPaint = 0xE243 case gmdFormatQuote = 0xE244 - //case gmdFormatShapes = 0x + case gmdFormatShapes = 0xE25E case gmdFormatSize = 0xE245 case gmdFormatStrikethrough = 0xE246 case gmdFormatTextdirectionLToR = 0xE247 case gmdFormatTextdirectionRToL = 0xE248 case gmdFormatUnderlined = 0xE249 case gmdFunctions = 0xE24A - //case gmdHighlight = 0x + case gmdHighlight = 0xE25F case gmdInsertChart = 0xE24B - //case gmdInsertChartOutlined = 0x + case gmdInsertChartOutlined = 0xE26A case gmdInsertComment = 0xE24C case gmdInsertDriveFile = 0xE24D case gmdInsertEmoticon = 0xE24E case gmdInsertInvitation = 0xE24F case gmdInsertLink = 0xE250 case gmdInsertPhoto = 0xE251 - //case gmdLinearScale = 0x + case gmdLinearScale = 0xE260 case gmdMergeType = 0xE252 case gmdModeComment = 0xE253 - //case gmdMonetizationOn = 0x + case gmdMonetizationOn = 0xE263 case gmdMoneyOff = 0xE25C - //case gmdMultilineChart = 0x - //case gmdNotes = 0x - //case gmdPieChart = 0x + case gmdMultilineChart = 0xE6DF + case gmdNotes = 0xE26C + case gmdPieChart = 0xE64C case gmdPublish = 0xE255 - //case gmdScatterPlot = 0x - //case gmdScore = 0x - //case gmdShortText = 0x - //case gmdShowChart = 0x + case gmdScatterPlot = 0xE268 + case gmdScore = 0xE269 + case gmdShortText = 0xE261 + case gmdShowChart = 0xE6E1 case gmdSpaceBar = 0xE256 case gmdStrikethroughS = 0xE257 - //case gmdTableChart = 0x - //case gmdTextFields = 0x - //case gmdTitle = 0x + case gmdTableChart = 0xE265 + case gmdTextFields = 0xE262 + case gmdTitle = 0xE264 case gmdVerticalAlignBottom = 0xE258 case gmdVerticalAlignCenter = 0xE259 case gmdVerticalAlignTop = 0xE25A @@ -752,7 +753,7 @@ public enum GMDType: Int, EnumCollection { case gmdCloudOff = 0xE2C1 case gmdCloudQueue = 0xE2C2 case gmdCloudUpload = 0xE2C3 - //case gmdCreateNewFolder = 0x + case gmdCreateNewFolder = 0xE2CC case gmdFolder = 0xE2C7 case gmdFolderOpen = 0xE2C8 case gmdFolderShared = 0xE2C9 @@ -764,8 +765,8 @@ public enum GMDType: Int, EnumCollection { case gmdDesktopWindows = 0xE30C case gmdDeveloperBoard = 0xE30D case gmdDeviceHub = 0xE335 - //case gmdDeviceUnknown = 0x - //case gmdDevicesOther = 0x + case gmdDeviceUnknown = 0xE339 + case gmdDevicesOther = 0xE337 case gmdDock = 0xE30E case gmdGamepad = 0xE30F case gmdHeadset = 0xE310 @@ -804,10 +805,10 @@ public enum GMDType: Int, EnumCollection { case gmdTabletMac = 0xE331 case gmdToys = 0xE332 case gmdTv = 0xE333 - //case gmdVideogameAsset = 0x + case gmdVideogameAsset = 0xE338 case gmdWatch = 0xE334 - //case gmdAddAPhoto = 0x - //case gmdAddPhotoAlternate = 0x + case gmdAddAPhoto = 0xE439 + case gmdAddPhotoAlternate = 0xE43E case gmdAddToPhotos = 0xE39D case gmdAdjust = 0xE39E case gmdAssistant = 0xE39F @@ -826,7 +827,7 @@ public enum GMDType: Int, EnumCollection { case gmdBrightness7 = 0xE3AC case gmdBrokenImage = 0xE3AD case gmdBrush = 0xE3AE - //case gmdBurstMode = 0x + case gmdBurstMode = 0xE43C case gmdCamera = 0xE3AF case gmdCameraAlt = 0xE3B0 case gmdCameraFront = 0xE3B1 @@ -851,7 +852,7 @@ public enum GMDType: Int, EnumCollection { case gmdCropLandscape = 0xE3C3 case gmdCropOriginal = 0xE3C4 case gmdCropPortrait = 0xE3C5 - //case gmdCropRotate = 0x + case gmdCropRotate = 0xE437 case gmdCropSquare = 0xE3C6 case gmdDehaze = 0xE3C7 case gmdDetails = 0xE3C8 @@ -897,13 +898,13 @@ public enum GMDType: Int, EnumCollection { case gmdHealing = 0xE3F3 case gmdImage = 0xE3F4 case gmdImageAspectRatio = 0xE3F5 - //case gmdImageSearch = 0x + case gmdImageSearch = 0xE43F case gmdIso = 0xE3F6 case gmdLandscape = 0xE3F7 case gmdLeakAdd = 0xE3F8 case gmdLeakRemove = 0xE3F9 case gmdLens = 0xE3FA - //case gmdLinkedCamera = 0x + case gmdLinkedCamera = 0xE438 case gmdLooks = 0xE3FC case gmdLooks3 = 0xE3FB case gmdLooks4 = 0xE3FD @@ -914,9 +915,9 @@ public enum GMDType: Int, EnumCollection { case gmdLoupe = 0xE402 case gmdMonochromePhotos = 0xE403 case gmdMovieCreation = 0xE404 - //case gmdMovieFilter = 0x + case gmdMovieFilter = 0xE43A case gmdMusicNote = 0xE405 - //case gmdMusicOff = 0x + case gmdMusicOff = 0xE440 case gmdNature = 0xE406 case gmdNaturePeople = 0xE407 case gmdNavigateBefore = 0xE408 @@ -930,7 +931,7 @@ public enum GMDType: Int, EnumCollection { case gmdPhoto = 0xE410 case gmdPhotoAlbum = 0xE411 case gmdPhotoCamera = 0xE412 - //case gmdPhotoFilter = 0x + case gmdPhotoFilter = 0xE43B case gmdPhotoLibrary = 0xE413 case gmdPhotoSizeSelectActual = 0xE432 case gmdPhotoSizeSelectLarge = 0xE433 @@ -941,7 +942,7 @@ public enum GMDType: Int, EnumCollection { case gmdRotate90DegreesCcw = 0xE418 case gmdRotateLeft = 0xE419 case gmdRotateRight = 0xE41A - //case gmdShutterSpeed = 0x + case gmdShutterSpeed = 0xE43D case gmdSlideshow = 0xE41B case gmdStraighten = 0xE41C case gmdStyle = 0xE41D @@ -965,13 +966,13 @@ public enum GMDType: Int, EnumCollection { case gmdWbIncandescent = 0xE42E case gmdWbIridescent = 0xE436 case gmdWbSunny = 0xE430 - //case gmd360 = 0x - //case gmdAddLocation = 0x - //case gmdAtm = 0x + case gmd360 = 0xE577 + case gmdAddLocation = 0xE567 + case gmdAtm = 0xE573 case gmdBeenhere = 0xE52D - //case gmdCategory = 0x - //case gmdCompassCalibration = 0x - //case gmdDepartureBoard = 0x + case gmdCategory = 0xE574 + case gmdCompassCalibration = 0xE57C + case gmdDepartureBoard = 0xE576 case gmdDirections = 0xE52E case gmdDirectionsBike = 0xE52F case gmdDirectionsBoat = 0xE532 @@ -982,10 +983,10 @@ public enum GMDType: Int, EnumCollection { case gmdDirectionsSubway = 0xE533 case gmdDirectionsTransit = 0xE535 case gmdDirectionsWalk = 0xE536 - //case gmdEditAttributes = 0x - //case gmdEditLocation = 0x - //case gmdEvStation = 0x - //case gmdFastfood = 0x + case gmdEditAttributes = 0xE578 + case gmdEditLocation = 0xE568 + case gmdEvStation = 0xE56D + case gmdFastfood = 0xE57A case gmdFlight = 0xE539 case gmdHotel = 0xE53A case gmdLayers = 0xE53B @@ -1020,42 +1021,42 @@ public enum GMDType: Int, EnumCollection { case gmdLocalShipping = 0xE558 case gmdLocalTaxi = 0xE559 case gmdMap = 0xE55B - //case gmdMoney = 0x + case gmdMoney = 0xE57D case gmdMyLocation = 0xE55C case gmdNavigation = 0xE55D - //case gmdNearMe = 0x - //case gmdNotListedLocation = 0x + case gmdNearMe = 0xE569 + case gmdNotListedLocation = 0xE575 case gmdPersonPin = 0xE55A - //case gmdPersonPinCircle = 0x + case gmdPersonPinCircle = 0xE56A case gmdPinDrop = 0xE55E case gmdPlace = 0xE55F case gmdRateReview = 0xE560 - //case gmdRestaurant = 0x + case gmdRestaurant = 0xE56C case gmdRestaurantMenu = 0xE561 case gmdSatellite = 0xE562 case gmdStoreMallDirectory = 0xE563 - //case gmdStreetview = 0x - //case gmdSubway = 0x + case gmdStreetview = 0xE56E + case gmdSubway = 0xE56F case gmdTerrain = 0xE564 case gmdTraffic = 0xE565 - //case gmdTrain = 0x - //case gmdTram = 0x - //case gmdTransferWithinAStation = 0x - //case gmdTransitEnterexit = 0x - //case gmdTripOrigin = 0x - //case gmdZoomOutMap = 0x + case gmdTrain = 0xE570 + case gmdTram = 0xE571 + case gmdTransferWithinAStation = 0xE572 + case gmdTransitEnterexit = 0xE579 + case gmdTripOrigin = 0xE57B + case gmdZoomOutMap = 0xE56B case gmdApps = 0xE5C3 case gmdArrowBack = 0xE5C4 - //case gmdArrowBackIos = 0x - //case gmdArrowDownward = 0x + case gmdArrowBackIos = 0xE5E0 + case gmdArrowDownward = 0xE5DB case gmdArrowDropDown = 0xE5C5 case gmdArrowDropDownCircle = 0xE5C6 case gmdArrowDropUp = 0xE5C7 case gmdArrowForward = 0xE5C8 - //case gmdArrowForwardIos = 0x - //case gmdArrowLeft = 0x - //case gmdArrowRight = 0x - //case gmdArrowUpward = 0x + case gmdArrowForwardIos = 0xE5E1 + case gmdArrowLeft = 0xE5DE + case gmdArrowRight = 0xE5DF + case gmdArrowUpward = 0xE5D8 case gmdCancel = 0xE5C9 case gmdCheck = 0xE5CA case gmdChevronLeft = 0xE5CB @@ -1063,18 +1064,18 @@ public enum GMDType: Int, EnumCollection { case gmdClose = 0xE5CD case gmdExpandLess = 0xE5CE case gmdExpandMore = 0xE5CF - //case gmdFirstPage = 0x + case gmdFirstPage = 0xE5DC case gmdFullscreen = 0xE5D0 case gmdFullscreenExit = 0xE5D1 - //case gmdLastPage = 0x + case gmdLastPage = 0xE5DD case gmdMenu = 0xE5D2 case gmdMoreHoriz = 0xE5D3 case gmdMoreVert = 0xE5D4 case gmdRefresh = 0xE5D5 - //case gmdSubdirectoryArrowLeft = 0x - //case gmdSubdirectoryArrowRight = 0x - //case gmdUnfoldLess = 0x - //case gmdUnfoldMore = 0x + case gmdSubdirectoryArrowLeft = 0xE5D9 + case gmdSubdirectoryArrowRight = 0xE5DA + case gmdUnfoldLess = 0xE5D6 + case gmdUnfoldMore = 0xE5D7 case gmdAdb = 0xE60E case gmdAirlineSeatFlat = 0xE630 case gmdAirlineSeatFlatAngled = 0xE631 @@ -1088,7 +1089,7 @@ public enum GMDType: Int, EnumCollection { case gmdConfirmationNumber = 0xE638 case gmdDiscFull = 0xE610 case gmdDriveEta = 0xE613 - //case gmdEnhancedEncryption = 0x + case gmdEnhancedEncryption = 0xE63F case gmdEventAvailable = 0xE614 case gmdEventBusy = 0xE615 case gmdEventNote = 0xE616 @@ -1096,21 +1097,21 @@ public enum GMDType: Int, EnumCollection { case gmdLiveTv = 0xE639 case gmdMms = 0xE618 case gmdMore = 0xE619 - //case gmdNetworkCheck = 0x + case gmdNetworkCheck = 0xE640 case gmdNetworkLocked = 0xE61A - //case gmdNoEncryption = 0x + case gmdNoEncryption = 0xE641 case gmdOndemandVideo = 0xE63A case gmdPersonalVideo = 0xE63B case gmdPhoneBluetoothSpeaker = 0xE61B - //case gmdPhoneCallback = 0x + case gmdPhoneCallback = 0xE649 case gmdPhoneForwarded = 0xE61C case gmdPhoneInTalk = 0xE61D case gmdPhoneLocked = 0xE61E case gmdPhoneMissed = 0xE61F case gmdPhonePaused = 0xE620 case gmdPower = 0xE63C - //case gmdPowerOff = 0x - //case gmdPriorityHigh = 0x + case gmdPowerOff = 0xE646 + case gmdPriorityHigh = 0xE645 case gmdSdCard = 0xE623 case gmdSms = 0xE625 case gmdSmsFailed = 0xE626 @@ -1120,34 +1121,34 @@ public enum GMDType: Int, EnumCollection { case gmdSystemUpdate = 0xE62A case gmdTapAndPlay = 0xE62B case gmdTimeToLeave = 0xE62C - //case gmdTvOff = 0x + case gmdTvOff = 0xE647 case gmdVibration = 0xE62D case gmdVoiceChat = 0xE62E case gmdVpnLock = 0xE62F case gmdWc = 0xE63D case gmdWifi = 0xE63E - //case gmdWifiOff = 0x - //case gmdAcUnit = 0x - //case gmdAirportShuttle = 0x - //case gmdAllInclusive = 0x - //case gmdBeachAccess = 0x - //case gmdBusinessCenter = 0x - //case gmdCasino = 0x - //case gmdChildCare = 0x - //case gmdChildFriendly = 0x - //case gmdFitnessCenter = 0x - //case gmdFreeBreakfast = 0x - //case gmdGolfCourse = 0x - //case gmdHotTub = 0x - //case gmdKitchen = 0x - //case gmdMeetingRoom = 0x - //case gmdNoMeetingRoom = 0x - //case gmdPool = 0x - //case gmdRoomService = 0x - //case gmdRvHookup = 0x - //case gmdSmokeFree = 0x - //case gmdSmokingRooms = 0x - //case gmdSpa = 0x + case gmdWifiOff = 0xE648 + case gmdAcUnit = 0xEB3B + case gmdAirportShuttle = 0xEB3C + case gmdAllInclusive = 0xEB3D + case gmdBeachAccess = 0xEB3E + case gmdBusinessCenter = 0xEB3F + case gmdCasino = 0xEB40 + case gmdChildCare = 0xEB41 + case gmdChildFriendly = 0xEB42 + case gmdFitnessCenter = 0xEB43 + case gmdFreeBreakfast = 0xEB44 + case gmdGolfCourse = 0xEB45 + case gmdHotTub = 0xEB46 + case gmdKitchen = 0xEB47 + case gmdMeetingRoom = 0xEB4F + case gmdNoMeetingRoom = 0xEB4E + case gmdPool = 0xEB48 + case gmdRoomService = 0xEB49 + case gmdRvHookup = 0xE642 + case gmdSmokeFree = 0xEB4A + case gmdSmokingRooms = 0xEB4B + case gmdSpa = 0xEB4C case gmdCake = 0xE7E9 case gmdDomain = 0xE7EE case gmdGroup = 0xE7EF @@ -1171,13 +1172,13 @@ public enum GMDType: Int, EnumCollection { case gmdPoll = 0xE801 case gmdPublic = 0xE80B case gmdSchool = 0xE80C - //case gmdSentimentDissatisfied = 0x - //case gmdSentimentSatisfied = 0x - //case gmdSentimentVeryDissatisfied = 0x - //case gmdSentimentVerySatisfied = 0x + case gmdSentimentDissatisfied = 0xE811 + case gmdSentimentSatisfied = 0xE813 + case gmdSentimentVeryDissatisfied = 0xE814 + case gmdSentimentVerySatisfied = 0xE815 case gmdShare = 0xE80D - //case gmdThumbDownAlt = 0x - //case gmdThumbUpAlt = 0x + case gmdThumbDownAlt = 0xE816 + case gmdThumbUpAlt = 0xE817 case gmdWhatshot = 0xE80E case gmdCheckBox = 0xE834 case gmdCheckBoxOutlineBlank = 0xE835 @@ -1187,26 +1188,29 @@ public enum GMDType: Int, EnumCollection { case gmdStar = 0xE838 case gmdStarBorder = 0xE83A case gmdStarHalf = 0xE839 - //case gmdToggleOff = 0x - //case gmdToggleOn = 0x + case gmdToggleOff = 0xE9F5 + case gmdToggleOn = 0xE9F6 static var count: Int { return GMDType.allValues.count } - public var text: String? { - + public var text: String { return String(utf16CodeUnits: [UInt16(rawValue)], count: 1) } static func showAll() { for item in GMDType.cases() { - let number = item.text!.utf16.first! + let number = item.text.utf16.first! let hex = String(format:"%02X", number) print("case \(item) = 0x\(hex),") } } + + static func font() -> UIFont { + return UIFont(name: GMDStruct.FontName, size: 23)! + } } From df0063c2b170dbe9203f44ec769d1f27239a2dcb Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Sat, 25 Aug 2018 15:46:26 +0100 Subject: [PATCH 15/25] readme update --- README.md | 49 ++++++++++--------------------------------------- 1 file changed, 10 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index f018de9..64c3fc8 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,23 @@ # Google Material Design Icons Swift -Forked from original project by @vaberer +Forked from original project by [@vaberer](https://twitter.com/vaberer) -Updated for Swift 4 and rewritten to simplify the code and make it easier to update +Code is somewhat rewritten to make updating icons much easier - but it is almost completely compatible with the original. -The code now lists all icons for the 3.0.1 release, and includes the updated font file +Updated for Swift 4. +The code now lists many more icons from the 3.0.1 release, and includes the updated font file -However - updating the code points is a manual process - so most new icons are still commented out. -If you want a new icon, you just have to find and update the codepoint. See instructions in the demo project UpdatingNotes.txt on how to do that. +Note - I will update to Swift 4.2 as soon as that is released to avoid the dependency on EnumCollection - -Various convenience methods have been updated to make them even more convenient. - -![Font Awesome Swift](https://github.com/Vaberer/Font-Awesome-Swift/blob/master/resources/opensource_matters.png) - -Originally by: [@vaberer](https://twitter.com/vaberer) - -I like ★. Do not forget to ★ this super convenient library. +If you want a new icon, you just have to find and update the codepoint. +See instructions in the demo project UpdatingNotes.txt on how to do that. - -#There is also a very popular [Font Awesome](https://github.com/Vaberer/Font-Awesome-Swift) library which you will love! - +Various convenience methods have been updated to make them even more convenient. -Google Material Design Icons Swift library for iOS. No image icons any more. Using Google Material Design Icons Swift library is very easy to use. Look at the demo app which shows all icons and their names or just visit [Google Design Material Icons](https://www.google.com/design/icons/). +Google Material Design Icons Swift library for iOS. It uses font glyphs rather than images, so they can be displayed perfectly at any size & resolution. [Google Design Material Icons](https://www.google.com/design/icons/).

@@ -41,15 +33,6 @@ Google Material Design Icons Swift library for iOS. No image icons any more. Usi ### CocoaPods -[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. - -CocoaPods 0.36 adds supports for Swift and embedded frameworks. You can install it with the following command: - -```bash -$ gem install cocoapods -``` - -To integrate Google Material Design Icons Swift into your Xcode project using CocoaPods, specify it in your `Podfile`: ```ruby source 'https://github.com/CocoaPods/Specs.git' @@ -59,24 +42,12 @@ use_frameworks! pod 'Google-Material-Design-Icons-Swift', '~> 1.0.1' ``` -Then, run the following command: - -```bash -$ pod install -``` Do not forget to import to your swift files where you want to use this library: ```swift import Google_Material_Design_Icons_Swift ``` -### Manually - -1. Copy `GMDIcon.swift` and `GMDIcons.ttf` files into your project -2. Check to import `GMDIcons.ttf` in project, "Project" > "Target" > "Copy Bundle Resources" - - - ## Usage Super easy way how to add an icon. @@ -116,7 +87,7 @@ Super easy way how to add an icon. -## Author +## Original Author Patrik Vaberer, patrik.vaberer@gmail.com From 3a913b466fca17125acb0edf935cd29ce11c6f01 Mon Sep 17 00:00:00 2001 From: Rob Jonson Date: Sat, 25 Aug 2018 15:50:09 +0100 Subject: [PATCH 16/25] update podfile details --- README.md | 11 ++++------- resources/helper.png | Bin 33399 -> 0 bytes 2 files changed, 4 insertions(+), 7 deletions(-) delete mode 100644 resources/helper.png diff --git a/README.md b/README.md index 64c3fc8..5b75b4e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,9 @@ Code is somewhat rewritten to make updating icons much easier - but it is almost Updated for Swift 4. The code now lists many more icons from the 3.0.1 release, and includes the updated font file -Note - I will update to Swift 4.2 as soon as that is released to avoid the dependency on EnumCollection +Note - I will update to Swift 4.2 as soon as that is released to avoid the dependency on EnumCollection. + +At that point, I'll release a new pod with a new name. If you want a new icon, you just have to find and update the codepoint. @@ -39,7 +41,7 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! -pod 'Google-Material-Design-Icons-Swift', '~> 1.0.1' +pod 'Google-Material-Design-Icons-Swift', git: "https://github.com/ConfusedVorlon/Google-Material-Design-Icons-Swift" ``` Do not forget to import to your swift files where you want to use this library: @@ -50,11 +52,6 @@ import Google_Material_Design_Icons_Swift ## Usage -Super easy way how to add an icon. -

- -

- ### UILabel ```Swift diff --git a/resources/helper.png b/resources/helper.png deleted file mode 100644 index a67b1c1f576c495caede853e39fa6d415b214b8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33399 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 rb(y1@Z4Cx$9Sc Date: Thu, 13 Sep 2018 12:45:58 +0100 Subject: [PATCH 17/25] Updated to swift 4.2 --- Example/GMD Swift.xcodeproj/project.pbxproj | 4 -- Example/GMD Swift/Base.lproj/Main.storyboard | 17 +++----- Example/GMD Swift/CaseGenerator.swift | 2 +- Example/GMD Swift/MissingViewController.swift | 13 +----- Example/GMD Swift/ViewController.swift | 12 +----- LICENSE | 1 + Source/EnumCollection.swift | 37 ------------------ Source/GMDIcon.swift | 6 +-- google-material-design-icons-swift.podspec | 20 +++++----- resources/image1.png | Bin 98168 -> 134007 bytes 10 files changed, 25 insertions(+), 87 deletions(-) delete mode 100644 Source/EnumCollection.swift diff --git a/Example/GMD Swift.xcodeproj/project.pbxproj b/Example/GMD Swift.xcodeproj/project.pbxproj index 060b580..503a5d1 100644 --- a/Example/GMD Swift.xcodeproj/project.pbxproj +++ b/Example/GMD Swift.xcodeproj/project.pbxproj @@ -18,7 +18,6 @@ D44CBB23213061BE002741C7 /* UpdatingNotes.txt in Resources */ = {isa = PBXBuildFile; fileRef = D44CBB22213061BE002741C7 /* UpdatingNotes.txt */; }; D44CBB252130628E002741C7 /* CaseGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44CBB242130628E002741C7 /* CaseGenerator.swift */; }; D44CBB272131790F002741C7 /* MissingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44CBB262131790F002741C7 /* MissingViewController.swift */; }; - D4817F7E21304D2D005F9950 /* EnumCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4817F7D21304D2D005F9950 /* EnumCollection.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -35,7 +34,6 @@ D44CBB22213061BE002741C7 /* UpdatingNotes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = UpdatingNotes.txt; sourceTree = ""; }; D44CBB242130628E002741C7 /* CaseGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaseGenerator.swift; sourceTree = ""; }; D44CBB262131790F002741C7 /* MissingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MissingViewController.swift; sourceTree = ""; }; - D4817F7D21304D2D005F9950 /* EnumCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnumCollection.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -87,7 +85,6 @@ isa = PBXGroup; children = ( 4E19E0251B91B34800825B73 /* GMDIcon.swift */, - D4817F7D21304D2D005F9950 /* EnumCollection.swift */, 4E19E0271B91B35E00825B73 /* GMDIcons.ttf */, ); name = "Source - Google Material Icons Swift"; @@ -172,7 +169,6 @@ 4E19E0261B91B34800825B73 /* GMDIcon.swift in Sources */, 4E19E0101B919AFC00825B73 /* AppDelegate.swift in Sources */, D44CBB252130628E002741C7 /* CaseGenerator.swift in Sources */, - D4817F7E21304D2D005F9950 /* EnumCollection.swift in Sources */, 4E19E0241B919D5400825B73 /* IconCell.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Example/GMD Swift/Base.lproj/Main.storyboard b/Example/GMD Swift/Base.lproj/Main.storyboard index 70e8aa5..9a6e850 100644 --- a/Example/GMD Swift/Base.lproj/Main.storyboard +++ b/Example/GMD Swift/Base.lproj/Main.storyboard @@ -1,13 +1,11 @@ - + - - - + @@ -35,7 +33,7 @@