mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
MetalEngine demo
This commit is contained in:
@@ -1,19 +1,47 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
import CallScreen
|
||||
import MetalEngine
|
||||
import Display
|
||||
import DustEffect
|
||||
|
||||
public final class ViewController: UIViewController {
|
||||
public final class ViewController: UIViewController {
|
||||
private var dustLayer: DustEffectLayer?
|
||||
|
||||
override public func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
let privateCallScreen = PrivateCallScreen(frame: CGRect())
|
||||
self.view.addSubview(privateCallScreen)
|
||||
self.view.layer.addSublayer(MetalEngine.shared.rootLayer)
|
||||
MetalEngine.shared.rootLayer.frame = CGRect(origin: CGPoint(x: 0.0, y: -101.0), size: CGSize(width: 100.0, height: 100.0))
|
||||
|
||||
privateCallScreen.frame = self.view.bounds
|
||||
privateCallScreen.update(size: self.view.bounds.size, insets: UIEdgeInsets(top: 44.0, left: 0.0, bottom: 0.0, right: 0.0))
|
||||
self.reset()
|
||||
|
||||
let context = MetalContext.shared
|
||||
self.view.layer.addSublayer(context.rootLayer)
|
||||
context.rootLayer.frame = CGRect(origin: CGPoint(x: 0.0, y: -101.0), size: CGSize(width: 100.0, height: 100.0))
|
||||
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.imageTap(_:))))
|
||||
|
||||
self.view.backgroundColor = .white
|
||||
|
||||
SharedDisplayLinkDriver.shared.updateForegroundState(true)
|
||||
}
|
||||
|
||||
func reset() {
|
||||
self.dustLayer?.removeFromSuperlayer()
|
||||
|
||||
let dustLayer = DustEffectLayer()
|
||||
self.dustLayer = dustLayer
|
||||
dustLayer.frame = self.view.bounds
|
||||
|
||||
self.view.layer.addSublayer(dustLayer)
|
||||
}
|
||||
|
||||
@objc private func imageTap(_ recognizer: UITapGestureRecognizer) {
|
||||
if case .ended = recognizer.state {
|
||||
guard let dustLayer else {
|
||||
return
|
||||
}
|
||||
|
||||
let image = UIImage(named: "test")!
|
||||
let itemSize = CGSize(width: 200.0, height: 200.0)
|
||||
let itemFrame = CGRect(origin: CGPoint(x: floor((self.view.bounds.width - itemSize.width) * 0.5), y: floor((self.view.bounds.height - itemSize.height) * 0.5)), size: itemSize)
|
||||
dustLayer.addItem(frame: itemFrame, image: image)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user