Skip to content

Commit

Permalink
first version
Browse files Browse the repository at this point in the history
  • Loading branch information
Grayon committed Sep 22, 2017
1 parent e17af5b commit 1285199
Show file tree
Hide file tree
Showing 76 changed files with 14,178 additions and 0 deletions.
617 changes: 617 additions & 0 deletions Douyu.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

15 changes: 15 additions & 0 deletions Douyu/AppDelegate.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//
// AppDelegate.h
// Douyu
//
// Created by Grayon on 2017/9/21.
// Copyright © 2017年 Lanskaya. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate>


@end

36 changes: 36 additions & 0 deletions Douyu/AppDelegate.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
//
// AppDelegate.m
// Douyu
//
// Created by Grayon on 2017/9/21.
// Copyright © 2017年 Lanskaya. All rights reserved.
//

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
}


- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Insert code here to tear down your application
}

- (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication
hasVisibleWindows:(BOOL)flag{
if (!flag){
//主窗口显示
[NSApp activateIgnoringOtherApps:NO];
[theApplication.windows.firstObject makeKeyAndOrderFront:self];
}
return YES;
}

@end
58 changes: 58 additions & 0 deletions Douyu/Assets.xcassets/AppIcon.appiconset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"images" : [
{
"idiom" : "mac",
"size" : "16x16",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "16x16",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "32x32",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "32x32",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "128x128",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "128x128",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "256x256",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "256x256",
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "512x512",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "512x512",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
819 changes: 819 additions & 0 deletions Douyu/Base.lproj/Main.storyboard

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions Douyu/Frameworks/BarrageRenderer/BarrageEngine/BarrageCanvas.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Part of BarrageRenderer. Created by UnAsh.
// Blog: http://blog.exbye.com
// Github: https://github.com/unash/BarrageRenderer

// This code is distributed under the terms and conditions of the MIT license.

// Copyright (c) 2015年 UnAsh.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

#import <Cocoa/Cocoa.h>
#import "NSView+UIView.h"

@interface BarrageCanvas : NSView

@end
59 changes: 59 additions & 0 deletions Douyu/Frameworks/BarrageRenderer/BarrageEngine/BarrageCanvas.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Part of BarrageRenderer. Created by UnAsh.
// Blog: http://blog.exbye.com
// Github: https://github.com/unash/BarrageRenderer

// This code is distributed under the terms and conditions of the MIT license.

// Copyright (c) 2015年 UnAsh.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

#import "BarrageCanvas.h"

@implementation BarrageCanvas

- (instancetype)init
{
if (self = [super init]) {
//self.userInteractionEnabled = NO;
//self.backgroundColor = [NSColor clearColor];
[self.layer setBackgroundColor:[NSColor clearColor].CGColor]; //RGB plus Alpha Channel
}
return self;
}

- (void)layoutSubviews
{
[super layoutSubviews];
if (self.superview && !CGRectEqualToRect(self.frame, self.superview.bounds)) {
self.frame = self.superview.bounds;
}
}

- (void)didMoveToSuperview
{
[self resizeSubviewsWithOldSize:[self frame].size];
//[self layoutIfNeeded];
}

- (NSView *)hitTest:(NSPoint)aPoint{
return nil;
}

@end
48 changes: 48 additions & 0 deletions Douyu/Frameworks/BarrageRenderer/BarrageEngine/BarrageClock.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Part of BarrageRenderer. Created by UnAsh.
// Blog: http://blog.exbye.com
// Github: https://github.com/unash/BarrageRenderer

// This code is distributed under the terms and conditions of the MIT license.

// Copyright (c) 2015年 UnAsh.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

#import <Foundation/Foundation.h>
#import "NHDisplayLink.h"

/// 时间引擎
@interface BarrageClock : NSObject <NHDisplayLinkDelegate>

/// 通过回调block初始化时钟,block中返回逻辑时间,其值会受到speed的影响.
+ (instancetype)clockWithHandler:(void (^)(NSTimeInterval time))block;

/// 时间流速,默认值为1.0f; 设置必须大于0,否则无效.
@property(nonatomic,assign)CGFloat speed;

/// 启动时间引擎,根据刷新频率返回逻辑时间.
- (void)start;

/// 关闭时间引擎; 一些都已结束,或者重新开始,或者归于沉寂.
- (void)stop;

/// 暂停,相等于把speed置为0; 不过通过start可以恢复.
- (void)pause;

@end
121 changes: 121 additions & 0 deletions Douyu/Frameworks/BarrageRenderer/BarrageEngine/BarrageClock.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
// Part of BarrageRenderer. Created by UnAsh.
// Blog: http://blog.exbye.com
// Github: https://github.com/unash/BarrageRenderer

// This code is distributed under the terms and conditions of the MIT license.

// Copyright (c) 2015年 UnAsh.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

#import "BarrageClock.h"

@interface BarrageClock()
{
void (^_block)(NSTimeInterval time);
NHDisplayLink * _displayLink; // 周期
NSDate * _previousDate; // 上一次更新时间
CGFloat _pausedSpeed; // 暂停之前的时间流速
}
///是否处于启动状态
@property(nonatomic,assign)BOOL launched;
///逻辑时间
@property(nonatomic,assign)NSTimeInterval time;
@end

@implementation BarrageClock

+ (instancetype)clockWithHandler:(void (^)(NSTimeInterval time))block
{
BarrageClock * clock = [[BarrageClock alloc]initWithHandler:block];
return clock;
}

- (instancetype)initWithHandler:(void (^)(NSTimeInterval time))block
{
if (self = [super init]) {
_block = block;
[self reset];
}
return self;
}

- (void)reset
{
_displayLink = [[NHDisplayLink alloc] init];
_displayLink.delegate = self;
_speed = 1.0f;
_pausedSpeed = _speed;
self.launched = NO;
}

- (void)displayLink:(NHDisplayLink *)displayLink didRequestFrameForTime:(const CVTimeStamp *)outputTimeStamp{
[self updateTime];
_block(self.time);
}
//- (void)update
//{
//
//
//}

- (void)start
{
if (self.launched) {
_speed = _pausedSpeed;
}
else
{
_previousDate = [NSDate date];
[_displayLink setDispatchQueue:dispatch_get_main_queue()];
[_displayLink start];
self.launched = YES;
}
}

- (void)setSpeed:(CGFloat)speed
{
if (speed > 0.0f) {
if (_speed != 0.0f) { // 非暂停状态
_speed = speed;
}
_pausedSpeed = speed;
}
}

- (void)pause
{
_speed = 0.0f;
}

- (void)stop
{
[_displayLink stop];
[self reset];
}

/// 更新逻辑时间系统
- (void)updateTime
{
NSDate * currentDate = [NSDate date];
self.time += [currentDate timeIntervalSinceDate:_previousDate] * self.speed;
_previousDate = currentDate;
}

@end
Loading

0 comments on commit 1285199

Please sign in to comment.