// // Copyright © 2017 dahua. All rights reserved. // #ifndef DHPubDefine_h #define DHPubDefine_h // 整型索引 typedef NSInteger Index; // 长整型索引 typedef int64_t LongIndex; /// Http类型 typedef NS_ENUM(NSInteger,DHServerPortType) { DHServerPortTypeHttp = 80, //http äº¤äº’æ–¹å¼ DHServerPortTypeHttps = 443 //https äº¤äº’æ–¹å¼ }; //Mark::NVR,å¢žåŠ é€šé“ typedef NS_ENUM(NSInteger, DeviceCatalog) { DeviceCatalogCamera, //æ‘„åƒå¤´ DeviceCatalogBox, //ç›’å DeviceCatalogBoxPart, //ç›’åé…ä»¶ DeviceCatalogNVR, //NVR设备 DeviceCatalogNVRChannel, //NVRè®¾å¤‡é€šé“ DeviceCatalogG1, //报è¦ç½‘å…³ DeviceCatalogG1Part //报è¦ç½‘å…³é…ä»¶ }; typedef NS_ENUM(NSInteger, DHChannelListType) { DHChannelListTypeCoverFlow, DHChannelListTypeList, DHChannelListTypeRecord } ; typedef NS_ENUM(NSInteger, SDCardStatus) { SDCardStatusException = 0,// sdå¡å¼‚常 SDCardStatusNormal = 1,// sd塿£å¸¸ SDCardStatusNoCard = 2,// 没有sdå¡ SDCardStatusFormatting = 3,// æ£åœ¨åˆå§‹åŒ– SDCardStatusError = 4 // ä¸å˜åœ¨ }; //é’ˆå¯¹å…¬æœ‰äº‘æ¶ˆæ¯ typedef NS_ENUM(NSInteger, HlsStatus) { HlsStatusDownloadFail, //下载失败 HlsStatusDownloadBegin, //开始下载 HlsStatusDownloadEnd, //ä¸‹è½½ç»“æŸ HlsStatusSeekSuccess, //å®šä½æˆåŠŸ HlsStatusSeekFail, //定ä½å¤±è´¥ HlsStatusAbortDone, // HlsStatusResumeDone, // HlsStatusKeyError = 11, //密ç ä¸åŒ¹é… }; // åŠ è½½çŠ¶æ€ typedef NS_ENUM(NSInteger, DHLoadingStatus) { DHLoadingStatusUnknown, // 未知 DHLoadingStatusLoading, // åŠ è½½ä¸ DHLoadingStatusSuccess, // åŠ è½½æˆåŠŸ DHLoadingStatusFail, // åŠ è½½å¤±è´¥ }; #pragma mark- å…¬ç”¨å® #define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width #define SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height // å±å¹•宽度 #define DH_SCREEN_SIZE_WIDTH MIN([[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height) // å±å¹•高度 #define DH_SCREEN_SIZE_HEIGHT MAX([[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height) // çŠ¶æ€æ 高度 #define DH_StatusBarHeight ([UIApplication sharedApplication].statusBarFrame.size.height) // 导航æ 高度 #define DHL_NavigationBarHeight 44.f // Tabbar高度 #define DH_TabbarHeight (DH_IS_IPHONEX ? (49.f+34.f) : 49.f) // 导航æ åŠ çŠ¶æ€æ 高度 #define DH_StatusBarAndNavigationBarHeight (44.f + [UIApplication sharedApplication].statusBarFrame.size.height) // 安全区域间隔 #define DH_ViewSafeAreInsets(view) ({UIEdgeInsets insets; if(@available(iOS 11.f, *)) {insets = view.safeAreaInsets;} else {insets = UIEdgeInsetsZero;} insets;}) // 底部安全è·ç¦» #define DH_BottomSafeMargin (DH_IS_IPHONEX ? 34.f : 0.f) // 顶部安全è·ç¦» #define DH_TopSafeMargin (DH_IS_IPHONEX ? 24.f : 0.f) // 横å±å·¦å³çš„安全è·ç¦» #define DH_LandscapeSafeMargin (DH_IS_IPHONEX ? 44.f : 0.f) // 横å±å·¦å³çš„视频安全è·ç¦» #define DH_LandscapeVideoSafeMargin (DH_IS_IPHONEX ? 64.f : 0.f) // 导航æ åŠ çŠ¶æ€æ 高度 #define DH_NavViewHeight (DH_IS_IPHONEX ? 84.f : 64.f) // å±å¹•安全高度 #define DH_ScreenSafeHeight (DH_IS_IPHONEX ? (DH_SCREEN_SIZE_HEIGHT - 58.f) : DH_SCREEN_SIZE_HEIGHT) #define DH_SIZE_SCALE (1.f / [UIScreen mainScreen].scale) // 默认动画时间 #define DH_AnimationDuration 0.4f #define DH_LEGAL_PASSWORD_REGEX @"^[A-Za-z0-9!#%,<=>@_~`\\-\\.\\/\\(\\)\\*\\+\\?\\$\\[\\]\\\\\\^\\{\\}\\|]$" // å¯¹è±¡é‡Šæ”¾æ‰“å° #define DH_LOG_DEALLOCED {NSLog(@" 💔💔💔 %@ dealloced 💔💔💔", NSStringFromClass(self.class));} // å›¾ç‰‡å¿«æ·æ–¹å¼ #define DH_IMAGENAMED(imageName) [UIImage imageNamed:imageName] // ä¸»çª—å£ #define DH_KEY_WINDOW ([UIApplication sharedApplication].delegate).window #define DH_IOS_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue]) //iOSç‰ˆæœ¬å· #define DH_CLIENT_OS_VERSION ([NSString stringWithFormat:@"iOS%@", [[UIDevice currentDevice] systemVersion]]) //iOSç³»ç»Ÿç‰ˆæœ¬å· #define DH_iOS11_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.0) #define DH_iOS10_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) // åˆ¤æ–æ˜¯å¦ä¸ºiPhone 5/5s #define DH_IS_IPHONE5 (DH_SCREEN_SIZE_WIDTH == 320.0f && DH_SCREEN_SIZE_HEIGHT == 568.0f) // åˆ¤æ–æ˜¯å¦ä¸ºiPhone 6/6s/7/8 #define DH_IS_IPHONE6_6s (DH_SCREEN_SIZE_WIDTH == 375.0f && DH_SCREEN_SIZE_HEIGHT == 667.0f) // åˆ¤æ–æ˜¯å¦ä¸ºiPhone X #define DH_IS_IPHONEX ((DH_SCREEN_SIZE_WIDTH == 375.0f && DH_SCREEN_SIZE_HEIGHT == 812.0f) || ((DH_SCREEN_SIZE_WIDTH == 414 && DH_SCREEN_SIZE_HEIGHT == 896))) // åˆ¤æ–æ˜¯å¦ä¸ºiPhone 6Plus/6sPlus/7Plus/8Plus #define DH_IS_IPHONE6Plus_6sPlus (DH_SCREEN_SIZE_WIDTH == 414.0f && DH_SCREEN_SIZE_HEIGHT == 736.0f) #pragma mark - Convinience RETURN Macro #define DH_RETURN_IF_TRUE(checkVal) {if(checkVal) \ {NSLog(@"ðŸŽðŸŽðŸŽ####:%s,Check value true,return...", __FUNCTION__);return;}} //判æ–为真返回 #define DH_RETURN_IF_FALSE(checkVal) {if(!(checkVal)) \ { NSLog(@"ðŸŽðŸŽðŸŽ####:%s,Check value false,return...", __FUNCTION__); return;}} //判æ–为å‡è¿”回 #define DH_RETURN_NIL_IF_TRUE(checkVal) {if(checkVal) \ {NSLog(@" ðŸŽðŸŽðŸŽ####:%s,Check value true,return...", __FUNCTION__);return nil;}} //判æ–为真返回空值 #define DH_RETURN_NIL_IF_FALSE(checkVal) {if(!(checkVal)) \ { NSLog(@" ðŸŽðŸŽðŸŽ####:%s,Check value false,return...", __FUNCTION__); return nil;}} //判æ–为å‡è¿”回空值 #define kAutoHideBarTime (4.0f) //悬浮æ¡è‡ªåЍéšè—æ—¶é—´ #define kPictureHideBarTime (5.0f) //抓图录制图片自动éšè—æ—¶é—´ #pragma mark - æ—¥æœŸæ ¼å¼ //æ—¥æœŸæ ¼å¼ #define kFormatTimeLocal (@"yyyyMMdd'T'HHmmss") #define DEVICE_NAME_MAX_LIMIT 32 #define CHANNEL_NAME_MAX_LIMIT 32 #pragma mark - Text //密ç å…许的å—符(由于3.0.5版本引入安全基线需求,需è¦å…¼å®¹æ—§çš„密ç 规则) #define DH_LEGAL_PASSWORD_OLD @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~`!@#$%^&*()-_+={[]}|\\:;'\"<,>.?/ " #define DH_LEGAL_PASSWORD @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!#$%()*+,-./<=>?@[\\]^_`{|}~" #define DH_LEGAL_ACCOUNT @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@_-." #define DH_LEGAL_ACCOUNT_WITHOUT_LIMIT @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!#$%()*+,-./<=>?@[\\]^_`{|}~&'" #define DH_LEGAL_NUMBER @"1234567890" #define DH_LEGAL_NUMBERnABC @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" #define DH_PASSWORD_MIN_LENGTH 8 //å¯†ç æœ€å°é•¿åº¦ #define DH_PASSWORD_MAX_LENGTH 32 //å¯†ç æœ€å¤§é•¿åº¦ #define DH_USERNAME_MAX_LENGTH 11 //ç™»å½•åæœ€å¤§é•¿åº¦ #define DH_LOG_FUN NSLog(@"FUNCTION____%s____line%d____",__FUNCTION__,__LINE__); // 定义å•例 #pragma mark Singleton #define SYNTHESIZE_SINGLETON_FOR_CLASS_HEADER(__CLASSNAME__) \ \ + (__CLASSNAME__*) sharedInstance; \ #define SYNTHESIZE_SINGLETON_FOR_CLASS(__CLASSNAME__) \ \ + (__CLASSNAME__ *)sharedInstance { \ static __CLASSNAME__ *shared##__CLASSNAME__ = nil; \ static dispatch_once_t onceToken; \ dispatch_once(&onceToken, ^{ \ shared##__CLASSNAME__ = [[self alloc] init]; \ }); \ return shared##__CLASSNAME__; \ } ///MARK: Fix Category Bug #define TT_FIX_CATEGORY_BUG(name) @interface TT_FIX_CATEGORY_BUG_##name:NSObject @end \ @implementation TT_FIX_CATEGORY_BUG_##name @end #endif /* DHPubDefine_h */