Various improvements

This commit is contained in:
Ilya Laktyushin
2024-07-13 18:13:58 +04:00
parent 3134a4ef1b
commit 4216ee3933
125 changed files with 4969 additions and 1474 deletions

View File

@@ -4155,6 +4155,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
}
if !self.didSetupStaticEmojiPack {
self.didSetupStaticEmojiPack = true
self.staticEmojiPack.set(self.context.engine.stickers.loadedStickerPack(reference: .name("staticemoji"), forceActualized: false))
}
@@ -4212,7 +4213,8 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
emojiFile = .single(nil)
}
let _ = emojiFile.start(next: { [weak self] emojiFile in
let _ = (emojiFile
|> deliverOnMainQueue).start(next: { [weak self] emojiFile in
guard let self else {
return
}
@@ -4570,6 +4572,63 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
self.mediaEditor?.play()
}
func addWeather() {
if !self.didSetupStaticEmojiPack {
self.didSetupStaticEmojiPack = true
self.staticEmojiPack.set(self.context.engine.stickers.loadedStickerPack(reference: .name("staticemoji"), forceActualized: false))
}
let emojiFile: Signal<TelegramMediaFile?, NoError>
let emoji = "☀️".strippedEmoji
emojiFile = self.context.animatedEmojiStickers
|> take(1)
|> map { result -> TelegramMediaFile? in
if let file = result[emoji]?.first {
return file.file
} else {
return nil
}
// if case let .result(_, items, _) = result, let match = items.first(where: { item in
// var displayText: String?
// for attribute in item.file.attributes {
// if case let .Sticker(alt, _, _) = attribute {
// displayText = alt
// break
// }
// }
// if let displayText, displayText.hasPrefix(emoji) {
// return true
// } else {
// return false
// }
// }) {
// return match.file
// } else {
// return nil
// }
}
let _ = (emojiFile
|> deliverOnMainQueue).start(next: { [weak self] emojiFile in
guard let self else {
return
}
let scale = 1.0
self.interaction?.insertEntity(
DrawingWeatherEntity(
temperature: "35°C",
style: .white,
icon: emojiFile
),
scale: scale,
position: nil
)
})
}
func updateModalTransitionFactor(_ value: CGFloat, transition: ContainedViewLayoutTransition) {
guard let layout = self.validLayout, case .compact = layout.metrics.widthClass else {
return
@@ -4824,6 +4883,14 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
controller?.dismiss(animated: true)
}
}
controller.addWeather = { [weak self, weak controller] in
if let self {
self.addWeather()
self.stickerScreen = nil
controller?.dismiss(animated: true)
}
}
controller.pushController = { [weak self] c in
self?.controller?.push(c)
}

View File

@@ -4,14 +4,6 @@ import Display
import CoreImage
import MediaEditor
func createEmitterBehavior(type: String) -> NSObject {
let selector = ["behaviorWith", "Type:"].joined(separator: "")
let behaviorClass = NSClassFromString(["CA", "Emitter", "Behavior"].joined(separator: "")) as! NSObject.Type
let behaviorWithType = behaviorClass.method(for: NSSelectorFromString(selector))!
let castedBehaviorWithType = unsafeBitCast(behaviorWithType, to:(@convention(c)(Any?, Selector, Any?) -> NSObject).self)
return castedBehaviorWithType(behaviorClass, NSSelectorFromString(selector), type)
}
private var previousBeginTime: Int = 3
final class StickerCutoutOutlineView: UIView {
@@ -81,7 +73,7 @@ final class StickerCutoutOutlineView: UIView {
let lineEmitterCell = CAEmitterCell()
lineEmitterCell.beginTime = CACurrentMediaTime()
let lineAlphaBehavior = createEmitterBehavior(type: "valueOverLife")
let lineAlphaBehavior = CAEmitterCell.createEmitterBehavior(type: "valueOverLife")
lineAlphaBehavior.setValue("color.alpha", forKey: "keyPath")
lineAlphaBehavior.setValue([0.0, 0.5, 0.8, 0.5, 0.0], forKey: "values")
lineEmitterCell.setValue([lineAlphaBehavior], forKey: "emitterBehaviors")
@@ -107,7 +99,7 @@ final class StickerCutoutOutlineView: UIView {
let glowEmitterCell = CAEmitterCell()
glowEmitterCell.beginTime = CACurrentMediaTime()
let glowAlphaBehavior = createEmitterBehavior(type: "valueOverLife")
let glowAlphaBehavior = CAEmitterCell.createEmitterBehavior(type: "valueOverLife")
glowAlphaBehavior.setValue("color.alpha", forKey: "keyPath")
glowAlphaBehavior.setValue([0.0, 0.32, 0.4, 0.2, 0.0], forKey: "values")
glowEmitterCell.setValue([glowAlphaBehavior], forKey: "emitterBehaviors")