mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
Refactor HashtagSearchUI, StickerPackPreviewUI and related modules [skip ci]
This commit is contained in:
parent
191090f578
commit
519e74f476
148 changed files with 3421 additions and 5911 deletions
15
Telegram-iOS.xcworkspace/contents.xcworkspacedata
generated
15
Telegram-iOS.xcworkspace/contents.xcworkspacedata
generated
|
|
@ -89,6 +89,9 @@
|
|||
<Group
|
||||
location = "container:"
|
||||
name = "Image Processing">
|
||||
<FileRef
|
||||
location = "group:submodules/YuvConversion/YuvConversion.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:submodules/ImageBlur/ImageBlur_Xcode.xcodeproj">
|
||||
</FileRef>
|
||||
|
|
@ -278,6 +281,12 @@
|
|||
<FileRef
|
||||
location = "group:submodules/ChatListSearchItemHeader/ChatListSearchItemHeader_Xcode.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:submodules/ItemListAvatarAndNameInfoItem/ItemListAvatarAndNameInfoItem_Xcode.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:submodules/ItemListPeerActionItem/ItemListPeerActionItem_Xcode.xcodeproj">
|
||||
</FileRef>
|
||||
</Group>
|
||||
<Group
|
||||
location = "container:"
|
||||
|
|
@ -403,6 +412,12 @@
|
|||
<FileRef
|
||||
location = "group:submodules/LanguageSuggestionUI/LanguageSuggestionUI_Xcode.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:submodules/HashtagSearchUI/HashtagSearchUI_Xcode.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:submodules/StickerPackPreviewUI/StickerPackPreviewUI_Xcode.xcodeproj">
|
||||
</FileRef>
|
||||
</Group>
|
||||
<FileRef
|
||||
location = "group:submodules/TelegramUI/TelegramUI_Xcode.xcodeproj">
|
||||
|
|
|
|||
|
|
@ -277,6 +277,8 @@ public final class ChatEmbeddedInterfaceState: PeerChatListEmbeddedInterfaceStat
|
|||
public protocol ChatController: ViewController {
|
||||
var chatLocation: ChatLocation { get }
|
||||
var canReadHistory: ValuePromise<Bool> { get }
|
||||
var parentController: ViewController? { get set }
|
||||
|
||||
func updatePresentationMode(_ mode: ChatControllerPresentationMode)
|
||||
func beginMessageSearch(_ query: String)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,22 @@
|
|||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
D03E3E4A2304B4CC0049C28B /* RLottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E492304B4CC0049C28B /* RLottie.framework */; };
|
||||
D03E3E4F2304B50A0049C28B /* AnimatedStickerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E4D2304B50A0049C28B /* AnimatedStickerNode.swift */; };
|
||||
D03E3E502304B50A0049C28B /* AnimatedStickerUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E4E2304B50A0049C28B /* AnimatedStickerUtils.swift */; };
|
||||
D03E3E522304B51A0049C28B /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E512304B51A0049C28B /* Postbox.framework */; };
|
||||
D03E3E542304B51E0049C28B /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E532304B51E0049C28B /* TelegramCore.framework */; };
|
||||
D03E3E562304B52F0049C28B /* libcompression.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E552304B52F0049C28B /* libcompression.tbd */; };
|
||||
D03E3E582304B53B0049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E572304B53B0049C28B /* Display.framework */; };
|
||||
D03E3E5A2304B5400049C28B /* GZip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E592304B5400049C28B /* GZip.framework */; };
|
||||
D03E3E5C2304B5450049C28B /* Tuples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E5B2304B5450049C28B /* Tuples.framework */; };
|
||||
D03E3E5E2304B5490049C28B /* MediaResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E5D2304B5490049C28B /* MediaResources.framework */; };
|
||||
D03E3E602304B54E0049C28B /* StickerResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E5F2304B54E0049C28B /* StickerResources.framework */; };
|
||||
D03E3E622304B55F0049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E612304B55F0049C28B /* SwiftSignalKit.framework */; };
|
||||
D03E3E642304B5640049C28B /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E632304B5640049C28B /* MobileCoreServices.framework */; };
|
||||
D03E3E672304B61A0049C28B /* AnimationRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E652304B61A0049C28B /* AnimationRenderer.swift */; };
|
||||
D03E3E682304B61A0049C28B /* SoftwareAnimationRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E662304B61A0049C28B /* SoftwareAnimationRenderer.swift */; };
|
||||
D03E3E8E2304B6EC0049C28B /* YuvConversion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E8D2304B6EC0049C28B /* YuvConversion.framework */; };
|
||||
D060187122F35FCD00796784 /* AnimationUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D060186F22F35FCD00796784 /* AnimationUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D06018A422F361E800796784 /* AnimationNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06018A322F361E800796784 /* AnimationNode.swift */; };
|
||||
D06018A722F361F400796784 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D06018A622F361F400796784 /* Foundation.framework */; };
|
||||
|
|
@ -17,6 +33,22 @@
|
|||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
D03E3E492304B4CC0049C28B /* RLottie.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = RLottie.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E4D2304B50A0049C28B /* AnimatedStickerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnimatedStickerNode.swift; sourceTree = "<group>"; };
|
||||
D03E3E4E2304B50A0049C28B /* AnimatedStickerUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnimatedStickerUtils.swift; sourceTree = "<group>"; };
|
||||
D03E3E512304B51A0049C28B /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E532304B51E0049C28B /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E552304B52F0049C28B /* libcompression.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcompression.tbd; path = usr/lib/libcompression.tbd; sourceTree = SDKROOT; };
|
||||
D03E3E572304B53B0049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E592304B5400049C28B /* GZip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GZip.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E5B2304B5450049C28B /* Tuples.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Tuples.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E5D2304B5490049C28B /* MediaResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MediaResources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E5F2304B54E0049C28B /* StickerResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = StickerResources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E612304B55F0049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E632304B5640049C28B /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
|
||||
D03E3E652304B61A0049C28B /* AnimationRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnimationRenderer.swift; sourceTree = "<group>"; };
|
||||
D03E3E662304B61A0049C28B /* SoftwareAnimationRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SoftwareAnimationRenderer.swift; sourceTree = "<group>"; };
|
||||
D03E3E8D2304B6EC0049C28B /* YuvConversion.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = YuvConversion.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D060186C22F35FCD00796784 /* AnimationUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AnimationUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D060186F22F35FCD00796784 /* AnimationUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnimationUI.h; sourceTree = "<group>"; };
|
||||
D060187022F35FCD00796784 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
|
|
@ -33,6 +65,18 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3E8E2304B6EC0049C28B /* YuvConversion.framework in Frameworks */,
|
||||
D03E3E642304B5640049C28B /* MobileCoreServices.framework in Frameworks */,
|
||||
D03E3E622304B55F0049C28B /* SwiftSignalKit.framework in Frameworks */,
|
||||
D03E3E602304B54E0049C28B /* StickerResources.framework in Frameworks */,
|
||||
D03E3E5E2304B5490049C28B /* MediaResources.framework in Frameworks */,
|
||||
D03E3E5C2304B5450049C28B /* Tuples.framework in Frameworks */,
|
||||
D03E3E5A2304B5400049C28B /* GZip.framework in Frameworks */,
|
||||
D03E3E582304B53B0049C28B /* Display.framework in Frameworks */,
|
||||
D03E3E562304B52F0049C28B /* libcompression.tbd in Frameworks */,
|
||||
D03E3E542304B51E0049C28B /* TelegramCore.framework in Frameworks */,
|
||||
D03E3E522304B51A0049C28B /* Postbox.framework in Frameworks */,
|
||||
D03E3E4A2304B4CC0049C28B /* RLottie.framework in Frameworks */,
|
||||
D06018AD22F361FF00796784 /* Lottie.framework in Frameworks */,
|
||||
D06018AB22F361FC00796784 /* AsyncDisplayKit.framework in Frameworks */,
|
||||
D06018A922F361F900796784 /* UIKit.framework in Frameworks */,
|
||||
|
|
@ -64,6 +108,10 @@
|
|||
D060186E22F35FCD00796784 /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3E652304B61A0049C28B /* AnimationRenderer.swift */,
|
||||
D03E3E662304B61A0049C28B /* SoftwareAnimationRenderer.swift */,
|
||||
D03E3E4D2304B50A0049C28B /* AnimatedStickerNode.swift */,
|
||||
D03E3E4E2304B50A0049C28B /* AnimatedStickerUtils.swift */,
|
||||
D06018A322F361E800796784 /* AnimationNode.swift */,
|
||||
D060186F22F35FCD00796784 /* AnimationUI.h */,
|
||||
D06018AE22F3641F00796784 /* FrameworkBundle.swift */,
|
||||
|
|
@ -74,6 +122,18 @@
|
|||
D06018A522F361F400796784 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3E8D2304B6EC0049C28B /* YuvConversion.framework */,
|
||||
D03E3E632304B5640049C28B /* MobileCoreServices.framework */,
|
||||
D03E3E612304B55F0049C28B /* SwiftSignalKit.framework */,
|
||||
D03E3E5F2304B54E0049C28B /* StickerResources.framework */,
|
||||
D03E3E5D2304B5490049C28B /* MediaResources.framework */,
|
||||
D03E3E5B2304B5450049C28B /* Tuples.framework */,
|
||||
D03E3E592304B5400049C28B /* GZip.framework */,
|
||||
D03E3E572304B53B0049C28B /* Display.framework */,
|
||||
D03E3E552304B52F0049C28B /* libcompression.tbd */,
|
||||
D03E3E532304B51E0049C28B /* TelegramCore.framework */,
|
||||
D03E3E512304B51A0049C28B /* Postbox.framework */,
|
||||
D03E3E492304B4CC0049C28B /* RLottie.framework */,
|
||||
D06018AC22F361FF00796784 /* Lottie.framework */,
|
||||
D06018AA22F361FC00796784 /* AsyncDisplayKit.framework */,
|
||||
D06018A822F361F800796784 /* UIKit.framework */,
|
||||
|
|
@ -162,7 +222,11 @@
|
|||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3E672304B61A0049C28B /* AnimationRenderer.swift in Sources */,
|
||||
D03E3E4F2304B50A0049C28B /* AnimatedStickerNode.swift in Sources */,
|
||||
D06018AF22F3641F00796784 /* FrameworkBundle.swift in Sources */,
|
||||
D03E3E502304B50A0049C28B /* AnimatedStickerUtils.swift in Sources */,
|
||||
D03E3E682304B61A0049C28B /* SoftwareAnimationRenderer.swift in Sources */,
|
||||
D06018A422F361E800796784 /* AnimationNode.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
|
|
|||
|
|
@ -11,34 +11,6 @@ import Tuples
|
|||
import MediaResources
|
||||
import StickerResources
|
||||
|
||||
private final class AnimationFrameCache {
|
||||
private var cache: [Int: NSPurgeableData] = [:]
|
||||
|
||||
func get(index: Int, _ f: (NSPurgeableData?) -> Void) {
|
||||
guard let data = self.cache[index] else {
|
||||
f(nil)
|
||||
return
|
||||
}
|
||||
if data.beginContentAccess() {
|
||||
f(data)
|
||||
data.endContentAccess()
|
||||
} else {
|
||||
self.cache.removeValue(forKey: index)
|
||||
f(nil)
|
||||
}
|
||||
}
|
||||
|
||||
func set(index: Int, bytes: UnsafeRawPointer, length: Int) {
|
||||
let data = NSPurgeableData(bytes: bytes, length: length)
|
||||
data.endContentAccess()
|
||||
self.cache[index] = data
|
||||
}
|
||||
|
||||
func removeAll() {
|
||||
self.cache.removeAll()
|
||||
}
|
||||
}
|
||||
|
||||
private let sharedQueue = Queue()
|
||||
|
||||
private class AnimatedStickerNodeDisplayEvents: ASDisplayNode {
|
||||
|
|
@ -70,12 +42,12 @@ private class AnimatedStickerNodeDisplayEvents: ASDisplayNode {
|
|||
}
|
||||
}
|
||||
|
||||
enum AnimatedStickerMode {
|
||||
public enum AnimatedStickerMode {
|
||||
case cached
|
||||
case direct
|
||||
}
|
||||
|
||||
enum AnimatedStickerPlaybackMode {
|
||||
public enum AnimatedStickerPlaybackMode {
|
||||
case once
|
||||
case loop
|
||||
}
|
||||
|
|
@ -329,7 +301,7 @@ public struct AnimatedStickerStatus: Equatable {
|
|||
}
|
||||
}
|
||||
|
||||
final class AnimatedStickerNode: ASDisplayNode {
|
||||
public final class AnimatedStickerNode: ASDisplayNode {
|
||||
private let queue: Queue
|
||||
private var account: Account?
|
||||
private var fileReference: FileMediaReference?
|
||||
|
|
@ -337,8 +309,8 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
private let fetchDisposable = MetaDisposable()
|
||||
private let eventsNode: AnimatedStickerNodeDisplayEvents
|
||||
|
||||
var started: () -> Void = {}
|
||||
var reportedStarted = false
|
||||
public var started: () -> Void = {}
|
||||
private var reportedStarted = false
|
||||
|
||||
private let timer = Atomic<SwiftSignalKit.Timer?>(value: nil)
|
||||
|
||||
|
|
@ -355,7 +327,7 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
return self.playbackStatus.get()
|
||||
}
|
||||
|
||||
var visibility = false {
|
||||
public var visibility = false {
|
||||
didSet {
|
||||
if self.visibility != oldValue {
|
||||
self.updateIsPlaying()
|
||||
|
|
@ -371,7 +343,7 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
}
|
||||
}
|
||||
|
||||
override init() {
|
||||
override public init() {
|
||||
self.queue = sharedQueue
|
||||
self.eventsNode = AnimatedStickerNodeDisplayEvents()
|
||||
|
||||
|
|
@ -392,7 +364,7 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
self.timer.swap(nil)?.invalidate()
|
||||
}
|
||||
|
||||
override func didLoad() {
|
||||
override public func didLoad() {
|
||||
super.didLoad()
|
||||
|
||||
#if targetEnvironment(simulator)
|
||||
|
|
@ -405,7 +377,7 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
self.addSubnode(self.renderer!)
|
||||
}
|
||||
|
||||
func setup(account: Account, resource: MediaResource, fitzModifier: EmojiFitzModifier? = nil, width: Int, height: Int, playbackMode: AnimatedStickerPlaybackMode = .loop, mode: AnimatedStickerMode) {
|
||||
public func setup(account: Account, resource: MediaResource, fitzModifier: EmojiFitzModifier? = nil, width: Int, height: Int, playbackMode: AnimatedStickerPlaybackMode = .loop, mode: AnimatedStickerMode) {
|
||||
if width < 2 || height < 2 {
|
||||
return
|
||||
}
|
||||
|
|
@ -437,7 +409,7 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
}
|
||||
}
|
||||
|
||||
func reset() {
|
||||
public func reset() {
|
||||
self.disposable.set(nil)
|
||||
self.fetchDisposable.set(nil)
|
||||
}
|
||||
|
|
@ -454,7 +426,7 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
}
|
||||
}
|
||||
|
||||
func play() {
|
||||
public func play() {
|
||||
let directData = self.directData
|
||||
let cachedData = self.cachedData
|
||||
let queue = self.queue
|
||||
|
|
@ -517,12 +489,12 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
}
|
||||
}
|
||||
|
||||
func stop() {
|
||||
public func stop() {
|
||||
self.reportedStarted = false
|
||||
self.timer.swap(nil)?.invalidate()
|
||||
}
|
||||
|
||||
func seekToStart() {
|
||||
public func seekToStart() {
|
||||
self.isPlaying = false
|
||||
|
||||
let directData = self.directData
|
||||
|
|
@ -576,7 +548,7 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
}
|
||||
}
|
||||
|
||||
func playIfNeeded() -> Bool {
|
||||
public func playIfNeeded() -> Bool {
|
||||
if !self.isPlaying {
|
||||
self.isPlaying = true
|
||||
self.play()
|
||||
|
|
@ -585,7 +557,7 @@ final class AnimatedStickerNode: ASDisplayNode {
|
|||
return false
|
||||
}
|
||||
|
||||
func updateLayout(size: CGSize) {
|
||||
public func updateLayout(size: CGSize) {
|
||||
self.renderer?.frame = CGRect(origin: CGPoint(), size: size)
|
||||
}
|
||||
}
|
||||
|
|
@ -4,13 +4,13 @@ import SwiftSignalKit
|
|||
import Postbox
|
||||
import Display
|
||||
import TelegramCore
|
||||
import TelegramUIPrivateModule
|
||||
import Compression
|
||||
import GZip
|
||||
import RLottie
|
||||
import MediaResources
|
||||
import MobileCoreServices
|
||||
import MediaResources
|
||||
import YuvConversion
|
||||
|
||||
let colorKeyRegex = try? NSRegularExpression(pattern: "\"k\":\\[[\\d\\.]+\\,[\\d\\.]+\\,[\\d\\.]+\\,[\\d\\.]+\\]")
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ private func transformedWithFitzModifier(data: Data, fitzModifier: EmojiFitzModi
|
|||
}
|
||||
}
|
||||
|
||||
func fetchCompressedLottieFirstFrameAJpeg(data: Data, size: CGSize, fitzModifier: EmojiFitzModifier? = nil, cacheKey: String) -> Signal<TempBoxFile, NoError> {
|
||||
public func fetchCompressedLottieFirstFrameAJpeg(data: Data, size: CGSize, fitzModifier: EmojiFitzModifier? = nil, cacheKey: String) -> Signal<TempBoxFile, NoError> {
|
||||
return Signal({ subscriber in
|
||||
let queue = Queue()
|
||||
|
||||
|
|
@ -182,7 +182,7 @@ private let threadPool: ThreadPool = {
|
|||
}()
|
||||
|
||||
@available(iOS 9.0, *)
|
||||
func experimentalConvertCompressedLottieToCombinedMp4(data: Data, size: CGSize, fitzModifier: EmojiFitzModifier? = nil, cacheKey: String) -> Signal<String, NoError> {
|
||||
public func experimentalConvertCompressedLottieToCombinedMp4(data: Data, size: CGSize, fitzModifier: EmojiFitzModifier? = nil, cacheKey: String) -> Signal<String, NoError> {
|
||||
return Signal({ subscriber in
|
||||
let cancelled = Atomic<Bool>(value: false)
|
||||
|
||||
|
|
@ -3,7 +3,7 @@ import UIKit
|
|||
import AsyncDisplayKit
|
||||
import Display
|
||||
import SwiftSignalKit
|
||||
import TelegramUIPrivateModule
|
||||
import YuvConversion
|
||||
|
||||
final class SoftwareAnimationRenderer: ASDisplayNode, AnimationRenderer {
|
||||
func render(queue: Queue, width: Int, height: Int, bytesPerRow: Int, data: Data, type: AnimationRendererFrameType, completion: @escaping () -> Void) {
|
||||
|
|
@ -0,0 +1,587 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
D03E3D742304AC350049C28B /* HashtagSearchUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E3D722304AC350049C28B /* HashtagSearchUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D03E3D822304ACD90049C28B /* HashtagSearchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3D802304ACD80049C28B /* HashtagSearchControllerNode.swift */; };
|
||||
D03E3D832304ACD90049C28B /* HashtagSearchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3D812304ACD80049C28B /* HashtagSearchController.swift */; };
|
||||
D03E3D862304ACE80049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D852304ACE80049C28B /* Foundation.framework */; };
|
||||
D03E3D882304ACEC0049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D872304ACEC0049C28B /* UIKit.framework */; };
|
||||
D03E3D8A2304ACEF0049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D892304ACEF0049C28B /* Display.framework */; };
|
||||
D03E3D8C2304ACF30049C28B /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D8B2304ACF30049C28B /* TelegramCore.framework */; };
|
||||
D03E3D8E2304ACF70049C28B /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D8D2304ACF70049C28B /* Postbox.framework */; };
|
||||
D03E3D902304ACFB0049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D8F2304ACFB0049C28B /* SwiftSignalKit.framework */; };
|
||||
D03E3D922304ACFF0049C28B /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D912304ACFF0049C28B /* TelegramPresentationData.framework */; };
|
||||
D03E3D942304AD040049C28B /* TelegramBaseController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D932304AD040049C28B /* TelegramBaseController.framework */; };
|
||||
D03E3D962304AD090049C28B /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D952304AD090049C28B /* AccountContext.framework */; };
|
||||
D03E3D982304AD0E0049C28B /* ChatListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D972304AD0E0049C28B /* ChatListUI.framework */; };
|
||||
D03E3D9A2304AD1B0049C28B /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D992304AD1B0049C28B /* AsyncDisplayKit.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
D03E3D6F2304AC350049C28B /* HashtagSearchUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HashtagSearchUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D722304AC350049C28B /* HashtagSearchUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HashtagSearchUI.h; sourceTree = "<group>"; };
|
||||
D03E3D732304AC350049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
D03E3D802304ACD80049C28B /* HashtagSearchControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HashtagSearchControllerNode.swift; sourceTree = "<group>"; };
|
||||
D03E3D812304ACD80049C28B /* HashtagSearchController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HashtagSearchController.swift; sourceTree = "<group>"; };
|
||||
D03E3D852304ACE80049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
D03E3D872304ACEC0049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
D03E3D892304ACEF0049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D8B2304ACF30049C28B /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D8D2304ACF70049C28B /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D8F2304ACFB0049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D912304ACFF0049C28B /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D932304AD040049C28B /* TelegramBaseController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramBaseController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D952304AD090049C28B /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D972304AD0E0049C28B /* ChatListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ChatListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D992304AD1B0049C28B /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
D03E3D6C2304AC350049C28B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3D9A2304AD1B0049C28B /* AsyncDisplayKit.framework in Frameworks */,
|
||||
D03E3D982304AD0E0049C28B /* ChatListUI.framework in Frameworks */,
|
||||
D03E3D962304AD090049C28B /* AccountContext.framework in Frameworks */,
|
||||
D03E3D942304AD040049C28B /* TelegramBaseController.framework in Frameworks */,
|
||||
D03E3D922304ACFF0049C28B /* TelegramPresentationData.framework in Frameworks */,
|
||||
D03E3D902304ACFB0049C28B /* SwiftSignalKit.framework in Frameworks */,
|
||||
D03E3D8E2304ACF70049C28B /* Postbox.framework in Frameworks */,
|
||||
D03E3D8C2304ACF30049C28B /* TelegramCore.framework in Frameworks */,
|
||||
D03E3D8A2304ACEF0049C28B /* Display.framework in Frameworks */,
|
||||
D03E3D882304ACEC0049C28B /* UIKit.framework in Frameworks */,
|
||||
D03E3D862304ACE80049C28B /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
D03E3D652304AC350049C28B = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3D732304AC350049C28B /* Info.plist */,
|
||||
D03E3D712304AC350049C28B /* Sources */,
|
||||
D03E3D702304AC350049C28B /* Products */,
|
||||
D03E3D842304ACE70049C28B /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3D702304AC350049C28B /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3D6F2304AC350049C28B /* HashtagSearchUI.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3D712304AC350049C28B /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3D812304ACD80049C28B /* HashtagSearchController.swift */,
|
||||
D03E3D802304ACD80049C28B /* HashtagSearchControllerNode.swift */,
|
||||
D03E3D722304AC350049C28B /* HashtagSearchUI.h */,
|
||||
);
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3D842304ACE70049C28B /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3D992304AD1B0049C28B /* AsyncDisplayKit.framework */,
|
||||
D03E3D972304AD0E0049C28B /* ChatListUI.framework */,
|
||||
D03E3D952304AD090049C28B /* AccountContext.framework */,
|
||||
D03E3D932304AD040049C28B /* TelegramBaseController.framework */,
|
||||
D03E3D912304ACFF0049C28B /* TelegramPresentationData.framework */,
|
||||
D03E3D8F2304ACFB0049C28B /* SwiftSignalKit.framework */,
|
||||
D03E3D8D2304ACF70049C28B /* Postbox.framework */,
|
||||
D03E3D8B2304ACF30049C28B /* TelegramCore.framework */,
|
||||
D03E3D892304ACEF0049C28B /* Display.framework */,
|
||||
D03E3D872304ACEC0049C28B /* UIKit.framework */,
|
||||
D03E3D852304ACE80049C28B /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
D03E3D6A2304AC350049C28B /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3D742304AC350049C28B /* HashtagSearchUI.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
D03E3D6E2304AC350049C28B /* HashtagSearchUI */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = D03E3D772304AC350049C28B /* Build configuration list for PBXNativeTarget "HashtagSearchUI" */;
|
||||
buildPhases = (
|
||||
D03E3D6A2304AC350049C28B /* Headers */,
|
||||
D03E3D6B2304AC350049C28B /* Sources */,
|
||||
D03E3D6C2304AC350049C28B /* Frameworks */,
|
||||
D03E3D6D2304AC350049C28B /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = HashtagSearchUI;
|
||||
productName = HashtagSearchUI;
|
||||
productReference = D03E3D6F2304AC350049C28B /* HashtagSearchUI.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
D03E3D662304AC350049C28B /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
DefaultBuildSystemTypeForWorkspace = Latest;
|
||||
LastUpgradeCheck = 1030;
|
||||
ORGANIZATIONNAME = "Telegram Messenger LLP";
|
||||
TargetAttributes = {
|
||||
D03E3D6E2304AC350049C28B = {
|
||||
CreatedOnToolsVersion = 10.3;
|
||||
LastSwiftMigration = 1030;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = D03E3D692304AC350049C28B /* Build configuration list for PBXProject "HashtagSearchUI_Xcode" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = D03E3D652304AC350049C28B;
|
||||
productRefGroup = D03E3D702304AC350049C28B /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
D03E3D6E2304AC350049C28B /* HashtagSearchUI */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
D03E3D6D2304AC350049C28B /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
D03E3D6B2304AC350049C28B /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3D832304ACD90049C28B /* HashtagSearchController.swift in Sources */,
|
||||
D03E3D822304ACD90049C28B /* HashtagSearchControllerNode.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
D03E3D752304AC350049C28B /* DebugAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = DebugAppStoreLLC;
|
||||
};
|
||||
D03E3D762304AC350049C28B /* ReleaseAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3D782304AC350049C28B /* DebugAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.HashtagSearchUI;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DebugAppStoreLLC;
|
||||
};
|
||||
D03E3D792304AC350049C28B /* ReleaseAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.HashtagSearchUI;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3D7A2304AC5C0049C28B /* DebugHockeyapp */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = DebugHockeyapp;
|
||||
};
|
||||
D03E3D7B2304AC5C0049C28B /* DebugHockeyapp */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.HashtagSearchUI;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DebugHockeyapp;
|
||||
};
|
||||
D03E3D7C2304AC660049C28B /* ReleaseHockeyappInternal */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = ReleaseHockeyappInternal;
|
||||
};
|
||||
D03E3D7D2304AC660049C28B /* ReleaseHockeyappInternal */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.HashtagSearchUI;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = ReleaseHockeyappInternal;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
D03E3D692304AC350049C28B /* Build configuration list for PBXProject "HashtagSearchUI_Xcode" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D03E3D752304AC350049C28B /* DebugAppStoreLLC */,
|
||||
D03E3D7A2304AC5C0049C28B /* DebugHockeyapp */,
|
||||
D03E3D762304AC350049C28B /* ReleaseAppStoreLLC */,
|
||||
D03E3D7C2304AC660049C28B /* ReleaseHockeyappInternal */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3D772304AC350049C28B /* Build configuration list for PBXNativeTarget "HashtagSearchUI" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D03E3D782304AC350049C28B /* DebugAppStoreLLC */,
|
||||
D03E3D7B2304AC5C0049C28B /* DebugHockeyapp */,
|
||||
D03E3D792304AC350049C28B /* ReleaseAppStoreLLC */,
|
||||
D03E3D7D2304AC660049C28B /* ReleaseHockeyappInternal */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = ReleaseAppStoreLLC;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = D03E3D662304AC350049C28B /* Project object */;
|
||||
}
|
||||
22
submodules/HashtagSearchUI/Info.plist
Normal file
22
submodules/HashtagSearchUI/Info.plist
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -9,7 +9,7 @@ import TelegramBaseController
|
|||
import AccountContext
|
||||
import ChatListUI
|
||||
|
||||
final class HashtagSearchController: TelegramBaseController {
|
||||
public final class HashtagSearchController: TelegramBaseController {
|
||||
private let queue = Queue()
|
||||
|
||||
private let context: AccountContext
|
||||
|
|
@ -24,7 +24,7 @@ final class HashtagSearchController: TelegramBaseController {
|
|||
return self.displayNode as! HashtagSearchControllerNode
|
||||
}
|
||||
|
||||
init(context: AccountContext, peer: Peer?, query: String) {
|
||||
public init(context: AccountContext, peer: Peer?, query: String) {
|
||||
self.context = context
|
||||
self.peer = peer
|
||||
self.query = query
|
||||
|
|
@ -91,7 +91,7 @@ final class HashtagSearchController: TelegramBaseController {
|
|||
self.openMessageFromSearchDisposable.dispose()
|
||||
}
|
||||
|
||||
override func loadDisplayNode() {
|
||||
override public func loadDisplayNode() {
|
||||
self.displayNode = HashtagSearchControllerNode(context: self.context, peer: self.peer, query: self.query, theme: self.presentationData.theme, strings: self.presentationData.strings)
|
||||
if let chatController = self.controllerNode.chatController {
|
||||
chatController.parentController = self
|
||||
|
|
@ -13,7 +13,7 @@ final class HashtagSearchControllerNode: ASDisplayNode {
|
|||
private let segmentedControl: UISegmentedControl
|
||||
let listNode: ListView
|
||||
|
||||
var chatController: ChatControllerImpl?
|
||||
var chatController: ChatController?
|
||||
|
||||
private let context: AccountContext
|
||||
private let query: String
|
||||
|
|
@ -40,7 +40,7 @@ final class HashtagSearchControllerNode: ASDisplayNode {
|
|||
self.segmentedControl.selectedSegmentIndex = 0
|
||||
|
||||
if let peer = peer {
|
||||
self.chatController = ChatControllerImpl(context: context, chatLocation: .peer(peer.id), botStart: nil, mode: .inline)
|
||||
self.chatController = context.sharedContext.makeChatController(context: context, chatLocation: .peer(peer.id), subject: nil, botStart: nil, mode: .inline)
|
||||
} else {
|
||||
self.chatController = nil
|
||||
}
|
||||
19
submodules/HashtagSearchUI/Sources/HashtagSearchUI.h
Normal file
19
submodules/HashtagSearchUI/Sources/HashtagSearchUI.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
//
|
||||
// HashtagSearchUI.h
|
||||
// HashtagSearchUI
|
||||
//
|
||||
// Created by Peter on 8/14/19.
|
||||
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for HashtagSearchUI.
|
||||
FOUNDATION_EXPORT double HashtagSearchUIVersionNumber;
|
||||
|
||||
//! Project version string for HashtagSearchUI.
|
||||
FOUNDATION_EXPORT const unsigned char HashtagSearchUIVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <HashtagSearchUI/PublicHeader.h>
|
||||
|
||||
|
||||
22
submodules/ItemListAvatarAndNameInfoItem/Info.plist
Normal file
22
submodules/ItemListAvatarAndNameInfoItem/Info.plist
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,595 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
D03E3DAA2304AEDD0049C28B /* ItemListAvatarAndNameInfoItem.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E3DA82304AEDD0049C28B /* ItemListAvatarAndNameInfoItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D03E3DB52304AF2E0049C28B /* ItemListAvatarAndNameItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3DB42304AF2E0049C28B /* ItemListAvatarAndNameItem.swift */; };
|
||||
D03E3DB82304AF3B0049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DB72304AF3A0049C28B /* Foundation.framework */; };
|
||||
D03E3DBA2304AF3E0049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DB92304AF3E0049C28B /* UIKit.framework */; };
|
||||
D03E3DBC2304AF410049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DBB2304AF410049C28B /* Display.framework */; };
|
||||
D03E3DBE2304AF450049C28B /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DBD2304AF450049C28B /* AsyncDisplayKit.framework */; };
|
||||
D03E3DC02304AF490049C28B /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DBF2304AF490049C28B /* Postbox.framework */; };
|
||||
D03E3DC22304AF4D0049C28B /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DC12304AF4D0049C28B /* TelegramCore.framework */; };
|
||||
D03E3DC42304AF5B0049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DC32304AF5B0049C28B /* SwiftSignalKit.framework */; };
|
||||
D03E3DC62304AF5F0049C28B /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DC52304AF5F0049C28B /* TelegramPresentationData.framework */; };
|
||||
D03E3DC82304AF640049C28B /* ItemListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DC72304AF640049C28B /* ItemListUI.framework */; };
|
||||
D03E3DCA2304AF670049C28B /* ActivityIndicator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DC92304AF670049C28B /* ActivityIndicator.framework */; };
|
||||
D03E3DCC2304AF6D0049C28B /* AvatarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DCB2304AF6D0049C28B /* AvatarNode.framework */; };
|
||||
D03E3DCE2304AF720049C28B /* TelegramStringFormatting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DCD2304AF720049C28B /* TelegramStringFormatting.framework */; };
|
||||
D03E3DD02304AF760049C28B /* PeerPresenceStatusManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DCF2304AF760049C28B /* PeerPresenceStatusManager.framework */; };
|
||||
D03E3DD42304AFE80049C28B /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3DD32304AFE80049C28B /* FrameworkBundle.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
D03E3DA52304AEDD0049C28B /* ItemListAvatarAndNameInfoItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ItemListAvatarAndNameInfoItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DA82304AEDD0049C28B /* ItemListAvatarAndNameInfoItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ItemListAvatarAndNameInfoItem.h; sourceTree = "<group>"; };
|
||||
D03E3DA92304AEDD0049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
D03E3DB42304AF2E0049C28B /* ItemListAvatarAndNameItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListAvatarAndNameItem.swift; sourceTree = "<group>"; };
|
||||
D03E3DB72304AF3A0049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
D03E3DB92304AF3E0049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
D03E3DBB2304AF410049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DBD2304AF450049C28B /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DBF2304AF490049C28B /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DC12304AF4D0049C28B /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DC32304AF5B0049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DC52304AF5F0049C28B /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DC72304AF640049C28B /* ItemListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DC92304AF670049C28B /* ActivityIndicator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ActivityIndicator.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DCB2304AF6D0049C28B /* AvatarNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AvatarNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DCD2304AF720049C28B /* TelegramStringFormatting.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramStringFormatting.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DCF2304AF760049C28B /* PeerPresenceStatusManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PeerPresenceStatusManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DD32304AFE80049C28B /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
D03E3DA22304AEDD0049C28B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3DD02304AF760049C28B /* PeerPresenceStatusManager.framework in Frameworks */,
|
||||
D03E3DCE2304AF720049C28B /* TelegramStringFormatting.framework in Frameworks */,
|
||||
D03E3DCC2304AF6D0049C28B /* AvatarNode.framework in Frameworks */,
|
||||
D03E3DCA2304AF670049C28B /* ActivityIndicator.framework in Frameworks */,
|
||||
D03E3DC82304AF640049C28B /* ItemListUI.framework in Frameworks */,
|
||||
D03E3DC62304AF5F0049C28B /* TelegramPresentationData.framework in Frameworks */,
|
||||
D03E3DC42304AF5B0049C28B /* SwiftSignalKit.framework in Frameworks */,
|
||||
D03E3DC22304AF4D0049C28B /* TelegramCore.framework in Frameworks */,
|
||||
D03E3DC02304AF490049C28B /* Postbox.framework in Frameworks */,
|
||||
D03E3DBE2304AF450049C28B /* AsyncDisplayKit.framework in Frameworks */,
|
||||
D03E3DBC2304AF410049C28B /* Display.framework in Frameworks */,
|
||||
D03E3DBA2304AF3E0049C28B /* UIKit.framework in Frameworks */,
|
||||
D03E3DB82304AF3B0049C28B /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
D03E3D9B2304AEDD0049C28B = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3DA92304AEDD0049C28B /* Info.plist */,
|
||||
D03E3DA72304AEDD0049C28B /* Sources */,
|
||||
D03E3DA62304AEDD0049C28B /* Products */,
|
||||
D03E3DB62304AF3A0049C28B /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3DA62304AEDD0049C28B /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3DA52304AEDD0049C28B /* ItemListAvatarAndNameInfoItem.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3DA72304AEDD0049C28B /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3DB42304AF2E0049C28B /* ItemListAvatarAndNameItem.swift */,
|
||||
D03E3DA82304AEDD0049C28B /* ItemListAvatarAndNameInfoItem.h */,
|
||||
D03E3DD32304AFE80049C28B /* FrameworkBundle.swift */,
|
||||
);
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3DB62304AF3A0049C28B /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3DCF2304AF760049C28B /* PeerPresenceStatusManager.framework */,
|
||||
D03E3DCD2304AF720049C28B /* TelegramStringFormatting.framework */,
|
||||
D03E3DCB2304AF6D0049C28B /* AvatarNode.framework */,
|
||||
D03E3DC92304AF670049C28B /* ActivityIndicator.framework */,
|
||||
D03E3DC72304AF640049C28B /* ItemListUI.framework */,
|
||||
D03E3DC52304AF5F0049C28B /* TelegramPresentationData.framework */,
|
||||
D03E3DC32304AF5B0049C28B /* SwiftSignalKit.framework */,
|
||||
D03E3DC12304AF4D0049C28B /* TelegramCore.framework */,
|
||||
D03E3DBF2304AF490049C28B /* Postbox.framework */,
|
||||
D03E3DBD2304AF450049C28B /* AsyncDisplayKit.framework */,
|
||||
D03E3DBB2304AF410049C28B /* Display.framework */,
|
||||
D03E3DB92304AF3E0049C28B /* UIKit.framework */,
|
||||
D03E3DB72304AF3A0049C28B /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
D03E3DA02304AEDD0049C28B /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3DAA2304AEDD0049C28B /* ItemListAvatarAndNameInfoItem.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
D03E3DA42304AEDD0049C28B /* ItemListAvatarAndNameInfoItem */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = D03E3DAD2304AEDD0049C28B /* Build configuration list for PBXNativeTarget "ItemListAvatarAndNameInfoItem" */;
|
||||
buildPhases = (
|
||||
D03E3DA02304AEDD0049C28B /* Headers */,
|
||||
D03E3DA12304AEDD0049C28B /* Sources */,
|
||||
D03E3DA22304AEDD0049C28B /* Frameworks */,
|
||||
D03E3DA32304AEDD0049C28B /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = ItemListAvatarAndNameInfoItem;
|
||||
productName = ItemListAvatarAndNameInfoItem;
|
||||
productReference = D03E3DA52304AEDD0049C28B /* ItemListAvatarAndNameInfoItem.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
D03E3D9C2304AEDD0049C28B /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
DefaultBuildSystemTypeForWorkspace = Latest;
|
||||
LastUpgradeCheck = 1030;
|
||||
ORGANIZATIONNAME = "Telegram Messenger LLP";
|
||||
TargetAttributes = {
|
||||
D03E3DA42304AEDD0049C28B = {
|
||||
CreatedOnToolsVersion = 10.3;
|
||||
LastSwiftMigration = 1030;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = D03E3D9F2304AEDD0049C28B /* Build configuration list for PBXProject "ItemListAvatarAndNameInfoItem_Xcode" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = D03E3D9B2304AEDD0049C28B;
|
||||
productRefGroup = D03E3DA62304AEDD0049C28B /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
D03E3DA42304AEDD0049C28B /* ItemListAvatarAndNameInfoItem */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
D03E3DA32304AEDD0049C28B /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
D03E3DA12304AEDD0049C28B /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3DD42304AFE80049C28B /* FrameworkBundle.swift in Sources */,
|
||||
D03E3DB52304AF2E0049C28B /* ItemListAvatarAndNameItem.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
D03E3DAB2304AEDD0049C28B /* DebugAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = DebugAppStoreLLC;
|
||||
};
|
||||
D03E3DAC2304AEDD0049C28B /* ReleaseAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3DAE2304AEDD0049C28B /* DebugAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ItemListAvatarAndNameInfoItem;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DebugAppStoreLLC;
|
||||
};
|
||||
D03E3DAF2304AEDD0049C28B /* ReleaseAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ItemListAvatarAndNameInfoItem;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3DB02304AF000049C28B /* DebugHockeyapp */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = DebugHockeyapp;
|
||||
};
|
||||
D03E3DB12304AF000049C28B /* DebugHockeyapp */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ItemListAvatarAndNameInfoItem;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DebugHockeyapp;
|
||||
};
|
||||
D03E3DB22304AF080049C28B /* ReleaseHockeyappInternal */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = ReleaseHockeyappInternal;
|
||||
};
|
||||
D03E3DB32304AF080049C28B /* ReleaseHockeyappInternal */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ItemListAvatarAndNameInfoItem;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = ReleaseHockeyappInternal;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
D03E3D9F2304AEDD0049C28B /* Build configuration list for PBXProject "ItemListAvatarAndNameInfoItem_Xcode" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D03E3DAB2304AEDD0049C28B /* DebugAppStoreLLC */,
|
||||
D03E3DB02304AF000049C28B /* DebugHockeyapp */,
|
||||
D03E3DAC2304AEDD0049C28B /* ReleaseAppStoreLLC */,
|
||||
D03E3DB22304AF080049C28B /* ReleaseHockeyappInternal */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3DAD2304AEDD0049C28B /* Build configuration list for PBXNativeTarget "ItemListAvatarAndNameInfoItem" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D03E3DAE2304AEDD0049C28B /* DebugAppStoreLLC */,
|
||||
D03E3DB12304AF000049C28B /* DebugHockeyapp */,
|
||||
D03E3DAF2304AEDD0049C28B /* ReleaseAppStoreLLC */,
|
||||
D03E3DB32304AF080049C28B /* ReleaseHockeyappInternal */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = ReleaseAppStoreLLC;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = D03E3D9C2304AEDD0049C28B /* Project object */;
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import Foundation
|
||||
import UIKit
|
||||
|
||||
private class FrameworkBundleClass: NSObject {
|
||||
}
|
||||
|
||||
let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self)
|
||||
|
||||
extension UIImage {
|
||||
convenience init?(bundleImageName: String) {
|
||||
self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
//
|
||||
// ItemListAvatarAndNameInfoItem.h
|
||||
// ItemListAvatarAndNameInfoItem
|
||||
//
|
||||
// Created by Peter on 8/15/19.
|
||||
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for ItemListAvatarAndNameInfoItem.
|
||||
FOUNDATION_EXPORT double ItemListAvatarAndNameInfoItemVersionNumber;
|
||||
|
||||
//! Project version string for ItemListAvatarAndNameInfoItem.
|
||||
FOUNDATION_EXPORT const unsigned char ItemListAvatarAndNameInfoItemVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <ItemListAvatarAndNameInfoItem/PublicHeader.h>
|
||||
|
||||
|
||||
|
|
@ -18,148 +18,108 @@ private func generateClearIcon(color: UIColor) -> UIImage? {
|
|||
return generateTintedImage(image: UIImage(bundleImageName: "Components/Search Bar/Clear"), color: color)
|
||||
}
|
||||
|
||||
enum ItemListAvatarAndNameInfoItemTitleType {
|
||||
public enum ItemListAvatarAndNameInfoItemTitleType {
|
||||
case group
|
||||
case channel
|
||||
}
|
||||
|
||||
enum ItemListAvatarAndNameInfoItemName: Equatable {
|
||||
public enum ItemListAvatarAndNameInfoItemName: Equatable {
|
||||
case personName(firstName: String, lastName: String)
|
||||
case title(title: String, type: ItemListAvatarAndNameInfoItemTitleType)
|
||||
|
||||
init(_ peer: Peer) {
|
||||
public init(_ peer: Peer) {
|
||||
switch peer.indexName {
|
||||
case let .personName(first, last, _, _):
|
||||
self = .personName(firstName: first, lastName: last)
|
||||
case let .title(title, _):
|
||||
let type: ItemListAvatarAndNameInfoItemTitleType
|
||||
if let peer = peer as? TelegramChannel, case .broadcast = peer.info {
|
||||
type = .channel
|
||||
} else {
|
||||
type = .group
|
||||
}
|
||||
self = .title(title: title, type: type)
|
||||
case let .personName(first, last, _, _):
|
||||
self = .personName(firstName: first, lastName: last)
|
||||
case let .title(title, _):
|
||||
let type: ItemListAvatarAndNameInfoItemTitleType
|
||||
if let peer = peer as? TelegramChannel, case .broadcast = peer.info {
|
||||
type = .channel
|
||||
} else {
|
||||
type = .group
|
||||
}
|
||||
self = .title(title: title, type: type)
|
||||
}
|
||||
}
|
||||
|
||||
var composedTitle: String {
|
||||
public var composedTitle: String {
|
||||
switch self {
|
||||
case let .personName(firstName, lastName):
|
||||
if !firstName.isEmpty && !lastName.isEmpty {
|
||||
return firstName + " " + lastName
|
||||
} else if !firstName.isEmpty {
|
||||
return firstName
|
||||
} else {
|
||||
return lastName
|
||||
}
|
||||
case let .title(title, _):
|
||||
return title
|
||||
case let .personName(firstName, lastName):
|
||||
if !firstName.isEmpty && !lastName.isEmpty {
|
||||
return firstName + " " + lastName
|
||||
} else if !firstName.isEmpty {
|
||||
return firstName
|
||||
} else {
|
||||
return lastName
|
||||
}
|
||||
case let .title(title, _):
|
||||
return title
|
||||
}
|
||||
}
|
||||
|
||||
func composedDisplayTitle(strings: PresentationStrings) -> String {
|
||||
public func composedDisplayTitle(strings: PresentationStrings) -> String {
|
||||
switch self {
|
||||
case let .personName(firstName, lastName):
|
||||
if !firstName.isEmpty && !lastName.isEmpty {
|
||||
return firstName + " " + lastName
|
||||
} else if !firstName.isEmpty {
|
||||
return firstName
|
||||
} else if !lastName.isEmpty {
|
||||
return lastName
|
||||
} else {
|
||||
return strings.User_DeletedAccount
|
||||
}
|
||||
case let .title(title, _):
|
||||
return title
|
||||
case let .personName(firstName, lastName):
|
||||
if !firstName.isEmpty && !lastName.isEmpty {
|
||||
return firstName + " " + lastName
|
||||
} else if !firstName.isEmpty {
|
||||
return firstName
|
||||
} else if !lastName.isEmpty {
|
||||
return lastName
|
||||
} else {
|
||||
return strings.User_DeletedAccount
|
||||
}
|
||||
case let .title(title, _):
|
||||
return title
|
||||
}
|
||||
}
|
||||
|
||||
var isEmpty: Bool {
|
||||
public var isEmpty: Bool {
|
||||
switch self {
|
||||
case let .personName(firstName, _):
|
||||
return firstName.isEmpty
|
||||
case let .title(title, _):
|
||||
return title.isEmpty
|
||||
}
|
||||
}
|
||||
|
||||
static func ==(lhs: ItemListAvatarAndNameInfoItemName, rhs: ItemListAvatarAndNameInfoItemName) -> Bool {
|
||||
switch lhs {
|
||||
case let .personName(firstName, lastName):
|
||||
if case .personName(firstName, lastName) = rhs {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
case let .title(title, type):
|
||||
if case .title(title, type) = rhs {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
case let .personName(firstName, _):
|
||||
return firstName.isEmpty
|
||||
case let .title(title, _):
|
||||
return title.isEmpty
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ItemListAvatarAndNameInfoItemState: Equatable {
|
||||
let editingName: ItemListAvatarAndNameInfoItemName?
|
||||
let updatingName: ItemListAvatarAndNameInfoItemName?
|
||||
public struct ItemListAvatarAndNameInfoItemState: Equatable {
|
||||
public var editingName: ItemListAvatarAndNameInfoItemName?
|
||||
public var updatingName: ItemListAvatarAndNameInfoItemName?
|
||||
|
||||
init(editingName: ItemListAvatarAndNameInfoItemName? = nil, updatingName: ItemListAvatarAndNameInfoItemName? = nil) {
|
||||
public init(editingName: ItemListAvatarAndNameInfoItemName? = nil, updatingName: ItemListAvatarAndNameInfoItemName? = nil) {
|
||||
self.editingName = editingName
|
||||
self.updatingName = updatingName
|
||||
}
|
||||
}
|
||||
|
||||
public final class ItemListAvatarAndNameInfoItemContext {
|
||||
public var hiddenAvatarRepresentation: TelegramMediaImageRepresentation?
|
||||
|
||||
static func ==(lhs: ItemListAvatarAndNameInfoItemState, rhs: ItemListAvatarAndNameInfoItemState) -> Bool {
|
||||
if lhs.editingName != rhs.editingName {
|
||||
return false
|
||||
}
|
||||
if lhs.updatingName != rhs.updatingName {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
public init(hiddenAvatarRepresentation: TelegramMediaImageRepresentation? = nil) {
|
||||
self.hiddenAvatarRepresentation = hiddenAvatarRepresentation
|
||||
}
|
||||
}
|
||||
|
||||
final class ItemListAvatarAndNameInfoItemContext {
|
||||
var hiddenAvatarRepresentation: TelegramMediaImageRepresentation?
|
||||
}
|
||||
|
||||
enum ItemListAvatarAndNameInfoItemStyle {
|
||||
public enum ItemListAvatarAndNameInfoItemStyle {
|
||||
case plain
|
||||
case blocks(withTopInset: Bool, withExtendedBottomInset: Bool)
|
||||
}
|
||||
|
||||
enum ItemListAvatarAndNameInfoItemUpdatingAvatar: Equatable {
|
||||
public enum ItemListAvatarAndNameInfoItemUpdatingAvatar: Equatable {
|
||||
case image(TelegramMediaImageRepresentation, Bool)
|
||||
case none
|
||||
|
||||
static func ==(lhs: ItemListAvatarAndNameInfoItemUpdatingAvatar, rhs: ItemListAvatarAndNameInfoItemUpdatingAvatar) -> Bool {
|
||||
switch lhs {
|
||||
case let .image(representation, activity):
|
||||
if case .image(representation, activity) = rhs {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
case .none:
|
||||
if case .none = rhs {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum ItemListAvatarAndNameInfoItemMode {
|
||||
public enum ItemListAvatarAndNameInfoItemMode {
|
||||
case generic
|
||||
case contact
|
||||
case settings
|
||||
case editSettings
|
||||
}
|
||||
|
||||
class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem {
|
||||
public class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem {
|
||||
let account: Account
|
||||
let theme: PresentationTheme
|
||||
let strings: PresentationStrings
|
||||
|
|
@ -170,7 +130,7 @@ class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem {
|
|||
let label: String?
|
||||
let cachedData: CachedPeerData?
|
||||
let state: ItemListAvatarAndNameInfoItemState
|
||||
let sectionId: ItemListSectionId
|
||||
public let sectionId: ItemListSectionId
|
||||
let style: ItemListAvatarAndNameInfoItemStyle
|
||||
let editingNameUpdated: (ItemListAvatarAndNameInfoItemName) -> Void
|
||||
let editingNameCompleted: () -> Void
|
||||
|
|
@ -180,11 +140,11 @@ class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem {
|
|||
let call: (() -> Void)?
|
||||
let action: (() -> Void)?
|
||||
let longTapAction: (() -> Void)?
|
||||
let tag: ItemListItemTag?
|
||||
public let tag: ItemListItemTag?
|
||||
|
||||
let selectable: Bool
|
||||
public let selectable: Bool
|
||||
|
||||
init(account: Account, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, mode: ItemListAvatarAndNameInfoItemMode, peer: Peer?, presence: PeerPresence?, label: String? = nil, cachedData: CachedPeerData?, state: ItemListAvatarAndNameInfoItemState, sectionId: ItemListSectionId, style: ItemListAvatarAndNameInfoItemStyle, editingNameUpdated: @escaping (ItemListAvatarAndNameInfoItemName) -> Void, editingNameCompleted: @escaping () -> Void = {}, avatarTapped: @escaping () -> Void, context: ItemListAvatarAndNameInfoItemContext? = nil, updatingImage: ItemListAvatarAndNameInfoItemUpdatingAvatar? = nil, call: (() -> Void)? = nil, action: (() -> Void)? = nil, longTapAction: (() -> Void)? = nil, tag: ItemListItemTag? = nil) {
|
||||
public init(account: Account, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, mode: ItemListAvatarAndNameInfoItemMode, peer: Peer?, presence: PeerPresence?, label: String? = nil, cachedData: CachedPeerData?, state: ItemListAvatarAndNameInfoItemState, sectionId: ItemListSectionId, style: ItemListAvatarAndNameInfoItemStyle, editingNameUpdated: @escaping (ItemListAvatarAndNameInfoItemName) -> Void, editingNameCompleted: @escaping () -> Void = {}, avatarTapped: @escaping () -> Void, context: ItemListAvatarAndNameInfoItemContext? = nil, updatingImage: ItemListAvatarAndNameInfoItemUpdatingAvatar? = nil, call: (() -> Void)? = nil, action: (() -> Void)? = nil, longTapAction: (() -> Void)? = nil, tag: ItemListItemTag? = nil) {
|
||||
self.account = account
|
||||
self.theme = theme
|
||||
self.strings = strings
|
||||
|
|
@ -214,7 +174,7 @@ class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem {
|
|||
}
|
||||
}
|
||||
|
||||
func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) {
|
||||
public func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) {
|
||||
async {
|
||||
let node = ItemListAvatarAndNameInfoItemNode()
|
||||
let (layout, apply) = node.asyncLayout()(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem))
|
||||
|
|
@ -228,7 +188,7 @@ class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem {
|
|||
}
|
||||
}
|
||||
|
||||
func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
|
||||
public func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
|
||||
Queue.mainQueue().async {
|
||||
if let nodeValue = node() as? ItemListAvatarAndNameInfoItemNode {
|
||||
var animated = true
|
||||
|
|
@ -249,7 +209,7 @@ class ItemListAvatarAndNameInfoItem: ListViewItem, ItemListItem {
|
|||
}
|
||||
}
|
||||
|
||||
func selected(listView: ListView){
|
||||
public func selected(listView: ListView){
|
||||
listView.clearHighlightAnimated(true)
|
||||
self.action?()
|
||||
}
|
||||
|
|
@ -259,7 +219,7 @@ private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 28.0)!
|
|||
private let nameFont = Font.medium(19.0)
|
||||
private let statusFont = Font.regular(15.0)
|
||||
|
||||
class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, ItemListItemFocusableNode, UITextFieldDelegate {
|
||||
public class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, ItemListItemFocusableNode, UITextFieldDelegate {
|
||||
private let backgroundNode: ASDisplayNode
|
||||
private let highlightedBackgroundNode: ASDisplayNode
|
||||
private let topStripeNode: ASDisplayNode
|
||||
|
|
@ -290,11 +250,11 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
|
||||
private let hiddenAvatarRepresentationDisposable = MetaDisposable()
|
||||
|
||||
var tag: ItemListItemTag? {
|
||||
public var tag: ItemListItemTag? {
|
||||
return self.item?.tag
|
||||
}
|
||||
|
||||
var callButtonFrame: CGRect? {
|
||||
public var callButtonFrame: CGRect? {
|
||||
if !self.callButton.alpha.isZero && self.callButton.supernode != nil {
|
||||
return self.callButton.frame
|
||||
} else {
|
||||
|
|
@ -302,7 +262,7 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
}
|
||||
}
|
||||
|
||||
init() {
|
||||
public init() {
|
||||
self.backgroundNode = ASDisplayNode()
|
||||
self.backgroundNode.isLayerBacked = true
|
||||
|
||||
|
|
@ -365,13 +325,13 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
self.hiddenAvatarRepresentationDisposable.dispose()
|
||||
}
|
||||
|
||||
override func didLoad() {
|
||||
override public func didLoad() {
|
||||
super.didLoad()
|
||||
|
||||
self.avatarNode.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.avatarTapGesture(_:))))
|
||||
}
|
||||
|
||||
func asyncLayout() -> (_ item: ItemListAvatarAndNameInfoItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, (Bool, Bool) -> Void) {
|
||||
public func asyncLayout() -> (_ item: ItemListAvatarAndNameInfoItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, (Bool, Bool) -> Void) {
|
||||
let layoutNameNode = TextNode.asyncLayout(self.nameNode)
|
||||
let layoutStatusNode = TextNode.asyncLayout(self.statusNode)
|
||||
let currentOverlayImage = self.updatingAvatarOverlay.image
|
||||
|
|
@ -976,7 +936,7 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
}
|
||||
}
|
||||
|
||||
override func setHighlighted(_ highlighted: Bool, at point: CGPoint, animated: Bool) {
|
||||
override public func setHighlighted(_ highlighted: Bool, at point: CGPoint, animated: Bool) {
|
||||
super.setHighlighted(highlighted, at: point, animated: animated)
|
||||
|
||||
if highlighted {
|
||||
|
|
@ -1021,7 +981,7 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
button.isHidden = !textField.isFirstResponder || (textField.text?.isEmpty ?? true)
|
||||
}
|
||||
|
||||
@objc func textFieldDidChange(_ inputField: UITextField) {
|
||||
@objc private func textFieldDidChange(_ inputField: UITextField) {
|
||||
if let item = self.item, let currentEditingName = item.state.editingName {
|
||||
var editingName: ItemListAvatarAndNameInfoItemName?
|
||||
if let inputFirstField = self.inputFirstField, let inputSecondField = self.inputSecondField {
|
||||
|
|
@ -1043,7 +1003,7 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
}
|
||||
}
|
||||
|
||||
func textFieldDidBeginEditing(_ textField: UITextField) {
|
||||
public func textFieldDidBeginEditing(_ textField: UITextField) {
|
||||
if textField == self.inputFirstField {
|
||||
self.updateClearButtonVisibility(self.inputFirstClearButton, textField: textField)
|
||||
} else if textField == self.inputSecondField {
|
||||
|
|
@ -1051,7 +1011,7 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
}
|
||||
}
|
||||
|
||||
func textFieldDidEndEditing(_ textField: UITextField) {
|
||||
public func textFieldDidEndEditing(_ textField: UITextField) {
|
||||
if textField == self.inputFirstField {
|
||||
self.updateClearButtonVisibility(self.inputFirstClearButton, textField: textField)
|
||||
} else if textField == self.inputSecondField {
|
||||
|
|
@ -1059,7 +1019,7 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
}
|
||||
}
|
||||
|
||||
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
||||
public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
||||
if textField == self.inputFirstField {
|
||||
if let inputSecondField = self.inputSecondField {
|
||||
inputSecondField.becomeFirstResponder()
|
||||
|
|
@ -1072,20 +1032,20 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
return true
|
||||
}
|
||||
|
||||
@objc func avatarTapGesture(_ recognizer: UITapGestureRecognizer) {
|
||||
@objc private func avatarTapGesture(_ recognizer: UITapGestureRecognizer) {
|
||||
if let item = self.item {
|
||||
item.avatarTapped()
|
||||
}
|
||||
}
|
||||
|
||||
func avatarTransitionNode() -> ((ASDisplayNode, () -> (UIView?, UIView?)), CGRect) {
|
||||
public func avatarTransitionNode() -> ((ASDisplayNode, () -> (UIView?, UIView?)), CGRect) {
|
||||
let avatarNode = self.avatarNode
|
||||
return ((self.avatarNode, { [weak avatarNode] in
|
||||
return (avatarNode?.view.snapshotContentTree(unhide: true), nil)
|
||||
}), self.avatarNode.bounds)
|
||||
}
|
||||
|
||||
func updateAvatarHidden() {
|
||||
public func updateAvatarHidden() {
|
||||
var hidden = false
|
||||
if let item = self.item, let context = item.context, let peer = item.peer, let hiddenAvatarRepresentation = context.hiddenAvatarRepresentation {
|
||||
for representation in peer.profileImageRepresentations {
|
||||
|
|
@ -1099,29 +1059,29 @@ class ItemListAvatarAndNameInfoItemNode: ListViewItemNode, ItemListItemNode, Ite
|
|||
}
|
||||
}
|
||||
|
||||
@objc func callButtonPressed() {
|
||||
@objc private func callButtonPressed() {
|
||||
self.item?.call?()
|
||||
}
|
||||
|
||||
@objc func firstClearPressed() {
|
||||
@objc private func firstClearPressed() {
|
||||
self.inputFirstField?.text = nil
|
||||
self.updateClearButtonVisibility(self.inputFirstClearButton, textField: self.inputFirstField)
|
||||
}
|
||||
|
||||
@objc func secondClearPressed() {
|
||||
@objc private func secondClearPressed() {
|
||||
self.inputSecondField?.text = nil
|
||||
self.updateClearButtonVisibility(self.inputSecondClearButton, textField: self.inputSecondField)
|
||||
}
|
||||
|
||||
func focus() {
|
||||
public func focus() {
|
||||
self.inputFirstField?.becomeFirstResponder()
|
||||
}
|
||||
|
||||
override func longTapped() {
|
||||
override public func longTapped() {
|
||||
self.item?.longTapAction?()
|
||||
}
|
||||
|
||||
override var canBeLongTapped: Bool {
|
||||
override public var canBeLongTapped: Bool {
|
||||
return self.item?.longTapAction != nil
|
||||
}
|
||||
}
|
||||
22
submodules/ItemListPeerActionItem/Info.plist
Normal file
22
submodules/ItemListPeerActionItem/Info.plist
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,567 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
D03E3DE42304B2030049C28B /* ItemListPeerActionItem.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E3DE22304B2030049C28B /* ItemListPeerActionItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D03E3DEF2304B25E0049C28B /* ItemListPeerActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3DEE2304B25E0049C28B /* ItemListPeerActionItem.swift */; };
|
||||
D03E3DF22304B2700049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DF12304B2700049C28B /* Foundation.framework */; };
|
||||
D03E3DF42304B2740049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DF32304B2740049C28B /* UIKit.framework */; };
|
||||
D03E3DF62304B2770049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DF52304B2770049C28B /* Display.framework */; };
|
||||
D03E3DF82304B27A0049C28B /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DF72304B27A0049C28B /* AsyncDisplayKit.framework */; };
|
||||
D03E3DFA2304B2800049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DF92304B2800049C28B /* SwiftSignalKit.framework */; };
|
||||
D03E3DFC2304B2850049C28B /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DFB2304B2850049C28B /* TelegramPresentationData.framework */; };
|
||||
D03E3DFE2304B2890049C28B /* ItemListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DFD2304B2890049C28B /* ItemListUI.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
D03E3DDF2304B2030049C28B /* ItemListPeerActionItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ItemListPeerActionItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DE22304B2030049C28B /* ItemListPeerActionItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ItemListPeerActionItem.h; sourceTree = "<group>"; };
|
||||
D03E3DE32304B2030049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
D03E3DEE2304B25E0049C28B /* ItemListPeerActionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListPeerActionItem.swift; sourceTree = "<group>"; };
|
||||
D03E3DF12304B2700049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
D03E3DF32304B2740049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
D03E3DF52304B2770049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DF72304B27A0049C28B /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DF92304B2800049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DFB2304B2850049C28B /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DFD2304B2890049C28B /* ItemListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
D03E3DDC2304B2030049C28B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3DFE2304B2890049C28B /* ItemListUI.framework in Frameworks */,
|
||||
D03E3DFC2304B2850049C28B /* TelegramPresentationData.framework in Frameworks */,
|
||||
D03E3DFA2304B2800049C28B /* SwiftSignalKit.framework in Frameworks */,
|
||||
D03E3DF82304B27A0049C28B /* AsyncDisplayKit.framework in Frameworks */,
|
||||
D03E3DF62304B2770049C28B /* Display.framework in Frameworks */,
|
||||
D03E3DF42304B2740049C28B /* UIKit.framework in Frameworks */,
|
||||
D03E3DF22304B2700049C28B /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
D03E3DD52304B2030049C28B = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3DE32304B2030049C28B /* Info.plist */,
|
||||
D03E3DE12304B2030049C28B /* Sources */,
|
||||
D03E3DE02304B2030049C28B /* Products */,
|
||||
D03E3DF02304B2700049C28B /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3DE02304B2030049C28B /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3DDF2304B2030049C28B /* ItemListPeerActionItem.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3DE12304B2030049C28B /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3DEE2304B25E0049C28B /* ItemListPeerActionItem.swift */,
|
||||
D03E3DE22304B2030049C28B /* ItemListPeerActionItem.h */,
|
||||
);
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3DF02304B2700049C28B /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3DFD2304B2890049C28B /* ItemListUI.framework */,
|
||||
D03E3DFB2304B2850049C28B /* TelegramPresentationData.framework */,
|
||||
D03E3DF92304B2800049C28B /* SwiftSignalKit.framework */,
|
||||
D03E3DF72304B27A0049C28B /* AsyncDisplayKit.framework */,
|
||||
D03E3DF52304B2770049C28B /* Display.framework */,
|
||||
D03E3DF32304B2740049C28B /* UIKit.framework */,
|
||||
D03E3DF12304B2700049C28B /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
D03E3DDA2304B2030049C28B /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3DE42304B2030049C28B /* ItemListPeerActionItem.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
D03E3DDE2304B2030049C28B /* ItemListPeerActionItem */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = D03E3DE72304B2030049C28B /* Build configuration list for PBXNativeTarget "ItemListPeerActionItem" */;
|
||||
buildPhases = (
|
||||
D03E3DDA2304B2030049C28B /* Headers */,
|
||||
D03E3DDB2304B2030049C28B /* Sources */,
|
||||
D03E3DDC2304B2030049C28B /* Frameworks */,
|
||||
D03E3DDD2304B2030049C28B /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = ItemListPeerActionItem;
|
||||
productName = ItemListPeerActionItem;
|
||||
productReference = D03E3DDF2304B2030049C28B /* ItemListPeerActionItem.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
D03E3DD62304B2030049C28B /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
DefaultBuildSystemTypeForWorkspace = Latest;
|
||||
LastUpgradeCheck = 1030;
|
||||
ORGANIZATIONNAME = "Telegram Messenger LLP";
|
||||
TargetAttributes = {
|
||||
D03E3DDE2304B2030049C28B = {
|
||||
CreatedOnToolsVersion = 10.3;
|
||||
LastSwiftMigration = 1030;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = D03E3DD92304B2030049C28B /* Build configuration list for PBXProject "ItemListPeerActionItem_Xcode" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = D03E3DD52304B2030049C28B;
|
||||
productRefGroup = D03E3DE02304B2030049C28B /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
D03E3DDE2304B2030049C28B /* ItemListPeerActionItem */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
D03E3DDD2304B2030049C28B /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
D03E3DDB2304B2030049C28B /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3DEF2304B25E0049C28B /* ItemListPeerActionItem.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
D03E3DE52304B2030049C28B /* DebugAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = DebugAppStoreLLC;
|
||||
};
|
||||
D03E3DE62304B2030049C28B /* ReleaseAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3DE82304B2030049C28B /* DebugAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ItemListPeerActionItem;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DebugAppStoreLLC;
|
||||
};
|
||||
D03E3DE92304B2030049C28B /* ReleaseAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ItemListPeerActionItem;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3DEA2304B22D0049C28B /* DebugHockeyapp */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = DebugHockeyapp;
|
||||
};
|
||||
D03E3DEB2304B22D0049C28B /* DebugHockeyapp */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ItemListPeerActionItem;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DebugHockeyapp;
|
||||
};
|
||||
D03E3DEC2304B2350049C28B /* ReleaseHockeyappInternal */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = ReleaseHockeyappInternal;
|
||||
};
|
||||
D03E3DED2304B2350049C28B /* ReleaseHockeyappInternal */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ItemListPeerActionItem;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = ReleaseHockeyappInternal;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
D03E3DD92304B2030049C28B /* Build configuration list for PBXProject "ItemListPeerActionItem_Xcode" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D03E3DE52304B2030049C28B /* DebugAppStoreLLC */,
|
||||
D03E3DEA2304B22D0049C28B /* DebugHockeyapp */,
|
||||
D03E3DE62304B2030049C28B /* ReleaseAppStoreLLC */,
|
||||
D03E3DEC2304B2350049C28B /* ReleaseHockeyappInternal */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3DE72304B2030049C28B /* Build configuration list for PBXNativeTarget "ItemListPeerActionItem" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D03E3DE82304B2030049C28B /* DebugAppStoreLLC */,
|
||||
D03E3DEB2304B22D0049C28B /* DebugHockeyapp */,
|
||||
D03E3DE92304B2030049C28B /* ReleaseAppStoreLLC */,
|
||||
D03E3DED2304B2350049C28B /* ReleaseHockeyappInternal */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = ReleaseAppStoreLLC;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = D03E3DD62304B2030049C28B /* Project object */;
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
//
|
||||
// ItemListPeerActionItem.h
|
||||
// ItemListPeerActionItem
|
||||
//
|
||||
// Created by Peter on 8/15/19.
|
||||
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for ItemListPeerActionItem.
|
||||
FOUNDATION_EXPORT double ItemListPeerActionItemVersionNumber;
|
||||
|
||||
//! Project version string for ItemListPeerActionItem.
|
||||
FOUNDATION_EXPORT const unsigned char ItemListPeerActionItemVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <ItemListPeerActionItem/PublicHeader.h>
|
||||
|
||||
|
||||
|
|
@ -6,22 +6,22 @@ import SwiftSignalKit
|
|||
import TelegramPresentationData
|
||||
import ItemListUI
|
||||
|
||||
enum ItemListPeerActionItemHeight {
|
||||
public enum ItemListPeerActionItemHeight {
|
||||
case generic
|
||||
case peerList
|
||||
}
|
||||
|
||||
class ItemListPeerActionItem: ListViewItem, ItemListItem {
|
||||
public class ItemListPeerActionItem: ListViewItem, ItemListItem {
|
||||
let theme: PresentationTheme
|
||||
let icon: UIImage?
|
||||
let title: String
|
||||
let alwaysPlain: Bool
|
||||
public let alwaysPlain: Bool
|
||||
let editing: Bool
|
||||
let height: ItemListPeerActionItemHeight
|
||||
let sectionId: ItemListSectionId
|
||||
public let sectionId: ItemListSectionId
|
||||
let action: () -> Void
|
||||
|
||||
init(theme: PresentationTheme, icon: UIImage?, title: String, alwaysPlain: Bool = false, sectionId: ItemListSectionId, height: ItemListPeerActionItemHeight = .peerList, editing: Bool, action: @escaping () -> Void) {
|
||||
public init(theme: PresentationTheme, icon: UIImage?, title: String, alwaysPlain: Bool = false, sectionId: ItemListSectionId, height: ItemListPeerActionItemHeight = .peerList, editing: Bool, action: @escaping () -> Void) {
|
||||
self.theme = theme
|
||||
self.icon = icon
|
||||
self.title = title
|
||||
|
|
@ -32,7 +32,7 @@ class ItemListPeerActionItem: ListViewItem, ItemListItem {
|
|||
self.action = action
|
||||
}
|
||||
|
||||
func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) {
|
||||
public func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) {
|
||||
async {
|
||||
let node = ItemListPeerActionItemNode()
|
||||
var neighbors = itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem)
|
||||
|
|
@ -52,7 +52,7 @@ class ItemListPeerActionItem: ListViewItem, ItemListItem {
|
|||
}
|
||||
}
|
||||
|
||||
func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
|
||||
public func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
|
||||
Queue.mainQueue().async {
|
||||
if let nodeValue = node() as? ItemListPeerActionItemNode {
|
||||
let makeLayout = nodeValue.asyncLayout()
|
||||
|
|
@ -78,9 +78,9 @@ class ItemListPeerActionItem: ListViewItem, ItemListItem {
|
|||
}
|
||||
}
|
||||
|
||||
var selectable: Bool = true
|
||||
public var selectable: Bool = true
|
||||
|
||||
func selected(listView: ListView){
|
||||
public func selected(listView: ListView){
|
||||
listView.clearHighlightAnimated(true)
|
||||
self.action()
|
||||
}
|
||||
22
submodules/StickerPackPreviewUI/Info.plist
Normal file
22
submodules/StickerPackPreviewUI/Info.plist
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -11,12 +11,12 @@ import ShareController
|
|||
import StickerResources
|
||||
import AlertUI
|
||||
|
||||
enum StickerPackPreviewControllerMode {
|
||||
public enum StickerPackPreviewControllerMode {
|
||||
case `default`
|
||||
case settings
|
||||
}
|
||||
|
||||
final class StickerPackPreviewController: ViewController {
|
||||
public final class StickerPackPreviewController: ViewController {
|
||||
private var controllerNode: StickerPackPreviewControllerNode {
|
||||
return self.displayNode as! StickerPackPreviewControllerNode
|
||||
}
|
||||
|
|
@ -42,7 +42,7 @@ final class StickerPackPreviewController: ViewController {
|
|||
|
||||
private var presentationDataDisposable: Disposable?
|
||||
|
||||
var sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)? {
|
||||
public var sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)? {
|
||||
didSet {
|
||||
if self.isNodeLoaded {
|
||||
if let sendSticker = self.sendSticker {
|
||||
|
|
@ -61,7 +61,7 @@ final class StickerPackPreviewController: ViewController {
|
|||
}
|
||||
}
|
||||
|
||||
init(context: AccountContext, stickerPack: StickerPackReference, mode: StickerPackPreviewControllerMode = .default, parentNavigationController: NavigationController?) {
|
||||
public init(context: AccountContext, stickerPack: StickerPackReference, mode: StickerPackPreviewControllerMode = .default, parentNavigationController: NavigationController?) {
|
||||
self.context = context
|
||||
self.mode = mode
|
||||
self.parentNavigationController = parentNavigationController
|
||||
|
|
@ -82,7 +82,7 @@ final class StickerPackPreviewController: ViewController {
|
|||
})
|
||||
}
|
||||
|
||||
required init(coder aDecoder: NSCoder) {
|
||||
required public init(coder aDecoder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
|
|
@ -93,7 +93,7 @@ final class StickerPackPreviewController: ViewController {
|
|||
self.presentationDataDisposable?.dispose()
|
||||
}
|
||||
|
||||
override func loadDisplayNode() {
|
||||
override public func loadDisplayNode() {
|
||||
var openShareImpl: (() -> Void)?
|
||||
if self.mode == .settings {
|
||||
openShareImpl = { [weak self] in
|
||||
|
|
@ -126,9 +126,9 @@ final class StickerPackPreviewController: ViewController {
|
|||
guard let strongSelf = self else {
|
||||
return
|
||||
}
|
||||
if let peer = peer {
|
||||
if let peer = peer, let parentNavigationController = strongSelf.parentNavigationController {
|
||||
strongSelf.dismiss()
|
||||
strongSelf.parentNavigationController?.pushViewController(ChatControllerImpl(context: strongSelf.context, chatLocation: .peer(peer.id)))
|
||||
strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: parentNavigationController, context: strongSelf.context, chatLocation: .peer(peer.id), animated: true))
|
||||
}
|
||||
}))
|
||||
})
|
||||
|
|
@ -217,7 +217,7 @@ final class StickerPackPreviewController: ViewController {
|
|||
self.ready.set(self.controllerNode.ready.get())
|
||||
}
|
||||
|
||||
override func viewDidAppear(_ animated: Bool) {
|
||||
override public func viewDidAppear(_ animated: Bool) {
|
||||
super.viewDidAppear(animated)
|
||||
|
||||
if !self.animatedIn {
|
||||
|
|
@ -226,7 +226,7 @@ final class StickerPackPreviewController: ViewController {
|
|||
}
|
||||
}
|
||||
|
||||
override func dismiss(completion: (() -> Void)? = nil) {
|
||||
override public func dismiss(completion: (() -> Void)? = nil) {
|
||||
if !self.dismissed {
|
||||
self.dismissed = true
|
||||
} else {
|
||||
|
|
@ -235,7 +235,7 @@ final class StickerPackPreviewController: ViewController {
|
|||
self.controllerNode.animateOut(completion: completion)
|
||||
}
|
||||
|
||||
override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
||||
override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
||||
super.containerLayoutUpdated(layout, transition: transition)
|
||||
|
||||
self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition)
|
||||
|
|
@ -7,6 +7,7 @@ import AsyncDisplayKit
|
|||
import Postbox
|
||||
import StickerResources
|
||||
import AccountContext
|
||||
import AnimationUI
|
||||
|
||||
final class StickerPackPreviewInteraction {
|
||||
var previewedItem: StickerPreviewPeekItem?
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
//
|
||||
// StickerPackPreviewUI.h
|
||||
// StickerPackPreviewUI
|
||||
//
|
||||
// Created by Peter on 8/15/19.
|
||||
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for StickerPackPreviewUI.
|
||||
FOUNDATION_EXPORT double StickerPackPreviewUIVersionNumber;
|
||||
|
||||
//! Project version string for StickerPackPreviewUI.
|
||||
FOUNDATION_EXPORT const unsigned char StickerPackPreviewUIVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <StickerPackPreviewUI/PublicHeader.h>
|
||||
|
||||
|
||||
|
|
@ -7,15 +7,15 @@ import TelegramCore
|
|||
import SwiftSignalKit
|
||||
import AccountContext
|
||||
|
||||
final class StickerPreviewControllerPresentationArguments {
|
||||
public final class StickerPreviewControllerPresentationArguments {
|
||||
let transitionNode: (StickerPackItem) -> ASDisplayNode?
|
||||
|
||||
init(transitionNode: @escaping (StickerPackItem) -> ASDisplayNode?) {
|
||||
public init(transitionNode: @escaping (StickerPackItem) -> ASDisplayNode?) {
|
||||
self.transitionNode = transitionNode
|
||||
}
|
||||
}
|
||||
|
||||
final class StickerPreviewController: ViewController {
|
||||
public final class StickerPreviewController: ViewController {
|
||||
private var controllerNode: StickerPreviewControllerNode {
|
||||
return self.displayNode as! StickerPreviewControllerNode
|
||||
}
|
||||
|
|
@ -25,7 +25,7 @@ final class StickerPreviewController: ViewController {
|
|||
private let context: AccountContext
|
||||
private var item: StickerPackItem
|
||||
|
||||
init(context: AccountContext, item: StickerPackItem) {
|
||||
public init(context: AccountContext, item: StickerPackItem) {
|
||||
self.context = context
|
||||
self.item = item
|
||||
|
||||
|
|
@ -34,11 +34,11 @@ final class StickerPreviewController: ViewController {
|
|||
self.statusBar.statusBarStyle = .Ignore
|
||||
}
|
||||
|
||||
required init(coder aDecoder: NSCoder) {
|
||||
required public init(coder aDecoder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
override func loadDisplayNode() {
|
||||
override public func loadDisplayNode() {
|
||||
self.displayNode = StickerPreviewControllerNode(context: self.context)
|
||||
self.controllerNode.dismiss = { [weak self] in
|
||||
self?.presentingViewController?.dismiss(animated: false, completion: nil)
|
||||
|
|
@ -52,7 +52,7 @@ final class StickerPreviewController: ViewController {
|
|||
self.ready.set(.single(true))
|
||||
}
|
||||
|
||||
override func viewDidAppear(_ animated: Bool) {
|
||||
override public func viewDidAppear(_ animated: Bool) {
|
||||
super.viewDidAppear(animated)
|
||||
|
||||
if !self.animatedIn {
|
||||
|
|
@ -61,17 +61,17 @@ final class StickerPreviewController: ViewController {
|
|||
}
|
||||
}
|
||||
|
||||
override func dismiss(completion: (() -> Void)? = nil) {
|
||||
override public func dismiss(completion: (() -> Void)? = nil) {
|
||||
self.controllerNode.animateOut(targetNode: (self.presentationArguments as? StickerPreviewControllerPresentationArguments)?.transitionNode(self.item), completion: completion)
|
||||
}
|
||||
|
||||
override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
||||
override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
||||
super.containerLayoutUpdated(layout, transition: transition)
|
||||
|
||||
self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition)
|
||||
}
|
||||
|
||||
func updateItem(_ item: StickerPackItem) {
|
||||
public func updateItem(_ item: StickerPackItem) {
|
||||
self.item = item
|
||||
self.controllerNode.updateItem(item)
|
||||
}
|
||||
|
|
@ -6,53 +6,54 @@ import Postbox
|
|||
import TelegramCore
|
||||
import SwiftSignalKit
|
||||
import StickerResources
|
||||
import AnimationUI
|
||||
|
||||
enum StickerPreviewPeekItem: Equatable {
|
||||
public enum StickerPreviewPeekItem: Equatable {
|
||||
case pack(StickerPackItem)
|
||||
case found(FoundStickerItem)
|
||||
|
||||
var file: TelegramMediaFile {
|
||||
public var file: TelegramMediaFile {
|
||||
switch self {
|
||||
case let .pack(item):
|
||||
return item.file
|
||||
case let .found(item):
|
||||
return item.file
|
||||
case let .pack(item):
|
||||
return item.file
|
||||
case let .found(item):
|
||||
return item.file
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final class StickerPreviewPeekContent: PeekControllerContent {
|
||||
public final class StickerPreviewPeekContent: PeekControllerContent {
|
||||
let account: Account
|
||||
let item: StickerPreviewPeekItem
|
||||
public let item: StickerPreviewPeekItem
|
||||
let menu: [PeekControllerMenuItem]
|
||||
|
||||
init(account: Account, item: StickerPreviewPeekItem, menu: [PeekControllerMenuItem]) {
|
||||
public init(account: Account, item: StickerPreviewPeekItem, menu: [PeekControllerMenuItem]) {
|
||||
self.account = account
|
||||
self.item = item
|
||||
self.menu = menu
|
||||
}
|
||||
|
||||
func presentation() -> PeekControllerContentPresentation {
|
||||
public func presentation() -> PeekControllerContentPresentation {
|
||||
return .freeform
|
||||
}
|
||||
|
||||
func menuActivation() -> PeerkControllerMenuActivation {
|
||||
public func menuActivation() -> PeerkControllerMenuActivation {
|
||||
return .press
|
||||
}
|
||||
|
||||
func menuItems() -> [PeekControllerMenuItem] {
|
||||
public func menuItems() -> [PeekControllerMenuItem] {
|
||||
return self.menu
|
||||
}
|
||||
|
||||
func node() -> PeekControllerContentNode & ASDisplayNode {
|
||||
public func node() -> PeekControllerContentNode & ASDisplayNode {
|
||||
return StickerPreviewPeekContentNode(account: self.account, item: self.item)
|
||||
}
|
||||
|
||||
func topAccessoryNode() -> ASDisplayNode? {
|
||||
public func topAccessoryNode() -> ASDisplayNode? {
|
||||
return nil
|
||||
}
|
||||
|
||||
func isEqual(to: PeekControllerContent) -> Bool {
|
||||
public func isEqual(to: PeekControllerContent) -> Bool {
|
||||
if let to = to as? StickerPreviewPeekContent {
|
||||
return self.item == to.item
|
||||
} else {
|
||||
|
|
@ -0,0 +1,627 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
D03E3E102304B3440049C28B /* StickerPackPreviewUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D03E3E0E2304B3440049C28B /* StickerPackPreviewUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D03E3E202304B39A0049C28B /* StickerPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E1A2304B3990049C28B /* StickerPreviewController.swift */; };
|
||||
D03E3E212304B39A0049C28B /* StickerPackPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E1B2304B3990049C28B /* StickerPackPreviewController.swift */; };
|
||||
D03E3E222304B39A0049C28B /* StickerPreviewPeekContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E1C2304B3990049C28B /* StickerPreviewPeekContent.swift */; };
|
||||
D03E3E232304B39A0049C28B /* StickerPackPreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E1D2304B3990049C28B /* StickerPackPreviewControllerNode.swift */; };
|
||||
D03E3E242304B39A0049C28B /* StickerPreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E1E2304B3990049C28B /* StickerPreviewControllerNode.swift */; };
|
||||
D03E3E252304B39A0049C28B /* StickerPackPreviewGridItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3E1F2304B3990049C28B /* StickerPackPreviewGridItem.swift */; };
|
||||
D03E3E282304B3FE0049C28B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E272304B3FE0049C28B /* Foundation.framework */; };
|
||||
D03E3E2A2304B4020049C28B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E292304B4020049C28B /* UIKit.framework */; };
|
||||
D03E3E2C2304B4040049C28B /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E2B2304B4040049C28B /* Display.framework */; };
|
||||
D03E3E2E2304B4070049C28B /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E2D2304B4070049C28B /* AsyncDisplayKit.framework */; };
|
||||
D03E3E302304B40B0049C28B /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E2F2304B40B0049C28B /* Postbox.framework */; };
|
||||
D03E3E322304B4110049C28B /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E312304B4110049C28B /* TelegramCore.framework */; };
|
||||
D03E3E342304B4150049C28B /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E332304B4150049C28B /* SwiftSignalKit.framework */; };
|
||||
D03E3E362304B41A0049C28B /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E352304B41A0049C28B /* TelegramUIPreferences.framework */; };
|
||||
D03E3E382304B41E0049C28B /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E372304B41E0049C28B /* AccountContext.framework */; };
|
||||
D03E3E3A2304B4240049C28B /* ShareController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E392304B4240049C28B /* ShareController.framework */; };
|
||||
D03E3E3C2304B4290049C28B /* StickerResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E3B2304B4290049C28B /* StickerResources.framework */; };
|
||||
D03E3E3E2304B42E0049C28B /* AlertUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E3D2304B42E0049C28B /* AlertUI.framework */; };
|
||||
D03E3E402304B4360049C28B /* TextFormat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E3F2304B4360049C28B /* TextFormat.framework */; };
|
||||
D03E3E422304B43E0049C28B /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E412304B43E0049C28B /* TelegramPresentationData.framework */; };
|
||||
D03E3E442304B4410049C28B /* MergeLists.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E432304B4410049C28B /* MergeLists.framework */; };
|
||||
D03E3E462304B4450049C28B /* ActivityIndicator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E452304B4450049C28B /* ActivityIndicator.framework */; };
|
||||
D03E3E4C2304B4E20049C28B /* AnimationUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E4B2304B4E20049C28B /* AnimationUI.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
D03E3E0B2304B3440049C28B /* StickerPackPreviewUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = StickerPackPreviewUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E0E2304B3440049C28B /* StickerPackPreviewUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StickerPackPreviewUI.h; sourceTree = "<group>"; };
|
||||
D03E3E0F2304B3440049C28B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
D03E3E1A2304B3990049C28B /* StickerPreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPreviewController.swift; sourceTree = "<group>"; };
|
||||
D03E3E1B2304B3990049C28B /* StickerPackPreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewController.swift; sourceTree = "<group>"; };
|
||||
D03E3E1C2304B3990049C28B /* StickerPreviewPeekContent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPreviewPeekContent.swift; sourceTree = "<group>"; };
|
||||
D03E3E1D2304B3990049C28B /* StickerPackPreviewControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewControllerNode.swift; sourceTree = "<group>"; };
|
||||
D03E3E1E2304B3990049C28B /* StickerPreviewControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPreviewControllerNode.swift; sourceTree = "<group>"; };
|
||||
D03E3E1F2304B3990049C28B /* StickerPackPreviewGridItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewGridItem.swift; sourceTree = "<group>"; };
|
||||
D03E3E272304B3FE0049C28B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
D03E3E292304B4020049C28B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
D03E3E2B2304B4040049C28B /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E2D2304B4070049C28B /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E2F2304B40B0049C28B /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E312304B4110049C28B /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E332304B4150049C28B /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E352304B41A0049C28B /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E372304B41E0049C28B /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E392304B4240049C28B /* ShareController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ShareController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E3B2304B4290049C28B /* StickerResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = StickerResources.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E3D2304B42E0049C28B /* AlertUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AlertUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E3F2304B4360049C28B /* TextFormat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TextFormat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E412304B43E0049C28B /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E432304B4410049C28B /* MergeLists.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MergeLists.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E452304B4450049C28B /* ActivityIndicator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ActivityIndicator.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E4B2304B4E20049C28B /* AnimationUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AnimationUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
D03E3E082304B3440049C28B /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3E4C2304B4E20049C28B /* AnimationUI.framework in Frameworks */,
|
||||
D03E3E462304B4450049C28B /* ActivityIndicator.framework in Frameworks */,
|
||||
D03E3E442304B4410049C28B /* MergeLists.framework in Frameworks */,
|
||||
D03E3E422304B43E0049C28B /* TelegramPresentationData.framework in Frameworks */,
|
||||
D03E3E402304B4360049C28B /* TextFormat.framework in Frameworks */,
|
||||
D03E3E3E2304B42E0049C28B /* AlertUI.framework in Frameworks */,
|
||||
D03E3E3C2304B4290049C28B /* StickerResources.framework in Frameworks */,
|
||||
D03E3E3A2304B4240049C28B /* ShareController.framework in Frameworks */,
|
||||
D03E3E382304B41E0049C28B /* AccountContext.framework in Frameworks */,
|
||||
D03E3E362304B41A0049C28B /* TelegramUIPreferences.framework in Frameworks */,
|
||||
D03E3E342304B4150049C28B /* SwiftSignalKit.framework in Frameworks */,
|
||||
D03E3E322304B4110049C28B /* TelegramCore.framework in Frameworks */,
|
||||
D03E3E302304B40B0049C28B /* Postbox.framework in Frameworks */,
|
||||
D03E3E2E2304B4070049C28B /* AsyncDisplayKit.framework in Frameworks */,
|
||||
D03E3E2C2304B4040049C28B /* Display.framework in Frameworks */,
|
||||
D03E3E2A2304B4020049C28B /* UIKit.framework in Frameworks */,
|
||||
D03E3E282304B3FE0049C28B /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
D03E3E012304B3440049C28B = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3E0F2304B3440049C28B /* Info.plist */,
|
||||
D03E3E0D2304B3440049C28B /* Sources */,
|
||||
D03E3E0C2304B3440049C28B /* Products */,
|
||||
D03E3E262304B3FE0049C28B /* Frameworks */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3E0C2304B3440049C28B /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3E0B2304B3440049C28B /* StickerPackPreviewUI.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3E0D2304B3440049C28B /* Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3E1B2304B3990049C28B /* StickerPackPreviewController.swift */,
|
||||
D03E3E1D2304B3990049C28B /* StickerPackPreviewControllerNode.swift */,
|
||||
D03E3E1F2304B3990049C28B /* StickerPackPreviewGridItem.swift */,
|
||||
D03E3E1A2304B3990049C28B /* StickerPreviewController.swift */,
|
||||
D03E3E1E2304B3990049C28B /* StickerPreviewControllerNode.swift */,
|
||||
D03E3E1C2304B3990049C28B /* StickerPreviewPeekContent.swift */,
|
||||
D03E3E0E2304B3440049C28B /* StickerPackPreviewUI.h */,
|
||||
);
|
||||
path = Sources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D03E3E262304B3FE0049C28B /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3E4B2304B4E20049C28B /* AnimationUI.framework */,
|
||||
D03E3E452304B4450049C28B /* ActivityIndicator.framework */,
|
||||
D03E3E432304B4410049C28B /* MergeLists.framework */,
|
||||
D03E3E412304B43E0049C28B /* TelegramPresentationData.framework */,
|
||||
D03E3E3F2304B4360049C28B /* TextFormat.framework */,
|
||||
D03E3E3D2304B42E0049C28B /* AlertUI.framework */,
|
||||
D03E3E3B2304B4290049C28B /* StickerResources.framework */,
|
||||
D03E3E392304B4240049C28B /* ShareController.framework */,
|
||||
D03E3E372304B41E0049C28B /* AccountContext.framework */,
|
||||
D03E3E352304B41A0049C28B /* TelegramUIPreferences.framework */,
|
||||
D03E3E332304B4150049C28B /* SwiftSignalKit.framework */,
|
||||
D03E3E312304B4110049C28B /* TelegramCore.framework */,
|
||||
D03E3E2F2304B40B0049C28B /* Postbox.framework */,
|
||||
D03E3E2D2304B4070049C28B /* AsyncDisplayKit.framework */,
|
||||
D03E3E2B2304B4040049C28B /* Display.framework */,
|
||||
D03E3E292304B4020049C28B /* UIKit.framework */,
|
||||
D03E3E272304B3FE0049C28B /* Foundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
D03E3E062304B3440049C28B /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3E102304B3440049C28B /* StickerPackPreviewUI.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
D03E3E0A2304B3440049C28B /* StickerPackPreviewUI */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = D03E3E132304B3440049C28B /* Build configuration list for PBXNativeTarget "StickerPackPreviewUI" */;
|
||||
buildPhases = (
|
||||
D03E3E062304B3440049C28B /* Headers */,
|
||||
D03E3E072304B3440049C28B /* Sources */,
|
||||
D03E3E082304B3440049C28B /* Frameworks */,
|
||||
D03E3E092304B3440049C28B /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = StickerPackPreviewUI;
|
||||
productName = StickerPackPreviewUI;
|
||||
productReference = D03E3E0B2304B3440049C28B /* StickerPackPreviewUI.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
D03E3E022304B3440049C28B /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
DefaultBuildSystemTypeForWorkspace = Latest;
|
||||
LastUpgradeCheck = 1030;
|
||||
ORGANIZATIONNAME = "Telegram Messenger LLP";
|
||||
TargetAttributes = {
|
||||
D03E3E0A2304B3440049C28B = {
|
||||
CreatedOnToolsVersion = 10.3;
|
||||
LastSwiftMigration = 1030;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = D03E3E052304B3440049C28B /* Build configuration list for PBXProject "StickerPackPreviewUI_Xcode" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = D03E3E012304B3440049C28B;
|
||||
productRefGroup = D03E3E0C2304B3440049C28B /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
D03E3E0A2304B3440049C28B /* StickerPackPreviewUI */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
D03E3E092304B3440049C28B /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
D03E3E072304B3440049C28B /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3E202304B39A0049C28B /* StickerPreviewController.swift in Sources */,
|
||||
D03E3E242304B39A0049C28B /* StickerPreviewControllerNode.swift in Sources */,
|
||||
D03E3E252304B39A0049C28B /* StickerPackPreviewGridItem.swift in Sources */,
|
||||
D03E3E232304B39A0049C28B /* StickerPackPreviewControllerNode.swift in Sources */,
|
||||
D03E3E222304B39A0049C28B /* StickerPreviewPeekContent.swift in Sources */,
|
||||
D03E3E212304B39A0049C28B /* StickerPackPreviewController.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
D03E3E112304B3440049C28B /* DebugAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = DebugAppStoreLLC;
|
||||
};
|
||||
D03E3E122304B3440049C28B /* ReleaseAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3E142304B3440049C28B /* DebugAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.StickerPackPreviewUI;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DebugAppStoreLLC;
|
||||
};
|
||||
D03E3E152304B3440049C28B /* ReleaseAppStoreLLC */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.StickerPackPreviewUI;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3E162304B3700049C28B /* DebugHockeyapp */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = DebugHockeyapp;
|
||||
};
|
||||
D03E3E172304B3700049C28B /* DebugHockeyapp */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.StickerPackPreviewUI;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = DebugHockeyapp;
|
||||
};
|
||||
D03E3E182304B37D0049C28B /* ReleaseHockeyappInternal */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
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_IMPLICIT_RETAIN_SELF = 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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = ReleaseHockeyappInternal;
|
||||
};
|
||||
D03E3E192304B37D0049C28B /* ReleaseHockeyappInternal */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACH_O_TYPE = staticlib;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.telegram.StickerPackPreviewUI;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = ReleaseHockeyappInternal;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
D03E3E052304B3440049C28B /* Build configuration list for PBXProject "StickerPackPreviewUI_Xcode" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D03E3E112304B3440049C28B /* DebugAppStoreLLC */,
|
||||
D03E3E162304B3700049C28B /* DebugHockeyapp */,
|
||||
D03E3E122304B3440049C28B /* ReleaseAppStoreLLC */,
|
||||
D03E3E182304B37D0049C28B /* ReleaseHockeyappInternal */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = ReleaseAppStoreLLC;
|
||||
};
|
||||
D03E3E132304B3440049C28B /* Build configuration list for PBXNativeTarget "StickerPackPreviewUI" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
D03E3E142304B3440049C28B /* DebugAppStoreLLC */,
|
||||
D03E3E172304B3700049C28B /* DebugHockeyapp */,
|
||||
D03E3E152304B3440049C28B /* ReleaseAppStoreLLC */,
|
||||
D03E3E192304B37D0049C28B /* ReleaseHockeyappInternal */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = ReleaseAppStoreLLC;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = D03E3E022304B3440049C28B /* Project object */;
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ import TelegramUIPreferences
|
|||
import ItemListUI
|
||||
import OverlayStatusController
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
public enum ArchivedStickerPacksControllerMode {
|
||||
case stickers
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import TelegramUIPreferences
|
|||
import ItemListUI
|
||||
import AccountContext
|
||||
import ItemListPeerItem
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private final class BlockedPeersControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import TelegramPresentationData
|
|||
import ItemListUI
|
||||
import AccountContext
|
||||
import AlertUI
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
|
||||
private let rankMaxLength: Int32 = 16
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import TemporaryCachedPeerDataManager
|
|||
import AlertUI
|
||||
import UndoUI
|
||||
import ItemListPeerItem
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private final class ChannelAdminsControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import TelegramStringFormatting
|
|||
import OverlayStatusController
|
||||
import AccountContext
|
||||
import AlertUI
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
|
||||
private final class ChannelBannedMemberControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import OverlayStatusController
|
|||
import AccountContext
|
||||
import AlertUI
|
||||
import ItemListPeerItem
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private final class ChannelDiscussionGroupSetupControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import AlertUI
|
|||
import GalleryUI
|
||||
import LegacyUI
|
||||
import ChatListUI
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
|
||||
private final class ChannelInfoControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import TemporaryCachedPeerDataManager
|
|||
import AlertUI
|
||||
import ItemListPeerItem
|
||||
import TelegramPermissionsUI
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private final class ChannelPermissionsControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import InstantPageUI
|
|||
import LocationUI
|
||||
import BotPaymentsUI
|
||||
import DeleteChatPeerActionSheetItem
|
||||
import HashtagSearchUI
|
||||
|
||||
public enum ChatControllerPeekActions {
|
||||
case standard
|
||||
|
|
@ -120,7 +121,7 @@ let ChatControllerCount = Atomic<Int32>(value: 0)
|
|||
public final class ChatControllerImpl: TelegramBaseController, ChatController, GalleryHiddenMediaTarget, UIDropInteractionDelegate {
|
||||
private var validLayout: ContainerViewLayout?
|
||||
|
||||
weak var parentController: ViewController?
|
||||
public weak var parentController: ViewController?
|
||||
|
||||
public var peekActions: ChatControllerPeekActions = .standard
|
||||
private var didSetup3dTouch: Bool = false
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import SwiftSignalKit
|
|||
import TelegramPresentationData
|
||||
import MergeLists
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private struct PeerSpecificPackData {
|
||||
let peer: Peer
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import Postbox
|
|||
import TelegramPresentationData
|
||||
import StickerResources
|
||||
import AccountContext
|
||||
import AnimationUI
|
||||
|
||||
enum ChatMediaInputStickerGridSectionAccessory {
|
||||
case none
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import SwiftSignalKit
|
|||
import Postbox
|
||||
import TelegramPresentationData
|
||||
import StickerResources
|
||||
import AnimationUI
|
||||
|
||||
final class ChatMediaInputStickerPackItem: ListViewItem {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import TelegramPresentationData
|
|||
import MergeLists
|
||||
import OverlayStatusController
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
final class TrendingPaneInteraction {
|
||||
let installPack: (ItemCollectionInfo) -> Void
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import AccountContext
|
|||
import MediaResources
|
||||
import StickerResources
|
||||
import ContextUI
|
||||
import AnimationUI
|
||||
|
||||
private let nameFont = Font.medium(14.0)
|
||||
private let inlineBotPrefixFont = Font.regular(14.0)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import PhotoResources
|
|||
import TelegramUniversalVideoContent
|
||||
import TelegramStringFormatting
|
||||
import GalleryUI
|
||||
import AnimationUI
|
||||
|
||||
private struct FetchControls {
|
||||
let fetch: (Bool) -> Void
|
||||
|
|
|
|||
|
|
@ -1,60 +0,0 @@
|
|||
import Foundation
|
||||
import UIKit
|
||||
import AsyncDisplayKit
|
||||
import Display
|
||||
import TelegramCore
|
||||
import Postbox
|
||||
import TelegramPresentationData
|
||||
|
||||
final class ChatMultipleAvatarsNavigationNode: ASDisplayNode {
|
||||
private let multipleAvatarsNode: MultipleAvatarsNode
|
||||
|
||||
private weak var account: Account?
|
||||
private var theme: PresentationTheme?
|
||||
private var peers: [Peer] = []
|
||||
|
||||
override init() {
|
||||
self.multipleAvatarsNode = MultipleAvatarsNode()
|
||||
|
||||
super.init()
|
||||
|
||||
self.addSubnode(self.multipleAvatarsNode)
|
||||
}
|
||||
|
||||
override func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize {
|
||||
if constrainedSize.height.isLessThanOrEqualTo(32.0) {
|
||||
return CGSize(width: 26.0, height: 26.0)
|
||||
} else {
|
||||
return CGSize(width: 37.0, height: 37.0)
|
||||
}
|
||||
}
|
||||
|
||||
override func layout() {
|
||||
super.layout()
|
||||
|
||||
let bounds = self.bounds
|
||||
if let account = self.account, let theme = self.theme, !bounds.width.isZero {
|
||||
let avatarsLayout = MultipleAvatarsNode.asyncLayout(self.multipleAvatarsNode)
|
||||
let apply = avatarsLayout(account, theme, self.peers, bounds.size)
|
||||
let _ = apply(false)
|
||||
}
|
||||
if self.bounds.size.height.isLessThanOrEqualTo(26.0) {
|
||||
self.multipleAvatarsNode.frame = bounds.offsetBy(dx: 8.0, dy: 0.0)
|
||||
} else {
|
||||
self.multipleAvatarsNode.frame = bounds.offsetBy(dx: 10.0, dy: 1.0)
|
||||
}
|
||||
}
|
||||
|
||||
func setPeers(account: Account, theme: PresentationTheme, peers: [Peer], animated: Bool) {
|
||||
self.account = account
|
||||
self.peers = peers
|
||||
|
||||
let bounds = self.bounds
|
||||
if !bounds.width.isZero {
|
||||
let avatarsLayout = MultipleAvatarsNode.asyncLayout(self.multipleAvatarsNode)
|
||||
let apply = avatarsLayout(account, theme, peers, bounds.size)
|
||||
let _ = apply(animated)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -13,6 +13,8 @@ import TemporaryCachedPeerDataManager
|
|||
import AlertUI
|
||||
import OpenInExternalAppUI
|
||||
import InstantPageUI
|
||||
import HashtagSearchUI
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private final class ChatRecentActionsListOpaqueState {
|
||||
let entries: [ChatRecentActionsEntry]
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import ItemListUI
|
|||
import AccountContext
|
||||
import AlertUI
|
||||
import LegacyUI
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
|
||||
private struct CreateChannelArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import PhotoResources
|
|||
import LegacyUI
|
||||
import LocationUI
|
||||
import ItemListPeerItem
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
|
||||
public enum CreateGroupMode {
|
||||
case generic
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import AccountContext
|
|||
import AlertUI
|
||||
import PhotoResources
|
||||
import MediaResources
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
|
||||
private enum DeviceContactInfoAction {
|
||||
case sendMessage
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import ItemListUI
|
|||
import AccountContext
|
||||
import GalleryUI
|
||||
import LegacyUI
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
|
||||
private struct EditSettingsItemArguments {
|
||||
let context: AccountContext
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import TelegramPresentationData
|
|||
import TelegramUIPreferences
|
||||
import ItemListUI
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private final class FeaturedStickerPacksControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import TelegramUIPrivateModule
|
|||
import MediaResources
|
||||
import PhotoResources
|
||||
import ImageBlur
|
||||
import AnimationUI
|
||||
|
||||
public func fetchCachedResourceRepresentation(account: Account, resource: MediaResource, representation: CachedMediaResourceRepresentation) -> Signal<CachedMediaResourceRepresentationResult, NoError> {
|
||||
if let representation = representation as? CachedStickerAJpegRepresentation {
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ import LocationUI
|
|||
import ItemListPeerItem
|
||||
import ContactListUI
|
||||
import ChatListUI
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private final class GroupInfoArguments {
|
||||
let context: AccountContext
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import TelegramPresentationData
|
|||
import TelegramUIPreferences
|
||||
import ItemListUI
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private final class GroupStickerPackSetupControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import SwiftSignalKit
|
|||
import TelegramPresentationData
|
||||
import MergeLists
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private struct ChatContextResultStableId: Hashable {
|
||||
let result: ChatContextResult
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import AVFoundation
|
|||
import RadialStatusNode
|
||||
import StickerResources
|
||||
import PhotoResources
|
||||
import AnimationUI
|
||||
|
||||
final class HorizontalListContextResultsChatInputPanelItem: ListViewItem {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import AsyncDisplayKit
|
|||
import Postbox
|
||||
import StickerResources
|
||||
import AccountContext
|
||||
import AnimationUI
|
||||
|
||||
final class HorizontalStickerGridItem: GridItem {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import SwiftSignalKit
|
|||
import TelegramPresentationData
|
||||
import MergeLists
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
final class HorizontalStickersChatContextPanelInteraction {
|
||||
var previewedStickerItem: StickerPackItem?
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import TelegramUIPreferences
|
|||
import ItemListUI
|
||||
import TextFormat
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private final class InstalledStickerPacksControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import TelegramCore
|
|||
import TelegramPresentationData
|
||||
import ItemListUI
|
||||
import StickerResources
|
||||
import AnimationUI
|
||||
|
||||
struct ItemListStickerPackItemEditing: Equatable {
|
||||
let editable: Bool
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import TelegramCore
|
|||
import TelegramPresentationData
|
||||
import StickerResources
|
||||
import AccountContext
|
||||
import AnimationUI
|
||||
|
||||
class MediaInputPaneTrendingItem: ListViewItem {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -1,178 +0,0 @@
|
|||
import Foundation
|
||||
import UIKit
|
||||
import AsyncDisplayKit
|
||||
import SwiftSignalKit
|
||||
import Metal
|
||||
|
||||
#if false//!targetEnvironment(simulator)
|
||||
|
||||
final class MetalAnimationRenderer: ASDisplayNode, AnimationRenderer {
|
||||
private let device: MTLDevice
|
||||
private let pipelineState: MTLRenderPipelineState
|
||||
private let commandQueue: MTLCommandQueue
|
||||
private let vertexBuffer: MTLBuffer
|
||||
private let colorTexture: MTLTexture
|
||||
private let alphaTexture: MTLTexture
|
||||
private let samplerColor: MTLSamplerState
|
||||
private let samplerAlpha: MTLSamplerState
|
||||
|
||||
private var metalLayer: CAMetalLayer {
|
||||
return self.layer as! CAMetalLayer
|
||||
}
|
||||
|
||||
override init() {
|
||||
let device = MTLCreateSystemDefaultDevice()!
|
||||
|
||||
self.device = device
|
||||
|
||||
do {
|
||||
let library = try device.makeLibrary(source:
|
||||
"""
|
||||
using namespace metal;
|
||||
|
||||
struct VertexIn {
|
||||
packed_float3 position;
|
||||
packed_float2 texCoord;
|
||||
};
|
||||
|
||||
struct VertexOut {
|
||||
float4 position [[position]];
|
||||
float2 texCoord;
|
||||
};
|
||||
|
||||
vertex VertexOut basic_vertex(
|
||||
const device VertexIn* vertex_array [[ buffer(0) ]],
|
||||
unsigned int vid [[ vertex_id ]]
|
||||
) {
|
||||
VertexIn VertexIn = vertex_array[vid];
|
||||
|
||||
VertexOut VertexOut;
|
||||
VertexOut.position = float4(VertexIn.position, 1.0);
|
||||
VertexOut.texCoord = VertexIn.texCoord;
|
||||
|
||||
return VertexOut;
|
||||
}
|
||||
|
||||
fragment float4 basic_fragment(
|
||||
VertexOut interpolated [[stage_in]],
|
||||
texture2d<float> texColor [[ texture(0) ]],
|
||||
sampler samplerColor [[ sampler(0) ]]//,
|
||||
//texture2d<float> texA [[ texture(1) ]],
|
||||
//sampler samplerA [[ sampler(1) ]]
|
||||
) {
|
||||
float4 color = texColor.sample(samplerColor, interpolated.texCoord);
|
||||
float4 alpha = 1.0;//texA.sample(samplerA, interpolated.texCoord);
|
||||
return float4(color.r * alpha.a, color.g * alpha.a, color.b * alpha.a, alpha.a);
|
||||
}
|
||||
""", options: nil)
|
||||
|
||||
let fragmentProgram = library.makeFunction(name: "basic_fragment")
|
||||
let vertexProgram = library.makeFunction(name: "basic_vertex")
|
||||
|
||||
let pipelineStateDescriptor = MTLRenderPipelineDescriptor()
|
||||
pipelineStateDescriptor.vertexFunction = vertexProgram
|
||||
pipelineStateDescriptor.fragmentFunction = fragmentProgram
|
||||
pipelineStateDescriptor.colorAttachments[0].pixelFormat = .bgra8Unorm
|
||||
|
||||
self.pipelineState = try! device.makeRenderPipelineState(descriptor: pipelineStateDescriptor)
|
||||
|
||||
self.commandQueue = device.makeCommandQueue()!
|
||||
|
||||
let vertexData: [Float] = [
|
||||
-1.0, -1.0, 0.0, 0.0, 1.0,
|
||||
-1.0, 1.0, 0.0, 0.0, 0.0,
|
||||
1.0, -1.0, 0.0, 1.0, 1.0,
|
||||
1.0, -1.0, 0.0, 1.0, 1.0,
|
||||
-1.0, 1.0, 0.0, 0.0, 0.0,
|
||||
1.0, 1.0, 0.0, 1.0, 0.0
|
||||
]
|
||||
|
||||
let dataSize = vertexData.count * MemoryLayout.size(ofValue: vertexData[0])
|
||||
self.vertexBuffer = device.makeBuffer(bytes: vertexData, length: dataSize, options: [])!
|
||||
|
||||
let colorTextureDesc: MTLTextureDescriptor = MTLTextureDescriptor.texture2DDescriptor(pixelFormat: .pvrtc_rgb_4bpp, width: 512, height: 512, mipmapped: false)
|
||||
colorTextureDesc.sampleCount = 1
|
||||
if #available(iOS 9.0, *) {
|
||||
colorTextureDesc.storageMode = .private
|
||||
colorTextureDesc.usage = .shaderRead
|
||||
}
|
||||
colorTextureDesc.textureType = .type2D
|
||||
|
||||
self.colorTexture = device.makeTexture(descriptor: colorTextureDesc)!
|
||||
|
||||
let alphaTextureDesc: MTLTextureDescriptor = MTLTextureDescriptor.texture2DDescriptor(pixelFormat: .a8Unorm, width: 320, height: 320, mipmapped: false)
|
||||
alphaTextureDesc.sampleCount = 1
|
||||
if #available(iOS 9.0, *) {
|
||||
alphaTextureDesc.storageMode = .private
|
||||
alphaTextureDesc.usage = .shaderRead
|
||||
}
|
||||
alphaTextureDesc.textureType = .type2D
|
||||
|
||||
self.alphaTexture = device.makeTexture(descriptor: alphaTextureDesc)!
|
||||
|
||||
let sampler = MTLSamplerDescriptor()
|
||||
sampler.minFilter = MTLSamplerMinMagFilter.nearest
|
||||
sampler.magFilter = MTLSamplerMinMagFilter.nearest
|
||||
sampler.mipFilter = MTLSamplerMipFilter.nearest
|
||||
sampler.maxAnisotropy = 1
|
||||
sampler.sAddressMode = MTLSamplerAddressMode.clampToEdge
|
||||
sampler.tAddressMode = MTLSamplerAddressMode.clampToEdge
|
||||
sampler.rAddressMode = MTLSamplerAddressMode.clampToEdge
|
||||
sampler.normalizedCoordinates = true
|
||||
sampler.lodMinClamp = 0.0
|
||||
sampler.lodMaxClamp = .greatestFiniteMagnitude
|
||||
self.samplerColor = device.makeSamplerState(descriptor: sampler)!
|
||||
self.samplerAlpha = device.makeSamplerState(descriptor: sampler)!
|
||||
} catch let e {
|
||||
print(e)
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
super.init()
|
||||
|
||||
self.setLayerBlock { () -> CALayer in
|
||||
return CAMetalLayer()
|
||||
}
|
||||
|
||||
self.metalLayer.device = self.device
|
||||
self.metalLayer.pixelFormat = .bgra8Unorm
|
||||
self.metalLayer.framebufferOnly = true
|
||||
self.metalLayer.isOpaque = false
|
||||
self.metalLayer.contentsScale = 2.0
|
||||
}
|
||||
|
||||
func render(queue: Queue, width: Int, height: Int, bytes: UnsafeRawPointer, length: Int, completion: @escaping () -> Void) {
|
||||
if self.metalLayer.bounds.width.isZero {
|
||||
return
|
||||
}
|
||||
|
||||
let bgrgLength = width * 2 * height
|
||||
//let alphaLength = width * height
|
||||
|
||||
self.colorTexture.replace(region: MTLRegionMake2D(0, 0, width, height), mipmapLevel: 0, withBytes: bytes.assumingMemoryBound(to: UInt8.self), bytesPerRow: width / 2)
|
||||
//self.alphaTexture.replace(region: MTLRegionMake2D(0, 0, width, height), mipmapLevel: 0, withBytes: bytes.assumingMemoryBound(to: UInt8.self).advanced(by: bgrgLength), bytesPerRow: width)
|
||||
|
||||
let renderPassDescriptor = MTLRenderPassDescriptor()
|
||||
let drawable = self.metalLayer.nextDrawable()!
|
||||
renderPassDescriptor.colorAttachments[0].texture = drawable.texture
|
||||
renderPassDescriptor.colorAttachments[0].loadAction = .clear
|
||||
renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
|
||||
|
||||
let commandBuffer = commandQueue.makeCommandBuffer()!
|
||||
|
||||
let renderEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: renderPassDescriptor)!
|
||||
renderEncoder.setRenderPipelineState(self.pipelineState)
|
||||
renderEncoder.setVertexBuffer(self.vertexBuffer, offset: 0, index: 0)
|
||||
renderEncoder.setFragmentTexture(self.colorTexture, index: 0)
|
||||
renderEncoder.setFragmentSamplerState(self.samplerColor, index: 0)
|
||||
renderEncoder.setFragmentTexture(self.alphaTexture, index: 1)
|
||||
renderEncoder.setFragmentSamplerState(self.samplerAlpha, index: 1)
|
||||
renderEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: 6, instanceCount: 1)
|
||||
renderEncoder.endEncoding()
|
||||
|
||||
commandBuffer.present(drawable)
|
||||
commandBuffer.commit()
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
import Foundation
|
||||
import UIKit
|
||||
import Display
|
||||
import AsyncDisplayKit
|
||||
import Postbox
|
||||
import TelegramCore
|
||||
import TelegramPresentationData
|
||||
import AvatarNode
|
||||
|
||||
private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 13.0)!
|
||||
|
||||
final class MultipleAvatarsNode: ASDisplayNode {
|
||||
private var nodes: [(Peer, AvatarNode)] = []
|
||||
|
||||
static func asyncLayout(_ current: MultipleAvatarsNode?) -> (Account, PresentationTheme, [Peer], CGSize) -> (Bool) -> MultipleAvatarsNode {
|
||||
let currentNodes: [(Peer, AvatarNode)] = current?.nodes ?? []
|
||||
return { account, theme, peers, size in
|
||||
var node: MultipleAvatarsNode
|
||||
if let current = current {
|
||||
node = current
|
||||
} else {
|
||||
node = MultipleAvatarsNode()
|
||||
}
|
||||
|
||||
var resultNodes: [(Peer, AvatarNode)] = []
|
||||
for peer in peers {
|
||||
var found = false
|
||||
inner: for (currentPeer, currentNode) in currentNodes {
|
||||
if currentPeer.id == peer.id {
|
||||
resultNodes.append((peer, currentNode))
|
||||
found = true
|
||||
break inner
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
resultNodes.append((peer, AvatarNode(font: avatarFont)))
|
||||
}
|
||||
if resultNodes.count == 4 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return { animated in
|
||||
let partitionSize = floor(size.width / 2.0)
|
||||
let singleSize = partitionSize - 1.0
|
||||
|
||||
var index = 0
|
||||
for (peer, avatarNode) in resultNodes {
|
||||
let xPosition: CGFloat = index % 2 == 0 ? 0.0 : size.width - singleSize
|
||||
let yPosition = index / 2 == 0 ? 0.0 : size.height - singleSize
|
||||
let avatarFrame = CGRect(origin: CGPoint(x: xPosition, y: yPosition), size: CGSize(width: singleSize, height: singleSize))
|
||||
if avatarNode.supernode == nil {
|
||||
node.addSubnode(avatarNode)
|
||||
avatarNode.frame = avatarFrame
|
||||
if animated {
|
||||
avatarNode.layer.animateScale(from: 0.2, to: 1.0, duration: 0.2)
|
||||
avatarNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
|
||||
}
|
||||
} else {
|
||||
let distance = CGPoint(x: avatarNode.frame.midX - avatarFrame.midX, y: avatarNode.frame.midY - avatarFrame.midY)
|
||||
avatarNode.frame = avatarFrame
|
||||
if animated {
|
||||
avatarNode.layer.animatePosition(from: distance, to: CGPoint(), duration: 0.2, timingFunction: CAMediaTimingFunctionName.easeInEaseOut.rawValue, additive: true)
|
||||
}
|
||||
}
|
||||
avatarNode.setPeer(account: account, theme: theme, peer: peer)
|
||||
index += 1
|
||||
}
|
||||
index += 1
|
||||
for (_, currentNode) in node.nodes {
|
||||
var found = false
|
||||
inner: for (_, resultNode) in resultNodes {
|
||||
if currentNode === resultNode {
|
||||
found = true
|
||||
break inner
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
if animated {
|
||||
currentNode.layer.animateScale(from: 1.0, to: 0.4, duration: 0.2, removeOnCompletion: false)
|
||||
currentNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak currentNode] _ in
|
||||
currentNode?.removeFromSupernode()
|
||||
})
|
||||
} else {
|
||||
currentNode.removeFromSupernode()
|
||||
}
|
||||
}
|
||||
}
|
||||
node.nodes = resultNodes
|
||||
|
||||
return node
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -12,6 +12,7 @@ import AccountContext
|
|||
import Tuples
|
||||
import StickerResources
|
||||
import PhotoResources
|
||||
import AnimationUI
|
||||
|
||||
private enum NotificationContentAuthorizationError {
|
||||
case unauthorized
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import ItemListPeerItem
|
|||
import ContactsPeerItem
|
||||
import ChatListSearchItemHeader
|
||||
import ChatListUI
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private final class NotificationExceptionState : Equatable {
|
||||
let mode:NotificationExceptionMode
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import AccountContext
|
|||
import GalleryUI
|
||||
import InstantPageUI
|
||||
import LocationUI
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private enum ChatMessageGalleryControllerData {
|
||||
case url(String)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import OverlayStatusController
|
|||
import AlertUI
|
||||
import PassportUI
|
||||
import InstantPageUI
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private func defaultNavigationForPeerId(_ peerId: PeerId?, navigation: ChatControllerInteractionNavigateToPeer) -> ChatControllerInteractionNavigateToPeer {
|
||||
if case .default = navigation {
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import AccountContext
|
|||
import AlertUI
|
||||
import ItemListPeerItem
|
||||
import TelegramPermissionsUI
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private struct PeerNearbyEntry {
|
||||
let peer: (Peer, CachedPeerData?)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import TelegramUIPreferences
|
|||
import ItemListUI
|
||||
import AccountContext
|
||||
import ItemListPeerItem
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private final class SelectivePrivacyPeersControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ import SearchUI
|
|||
import ItemListPeerItem
|
||||
import CallListUI
|
||||
import ChatListUI
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
import ItemListPeerActionItem
|
||||
|
||||
private let maximumNumberOfAccounts = 3
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import LegacyComponents
|
|||
import TelegramUIPrivateModule
|
||||
import MergeLists
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
final class StickerPaneSearchInteraction {
|
||||
let open: (StickerPackCollectionInfo) -> Void
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import Postbox
|
|||
import TelegramPresentationData
|
||||
import StickerResources
|
||||
import AccountContext
|
||||
import AnimationUI
|
||||
|
||||
final class StickerPaneSearchStickerSection: GridSection {
|
||||
let code: String
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import SwiftSignalKit
|
|||
import TelegramPresentationData
|
||||
import MergeLists
|
||||
import AccountContext
|
||||
import StickerPackPreviewUI
|
||||
|
||||
private struct StickersChatInputContextPanelEntryStableId: Hashable {
|
||||
let ids: [MediaId]
|
||||
|
|
|
|||
|
|
@ -15,6 +15,4 @@ module TelegramUIPrivateModule {
|
|||
header "../TGPresentationAutoNightPreferences.h"
|
||||
header "../TGProxyItem.h"
|
||||
header "../UIImage+ImageEffects.h"
|
||||
header "../YUV.h"
|
||||
header "../../third-party/bc1/TextureCompression.h"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ import AccountContext
|
|||
import SafariServices
|
||||
import OpenInExternalAppUI
|
||||
import InstantPageUI
|
||||
import HashtagSearchUI
|
||||
import StickerPackPreviewUI
|
||||
|
||||
func handleTextLinkActionImpl(context: AccountContext, peerId: PeerId?, navigateDisposable: MetaDisposable, controller: ViewController, action: TextLinkItemActionType, itemLink: TextLinkItem) {
|
||||
let presentImpl: (ViewController, Any?) -> Void = { controllerToPresent, _ in
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import ShareController
|
|||
import AlertUI
|
||||
import TelegramNotices
|
||||
import GalleryUI
|
||||
import ItemListAvatarAndNameInfoItem
|
||||
|
||||
private final class UserInfoControllerArguments {
|
||||
let account: Account
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
0910B0F121FB3DE100F8F87D /* WallpaperPatternPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0910B0F021FB3DE100F8F87D /* WallpaperPatternPanelNode.swift */; };
|
||||
091417F221EF4E5D00C8325A /* WallpaperGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091417F121EF4E5D00C8325A /* WallpaperGalleryController.swift */; };
|
||||
091417F421EF4F5F00C8325A /* WallpaperGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */; };
|
||||
091954792294754E00E11046 /* AnimatedStickerUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091954782294754E00E11046 /* AnimatedStickerUtils.swift */; };
|
||||
091BEAB3214552D9003AEA30 /* Vision.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02DADBE2138D76F00116225 /* Vision.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
0921F60E228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */; };
|
||||
092F368D2154AAEA001A9F49 /* SFCompactRounded-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */; };
|
||||
|
|
@ -179,23 +178,6 @@
|
|||
D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00ACA592022897D0045D427 /* ProcessedPeerRestrictionText.swift */; };
|
||||
D00BDA1F1EE5B69200C64C5E /* ChannelAdminController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00BDA1E1EE5B69200C64C5E /* ChannelAdminController.swift */; };
|
||||
D010E17D22C238BC009324D4 /* RLottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D010E17C22C238BC009324D4 /* RLottie.framework */; };
|
||||
D01590A622BD460C0017C33E /* MetalAnimationRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01590A522BD460C0017C33E /* MetalAnimationRenderer.swift */; };
|
||||
D01590A822BD462C0017C33E /* SoftwareAnimationRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01590A722BD462C0017C33E /* SoftwareAnimationRenderer.swift */; };
|
||||
D01590AB22BD467B0017C33E /* AnimationRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01590AA22BD467B0017C33E /* AnimationRenderer.swift */; };
|
||||
D01590AE22BD58AD0017C33E /* YUV.h in Headers */ = {isa = PBXBuildFile; fileRef = D01590AC22BD58AD0017C33E /* YUV.h */; };
|
||||
D01590AF22BD58AD0017C33E /* YUV.m in Sources */ = {isa = PBXBuildFile; fileRef = D01590AD22BD58AD0017C33E /* YUV.m */; };
|
||||
D01590BA22BDAEBC0017C33E /* ColorVec.h in Headers */ = {isa = PBXBuildFile; fileRef = D01590B022BDAEB30017C33E /* ColorVec.h */; };
|
||||
D01590BB22BDAEBC0017C33E /* BC1Compression.h in Headers */ = {isa = PBXBuildFile; fileRef = D01590B122BDAEBB0017C33E /* BC1Compression.h */; };
|
||||
D01590BC22BDAEBC0017C33E /* BMPImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D01590B222BDAEBB0017C33E /* BMPImage.h */; };
|
||||
D01590BD22BDAEBC0017C33E /* DDSImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D01590B322BDAEBB0017C33E /* DDSImage.cpp */; };
|
||||
D01590BE22BDAEBC0017C33E /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D01590B422BDAEBB0017C33E /* Image.cpp */; };
|
||||
D01590BF22BDAEBC0017C33E /* Image.h in Headers */ = {isa = PBXBuildFile; fileRef = D01590B522BDAEBC0017C33E /* Image.h */; };
|
||||
D01590C022BDAEBC0017C33E /* BC1Compression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D01590B622BDAEBC0017C33E /* BC1Compression.cpp */; };
|
||||
D01590C122BDAEBC0017C33E /* DDSImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D01590B722BDAEBC0017C33E /* DDSImage.h */; };
|
||||
D01590C222BDAEBC0017C33E /* TypeDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = D01590B822BDAEBC0017C33E /* TypeDefinitions.h */; };
|
||||
D01590C322BDAEBC0017C33E /* BMPImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D01590B922BDAEBC0017C33E /* BMPImage.cpp */; };
|
||||
D01590C722BE61CB0017C33E /* TextureCompression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D01590C522BE61CB0017C33E /* TextureCompression.cpp */; };
|
||||
D01590C922BE62C40017C33E /* TextureCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = D01590C822BE62C40017C33E /* TextureCompression.h */; };
|
||||
D015E04F225D2E5900CB9E8A /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D015E04E225D2E5900CB9E8A /* WebP.framework */; };
|
||||
D017734C22049BF800DA06A7 /* UpgradedAccounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = D017734B22049BF800DA06A7 /* UpgradedAccounts.swift */; };
|
||||
D01776BE1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01776BD1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift */; };
|
||||
|
|
@ -238,11 +220,15 @@
|
|||
D0383EE6207D299600C45548 /* EmojisChatInputPanelItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0383EE5207D299600C45548 /* EmojisChatInputPanelItem.swift */; };
|
||||
D038AC5322F88A3600320981 /* ImageBlur.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D038AC5222F88A3600320981 /* ImageBlur.framework */; };
|
||||
D03AA4DF202DBF6F0056C405 /* ChatContextResultPeekContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03AA4DE202DBF6F0056C405 /* ChatContextResultPeekContentNode.swift */; };
|
||||
D03AA4E5202DF8840056C405 /* StickerPreviewPeekContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03AA4E4202DF8840056C405 /* StickerPreviewPeekContent.swift */; };
|
||||
D03AE67322B9459C0078411C /* HockeySDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03AE67222B9459C0078411C /* HockeySDK.framework */; };
|
||||
D03AE67522B945D30078411C /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03AE67422B945D30078411C /* BuildConfig.framework */; };
|
||||
D03E3D2B23045B120049C28B /* ChatMessageRestrictedBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E3D2A23045B120049C28B /* ChatMessageRestrictedBubbleContentNode.swift */; };
|
||||
D03E3D4D23045E410049C28B /* PlatformRestrictionMatching.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D4C23045E410049C28B /* PlatformRestrictionMatching.framework */; };
|
||||
D03E3D7F2304ACB40049C28B /* HashtagSearchUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3D7E2304ACB40049C28B /* HashtagSearchUI.framework */; };
|
||||
D03E3DD22304AF8E0049C28B /* ItemListAvatarAndNameInfoItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DD12304AF8E0049C28B /* ItemListAvatarAndNameInfoItem.framework */; };
|
||||
D03E3E002304B2AC0049C28B /* ItemListPeerActionItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3DFF2304B2AC0049C28B /* ItemListPeerActionItem.framework */; };
|
||||
D03E3E482304B4670049C28B /* StickerPackPreviewUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E472304B4670049C28B /* StickerPackPreviewUI.framework */; };
|
||||
D03E3E8C2304B6E10049C28B /* YuvConversion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D03E3E8B2304B6E10049C28B /* YuvConversion.framework */; };
|
||||
D04203152037162700490EA5 /* MediaInputPaneTrendingItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04203142037162700490EA5 /* MediaInputPaneTrendingItem.swift */; };
|
||||
D04281EF200E3D88009DDE36 /* GroupInfoSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04281EE200E3D88009DDE36 /* GroupInfoSearchItem.swift */; };
|
||||
D04281F1200E4084009DDE36 /* GroupInfoSearchNavigationContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04281F0200E4084009DDE36 /* GroupInfoSearchNavigationContentNode.swift */; };
|
||||
|
|
@ -307,7 +293,6 @@
|
|||
D081E108217F583F003CD921 /* LanguageLinkPreviewContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081E107217F583F003CD921 /* LanguageLinkPreviewContentNode.swift */; };
|
||||
D083491C209361DC008CFD52 /* AvatarGalleryItemFooterContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D083491B209361DC008CFD52 /* AvatarGalleryItemFooterContentNode.swift */; };
|
||||
D084023420E295F000065674 /* GroupStickerPackSetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D084023320E295F000065674 /* GroupStickerPackSetupController.swift */; };
|
||||
D08557E722C5FEB90026D6D2 /* AnimatedStickerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08557E622C5FEB90026D6D2 /* AnimatedStickerNode.swift */; };
|
||||
D08799F022F649A600C4D6B3 /* TelegramBaseController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D08799EF22F649A600C4D6B3 /* TelegramBaseController.framework */; };
|
||||
D0879A0D22F64E4C00C4D6B3 /* DeviceLocationManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0879A0C22F64E4C00C4D6B3 /* DeviceLocationManager.framework */; };
|
||||
D0879B1F22F7189600C4D6B3 /* AvatarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0879B1E22F7189600C4D6B3 /* AvatarNode.framework */; };
|
||||
|
|
@ -329,8 +314,6 @@
|
|||
D091C7A41F8EBB1E00D7DE13 /* ChatPresentationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D091C7A31F8EBB1E00D7DE13 /* ChatPresentationData.swift */; };
|
||||
D091C7A61F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D091C7A51F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift */; };
|
||||
D09250061FE5371D003F693F /* GlobalExperimentalSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */; };
|
||||
D0943AF61FDAAE7E001522CC /* MultipleAvatarsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0943AF51FDAAE7E001522CC /* MultipleAvatarsNode.swift */; };
|
||||
D0943AFE1FDAE454001522CC /* ChatMultipleAvatarsNavigationNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0943AFD1FDAE454001522CC /* ChatMultipleAvatarsNavigationNode.swift */; };
|
||||
D0943B001FDAE852001522CC /* ChatFeedNavigationInputPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0943AFF1FDAE852001522CC /* ChatFeedNavigationInputPanelNode.swift */; };
|
||||
D0943B051FDDFDA0001522CC /* OverlayInstantVideoNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0943B041FDDFDA0001522CC /* OverlayInstantVideoNode.swift */; };
|
||||
D0943B071FDEC529001522CC /* InstantVideoRadialStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0943B061FDEC528001522CC /* InstantVideoRadialStatusNode.swift */; };
|
||||
|
|
@ -380,42 +363,6 @@
|
|||
D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE262080D6970013176E /* PaneSearchBarNode.swift */; };
|
||||
D0AEAE292080FD660013176E /* StickerPaneSearchGlobaltem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE282080FD660013176E /* StickerPaneSearchGlobaltem.swift */; };
|
||||
D0AF323A1FB1D8D60097362B /* ChatOverlayNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AF32391FB1D8D60097362B /* ChatOverlayNavigationBar.swift */; };
|
||||
D0AF796E22C2E26500CECCB8 /* astc.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF793622C2E26500CECCB8 /* astc.cc */; };
|
||||
D0AF796F22C2E26500CECCB8 /* compress_texture.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793822C2E26500CECCB8 /* compress_texture.h */; };
|
||||
D0AF797022C2E26500CECCB8 /* integer_sequence_encoding.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793922C2E26500CECCB8 /* integer_sequence_encoding.h */; };
|
||||
D0AF797122C2E26500CECCB8 /* range.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793A22C2E26500CECCB8 /* range.h */; };
|
||||
D0AF797222C2E26500CECCB8 /* misc.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793B22C2E26500CECCB8 /* misc.h */; };
|
||||
D0AF797322C2E26500CECCB8 /* tables_data_size.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793C22C2E26500CECCB8 /* tables_data_size.h */; };
|
||||
D0AF797422C2E26500CECCB8 /* matrix.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793D22C2E26500CECCB8 /* matrix.h */; };
|
||||
D0AF797522C2E26500CECCB8 /* colors.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793E22C2E26500CECCB8 /* colors.h */; };
|
||||
D0AF797622C2E26500CECCB8 /* endpoints_principal_components.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF793F22C2E26500CECCB8 /* endpoints_principal_components.cc */; };
|
||||
D0AF797722C2E26500CECCB8 /* data_size.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794022C2E26500CECCB8 /* data_size.h */; };
|
||||
D0AF797822C2E26500CECCB8 /* meson.build in Resources */ = {isa = PBXBuildFile; fileRef = D0AF794122C2E26500CECCB8 /* meson.build */; };
|
||||
D0AF797922C2E26500CECCB8 /* endpoints_bounding_box.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794222C2E26500CECCB8 /* endpoints_bounding_box.h */; };
|
||||
D0AF797A22C2E26500CECCB8 /* tables_color_quantization.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794322C2E26500CECCB8 /* tables_color_quantization.h */; };
|
||||
D0AF797B22C2E26500CECCB8 /* tables_integer_sequence_encoding.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794422C2E26500CECCB8 /* tables_integer_sequence_encoding.h */; };
|
||||
D0AF797C22C2E26500CECCB8 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794522C2E26500CECCB8 /* constants.h */; };
|
||||
D0AF797D22C2E26500CECCB8 /* endpoints_min_max.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794622C2E26500CECCB8 /* endpoints_min_max.h */; };
|
||||
D0AF797E22C2E26500CECCB8 /* dcheck.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794722C2E26500CECCB8 /* dcheck.h */; };
|
||||
D0AF797F22C2E26500CECCB8 /* weights_quantize_table.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794822C2E26500CECCB8 /* weights_quantize_table.h */; };
|
||||
D0AF798022C2E26500CECCB8 /* compress_block.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF794922C2E26500CECCB8 /* compress_block.cc */; };
|
||||
D0AF798122C2E26500CECCB8 /* endpoints_principal_components.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794A22C2E26500CECCB8 /* endpoints_principal_components.h */; };
|
||||
D0AF798222C2E26500CECCB8 /* bitmanip.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794B22C2E26500CECCB8 /* bitmanip.h */; };
|
||||
D0AF798322C2E26500CECCB8 /* endpoints.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794C22C2E26500CECCB8 /* endpoints.h */; };
|
||||
D0AF798422C2E26500CECCB8 /* compress_block.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794D22C2E26500CECCB8 /* compress_block.h */; };
|
||||
D0AF798522C2E26500CECCB8 /* endpoints_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794E22C2E26500CECCB8 /* endpoints_encode.h */; };
|
||||
D0AF798622C2E26500CECCB8 /* weights_quantize.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794F22C2E26500CECCB8 /* weights_quantize.h */; };
|
||||
D0AF798722C2E26500CECCB8 /* compress_texture.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795022C2E26500CECCB8 /* compress_texture.cc */; };
|
||||
D0AF798822C2E26500CECCB8 /* matrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795122C2E26500CECCB8 /* matrix.cc */; };
|
||||
D0AF798922C2E26500CECCB8 /* vector.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795222C2E26500CECCB8 /* vector.h */; };
|
||||
D0AF798A22C2E26500CECCB8 /* endpoints_quantize.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795322C2E26500CECCB8 /* endpoints_quantize.h */; };
|
||||
D0AF798B22C2E26500CECCB8 /* store_block.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795422C2E26500CECCB8 /* store_block.h */; };
|
||||
D0AF798C22C2E26500CECCB8 /* color.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795622C2E26500CECCB8 /* color.h */; };
|
||||
D0AF798D22C2E26500CECCB8 /* bgra.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795722C2E26500CECCB8 /* bgra.cc */; };
|
||||
D0AF798E22C2E26500CECCB8 /* compressed.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795822C2E26500CECCB8 /* compressed.h */; };
|
||||
D0AF798F22C2E26500CECCB8 /* compressed.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795922C2E26500CECCB8 /* compressed.cc */; };
|
||||
D0AF799022C2E26500CECCB8 /* bgra.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795A22C2E26500CECCB8 /* bgra.h */; };
|
||||
D0AF79A322C2E36400CECCB8 /* astc.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF79A222C2E36400CECCB8 /* astc.h */; };
|
||||
D0B21B15220D85DD003F741D /* TabBarAccountSwitchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B14220D85DD003F741D /* TabBarAccountSwitchController.swift */; };
|
||||
D0B21B17220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B16220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift */; };
|
||||
D0B21B1F22156D92003F741D /* LegacyCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B1E22156D92003F741D /* LegacyCache.swift */; };
|
||||
|
|
@ -640,8 +587,6 @@
|
|||
D0EC6D731EB9F58800EBF1C3 /* AuthorizationSequenceSignUpController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F53BF61E79593500117362 /* AuthorizationSequenceSignUpController.swift */; };
|
||||
D0EC6D741EB9F58800EBF1C3 /* AuthorizationSequenceSignUpControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F53BF81E79593F00117362 /* AuthorizationSequenceSignUpControllerNode.swift */; };
|
||||
D0EC6D751EB9F58800EBF1C3 /* TelegramRootController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174C21EAE583800A1BF36 /* TelegramRootController.swift */; };
|
||||
D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749501E1067E40057C89A /* HashtagSearchController.swift */; };
|
||||
D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749521E1068820057C89A /* HashtagSearchControllerNode.swift */; };
|
||||
D0EC6D811EB9F58800EBF1C3 /* ChatController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E0E1D6B8ACF0046BCD6 /* ChatController.swift */; };
|
||||
D0EC6D821EB9F58800EBF1C3 /* ChatControllerInteraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E0F1D6B8ACF0046BCD6 /* ChatControllerInteraction.swift */; };
|
||||
D0EC6D831EB9F58800EBF1C3 /* ChatControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E101D6B8ACF0046BCD6 /* ChatControllerNode.swift */; };
|
||||
|
|
@ -752,11 +697,6 @@
|
|||
D0EC6DF91EB9F58900EBF1C3 /* PeerMediaCollectionInterfaceStateButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0DE77241D93225E002B8809 /* PeerMediaCollectionInterfaceStateButtons.swift */; };
|
||||
D0EC6DFB1EB9F58900EBF1C3 /* AvatarGalleryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0575AF91EA0FDA7006F2541 /* AvatarGalleryController.swift */; };
|
||||
D0EC6E0E1EB9F58900EBF1C3 /* PeerAvatarImageGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0575AFB1EA104A6006F2541 /* PeerAvatarImageGalleryItem.swift */; };
|
||||
D0EC6E231EB9F58900EBF1C3 /* StickerPackPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D748051E7AF63800F4B1F6 /* StickerPackPreviewController.swift */; };
|
||||
D0EC6E241EB9F58900EBF1C3 /* StickerPackPreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D748071E7AF64400F4B1F6 /* StickerPackPreviewControllerNode.swift */; };
|
||||
D0EC6E251EB9F58900EBF1C3 /* StickerPackPreviewGridItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D7480E1E7B1BD600F4B1F6 /* StickerPackPreviewGridItem.swift */; };
|
||||
D0EC6E261EB9F58900EBF1C3 /* StickerPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BE383B1E7C3E51000079AF /* StickerPreviewController.swift */; };
|
||||
D0EC6E271EB9F58900EBF1C3 /* StickerPreviewControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BE931A1E92DFBA00DCC1E6 /* StickerPreviewControllerNode.swift */; };
|
||||
D0EC6E2B1EB9F58900EBF1C3 /* ComposeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D087750F1E3F46A400A97350 /* ComposeController.swift */; };
|
||||
D0EC6E2C1EB9F58900EBF1C3 /* ComposeControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D08775111E3F46AB00A97350 /* ComposeControllerNode.swift */; };
|
||||
D0EC6E2D1EB9F58900EBF1C3 /* CounterContollerTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D087751D1E3F579300A97350 /* CounterContollerTitleView.swift */; };
|
||||
|
|
@ -766,8 +706,6 @@
|
|||
D0EC6E311EB9F58900EBF1C3 /* ContactSelectionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BC38801E40F1D80044D6FE /* ContactSelectionControllerNode.swift */; };
|
||||
D0EC6E321EB9F58900EBF1C3 /* CreateGroupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BC38691E3FB94D0044D6FE /* CreateGroupController.swift */; };
|
||||
D0EC6E331EB9F58900EBF1C3 /* CreateChannelController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D018D3341E6489EC00C5E089 /* CreateChannelController.swift */; };
|
||||
D0EC6E351EB9F58900EBF1C3 /* ItemListAvatarAndNameItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */; };
|
||||
D0EC6E3C1EB9F58900EBF1C3 /* ItemListPeerActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B843DA1DAAB138005F29E1 /* ItemListPeerActionItem.swift */; };
|
||||
D0EC6E4D1EB9F58900EBF1C3 /* PeerInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B843CC1DA903BB005F29E1 /* PeerInfoController.swift */; };
|
||||
D0EC6E4E1EB9F58900EBF1C3 /* GroupInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0486F091E523C8500091F0C /* GroupInfoController.swift */; };
|
||||
D0EC6E4F1EB9F58900EBF1C3 /* ChannelVisibilityController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E5E0E1E55F8B90029569A /* ChannelVisibilityController.swift */; };
|
||||
|
|
@ -867,7 +805,6 @@
|
|||
0910B0F021FB3DE100F8F87D /* WallpaperPatternPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperPatternPanelNode.swift; sourceTree = "<group>"; };
|
||||
091417F121EF4E5D00C8325A /* WallpaperGalleryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryController.swift; sourceTree = "<group>"; };
|
||||
091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryItem.swift; sourceTree = "<group>"; };
|
||||
091954782294754E00E11046 /* AnimatedStickerUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatedStickerUtils.swift; sourceTree = "<group>"; };
|
||||
0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageActionUrlAuthController.swift; sourceTree = "<group>"; };
|
||||
092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SFCompactRounded-Semibold.otf"; sourceTree = "<group>"; };
|
||||
092F368F2157AB46001A9F49 /* ItemListCallListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListCallListItem.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -985,7 +922,6 @@
|
|||
D002A0D81E9BEC8100A81812 /* SoftwareVideoLayerFrameManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SoftwareVideoLayerFrameManager.swift; sourceTree = "<group>"; };
|
||||
D002A0DA1E9C190700A81812 /* SoftwareVideoThumbnailLayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SoftwareVideoThumbnailLayer.swift; sourceTree = "<group>"; };
|
||||
D002A0DC1E9CD52A00A81812 /* ChatMediaInputRecentGifsItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputRecentGifsItem.swift; sourceTree = "<group>"; };
|
||||
D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListAvatarAndNameItem.swift; sourceTree = "<group>"; };
|
||||
D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreDownloadedMedia.swift; sourceTree = "<group>"; };
|
||||
D007019B2029E8F2006B9E34 /* LegacyICloudFileController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyICloudFileController.swift; sourceTree = "<group>"; };
|
||||
D007019D2029EFDD006B9E34 /* ICloudResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICloudResources.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1039,26 +975,7 @@
|
|||
D0105D591D80B957008755D8 /* ChatChannelSubscriberInputPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatChannelSubscriberInputPanelNode.swift; sourceTree = "<group>"; };
|
||||
D010E17C22C238BC009324D4 /* RLottie.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = RLottie.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D0127A0C1E6424AC003BFF2E /* ChatPinnedMessageTitlePanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatPinnedMessageTitlePanelNode.swift; sourceTree = "<group>"; };
|
||||
D01590A522BD460C0017C33E /* MetalAnimationRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetalAnimationRenderer.swift; sourceTree = "<group>"; };
|
||||
D01590A722BD462C0017C33E /* SoftwareAnimationRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoftwareAnimationRenderer.swift; sourceTree = "<group>"; };
|
||||
D01590AA22BD467B0017C33E /* AnimationRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimationRenderer.swift; sourceTree = "<group>"; };
|
||||
D01590AC22BD58AD0017C33E /* YUV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = YUV.h; sourceTree = "<group>"; };
|
||||
D01590AD22BD58AD0017C33E /* YUV.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = YUV.m; sourceTree = "<group>"; };
|
||||
D01590B022BDAEB30017C33E /* ColorVec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ColorVec.h; path = "third-party/bc1/ColorVec.h"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B122BDAEBB0017C33E /* BC1Compression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BC1Compression.h; path = "third-party/bc1/BC1Compression.h"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B222BDAEBB0017C33E /* BMPImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BMPImage.h; path = "third-party/bc1/BMPImage.h"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B322BDAEBB0017C33E /* DDSImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DDSImage.cpp; path = "third-party/bc1/DDSImage.cpp"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B422BDAEBB0017C33E /* Image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Image.cpp; path = "third-party/bc1/Image.cpp"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B522BDAEBC0017C33E /* Image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Image.h; path = "third-party/bc1/Image.h"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B622BDAEBC0017C33E /* BC1Compression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BC1Compression.cpp; path = "third-party/bc1/BC1Compression.cpp"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B722BDAEBC0017C33E /* DDSImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DDSImage.h; path = "third-party/bc1/DDSImage.h"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B822BDAEBC0017C33E /* TypeDefinitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TypeDefinitions.h; path = "third-party/bc1/TypeDefinitions.h"; sourceTree = SOURCE_ROOT; };
|
||||
D01590B922BDAEBC0017C33E /* BMPImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BMPImage.cpp; path = "third-party/bc1/BMPImage.cpp"; sourceTree = SOURCE_ROOT; };
|
||||
D01590C522BE61CB0017C33E /* TextureCompression.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TextureCompression.cpp; path = "../third-party/bc1/TextureCompression.cpp"; sourceTree = "<group>"; };
|
||||
D01590C822BE62C40017C33E /* TextureCompression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextureCompression.h; path = "third-party/bc1/TextureCompression.h"; sourceTree = SOURCE_ROOT; };
|
||||
D015E04E225D2E5900CB9E8A /* WebP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WebP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D01749501E1067E40057C89A /* HashtagSearchController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HashtagSearchController.swift; sourceTree = "<group>"; };
|
||||
D01749521E1068820057C89A /* HashtagSearchControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HashtagSearchControllerNode.swift; sourceTree = "<group>"; };
|
||||
D01749561E1087CC0057C89A /* ChatBotStartInputPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatBotStartInputPanelNode.swift; sourceTree = "<group>"; };
|
||||
D017734B22049BF800DA06A7 /* UpgradedAccounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradedAccounts.swift; sourceTree = "<group>"; };
|
||||
D01776BD1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMediaCollectionSectionsNode.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1135,7 +1052,6 @@
|
|||
D039EB071DEC725600886EBC /* ChatTextInputAudioRecordingTimeNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTextInputAudioRecordingTimeNode.swift; sourceTree = "<group>"; };
|
||||
D039EB091DEC7A8700886EBC /* ChatTextInputAudioRecordingCancelIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTextInputAudioRecordingCancelIndicator.swift; sourceTree = "<group>"; };
|
||||
D03AA4DE202DBF6F0056C405 /* ChatContextResultPeekContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatContextResultPeekContentNode.swift; sourceTree = "<group>"; };
|
||||
D03AA4E4202DF8840056C405 /* StickerPreviewPeekContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerPreviewPeekContent.swift; sourceTree = "<group>"; };
|
||||
D03ADB471D703268005A521C /* ChatInterfaceState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInterfaceState.swift; sourceTree = "<group>"; };
|
||||
D03ADB4A1D70443F005A521C /* ReplyAccessoryPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReplyAccessoryPanelNode.swift; sourceTree = "<group>"; };
|
||||
D03ADB4C1D7045C9005A521C /* ChatInterfaceStateAccessoryPanels.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInterfaceStateAccessoryPanels.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1144,6 +1060,11 @@
|
|||
D03AE67422B945D30078411C /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D2A23045B120049C28B /* ChatMessageRestrictedBubbleContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageRestrictedBubbleContentNode.swift; sourceTree = "<group>"; };
|
||||
D03E3D4C23045E410049C28B /* PlatformRestrictionMatching.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PlatformRestrictionMatching.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3D7E2304ACB40049C28B /* HashtagSearchUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = HashtagSearchUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DD12304AF8E0049C28B /* ItemListAvatarAndNameInfoItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListAvatarAndNameInfoItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3DFF2304B2AC0049C28B /* ItemListPeerActionItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListPeerActionItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E472304B4670049C28B /* StickerPackPreviewUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = StickerPackPreviewUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E3E8B2304B6E10049C28B /* YuvConversion.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = YuvConversion.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D03E5E081E55C49C0029569A /* DebugAccountsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DebugAccountsController.swift; sourceTree = "<group>"; };
|
||||
D03E5E0E1E55F8B90029569A /* ChannelVisibilityController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelVisibilityController.swift; sourceTree = "<group>"; };
|
||||
D04203142037162700490EA5 /* MediaInputPaneTrendingItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaInputPaneTrendingItem.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1264,7 +1185,6 @@
|
|||
D081E107217F583F003CD921 /* LanguageLinkPreviewContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageLinkPreviewContentNode.swift; sourceTree = "<group>"; };
|
||||
D083491B209361DC008CFD52 /* AvatarGalleryItemFooterContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarGalleryItemFooterContentNode.swift; sourceTree = "<group>"; };
|
||||
D084023320E295F000065674 /* GroupStickerPackSetupController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupStickerPackSetupController.swift; sourceTree = "<group>"; };
|
||||
D08557E622C5FEB90026D6D2 /* AnimatedStickerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatedStickerNode.swift; sourceTree = "<group>"; };
|
||||
D08775081E3E59DE00A97350 /* PeerNotificationSoundStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerNotificationSoundStrings.swift; sourceTree = "<group>"; };
|
||||
D087750F1E3F46A400A97350 /* ComposeController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComposeController.swift; sourceTree = "<group>"; };
|
||||
D08775111E3F46AB00A97350 /* ComposeControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComposeControllerNode.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1299,8 +1219,6 @@
|
|||
D091C7A31F8EBB1E00D7DE13 /* ChatPresentationData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatPresentationData.swift; sourceTree = "<group>"; };
|
||||
D091C7A51F8ECEA300D7DE13 /* SettingsThemeWallpaperNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsThemeWallpaperNode.swift; sourceTree = "<group>"; };
|
||||
D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalExperimentalSettings.swift; sourceTree = "<group>"; };
|
||||
D0943AF51FDAAE7E001522CC /* MultipleAvatarsNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleAvatarsNode.swift; sourceTree = "<group>"; };
|
||||
D0943AFD1FDAE454001522CC /* ChatMultipleAvatarsNavigationNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMultipleAvatarsNavigationNode.swift; sourceTree = "<group>"; };
|
||||
D0943AFF1FDAE852001522CC /* ChatFeedNavigationInputPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatFeedNavigationInputPanelNode.swift; sourceTree = "<group>"; };
|
||||
D0943B041FDDFDA0001522CC /* OverlayInstantVideoNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayInstantVideoNode.swift; sourceTree = "<group>"; };
|
||||
D0943B061FDEC528001522CC /* InstantVideoRadialStatusNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantVideoRadialStatusNode.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1363,42 +1281,6 @@
|
|||
D0AEAE262080D6970013176E /* PaneSearchBarNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaneSearchBarNode.swift; sourceTree = "<group>"; };
|
||||
D0AEAE282080FD660013176E /* StickerPaneSearchGlobaltem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerPaneSearchGlobaltem.swift; sourceTree = "<group>"; };
|
||||
D0AF32391FB1D8D60097362B /* ChatOverlayNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatOverlayNavigationBar.swift; sourceTree = "<group>"; };
|
||||
D0AF793622C2E26500CECCB8 /* astc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = astc.cc; sourceTree = "<group>"; };
|
||||
D0AF793822C2E26500CECCB8 /* compress_texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compress_texture.h; sourceTree = "<group>"; };
|
||||
D0AF793922C2E26500CECCB8 /* integer_sequence_encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = integer_sequence_encoding.h; sourceTree = "<group>"; };
|
||||
D0AF793A22C2E26500CECCB8 /* range.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = range.h; sourceTree = "<group>"; };
|
||||
D0AF793B22C2E26500CECCB8 /* misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = "<group>"; };
|
||||
D0AF793C22C2E26500CECCB8 /* tables_data_size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tables_data_size.h; sourceTree = "<group>"; };
|
||||
D0AF793D22C2E26500CECCB8 /* matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = "<group>"; };
|
||||
D0AF793E22C2E26500CECCB8 /* colors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = colors.h; sourceTree = "<group>"; };
|
||||
D0AF793F22C2E26500CECCB8 /* endpoints_principal_components.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = endpoints_principal_components.cc; sourceTree = "<group>"; };
|
||||
D0AF794022C2E26500CECCB8 /* data_size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = data_size.h; sourceTree = "<group>"; };
|
||||
D0AF794122C2E26500CECCB8 /* meson.build */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = meson.build; sourceTree = "<group>"; };
|
||||
D0AF794222C2E26500CECCB8 /* endpoints_bounding_box.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_bounding_box.h; sourceTree = "<group>"; };
|
||||
D0AF794322C2E26500CECCB8 /* tables_color_quantization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tables_color_quantization.h; sourceTree = "<group>"; };
|
||||
D0AF794422C2E26500CECCB8 /* tables_integer_sequence_encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tables_integer_sequence_encoding.h; sourceTree = "<group>"; };
|
||||
D0AF794522C2E26500CECCB8 /* constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = constants.h; sourceTree = "<group>"; };
|
||||
D0AF794622C2E26500CECCB8 /* endpoints_min_max.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_min_max.h; sourceTree = "<group>"; };
|
||||
D0AF794722C2E26500CECCB8 /* dcheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dcheck.h; sourceTree = "<group>"; };
|
||||
D0AF794822C2E26500CECCB8 /* weights_quantize_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = weights_quantize_table.h; sourceTree = "<group>"; };
|
||||
D0AF794922C2E26500CECCB8 /* compress_block.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compress_block.cc; sourceTree = "<group>"; };
|
||||
D0AF794A22C2E26500CECCB8 /* endpoints_principal_components.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_principal_components.h; sourceTree = "<group>"; };
|
||||
D0AF794B22C2E26500CECCB8 /* bitmanip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitmanip.h; sourceTree = "<group>"; };
|
||||
D0AF794C22C2E26500CECCB8 /* endpoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints.h; sourceTree = "<group>"; };
|
||||
D0AF794D22C2E26500CECCB8 /* compress_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compress_block.h; sourceTree = "<group>"; };
|
||||
D0AF794E22C2E26500CECCB8 /* endpoints_encode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_encode.h; sourceTree = "<group>"; };
|
||||
D0AF794F22C2E26500CECCB8 /* weights_quantize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = weights_quantize.h; sourceTree = "<group>"; };
|
||||
D0AF795022C2E26500CECCB8 /* compress_texture.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compress_texture.cc; sourceTree = "<group>"; };
|
||||
D0AF795122C2E26500CECCB8 /* matrix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = matrix.cc; sourceTree = "<group>"; };
|
||||
D0AF795222C2E26500CECCB8 /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = "<group>"; };
|
||||
D0AF795322C2E26500CECCB8 /* endpoints_quantize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_quantize.h; sourceTree = "<group>"; };
|
||||
D0AF795422C2E26500CECCB8 /* store_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = store_block.h; sourceTree = "<group>"; };
|
||||
D0AF795622C2E26500CECCB8 /* color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color.h; sourceTree = "<group>"; };
|
||||
D0AF795722C2E26500CECCB8 /* bgra.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bgra.cc; sourceTree = "<group>"; };
|
||||
D0AF795822C2E26500CECCB8 /* compressed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compressed.h; sourceTree = "<group>"; };
|
||||
D0AF795922C2E26500CECCB8 /* compressed.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compressed.cc; sourceTree = "<group>"; };
|
||||
D0AF795A22C2E26500CECCB8 /* bgra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bgra.h; sourceTree = "<group>"; };
|
||||
D0AF79A222C2E36400CECCB8 /* astc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = astc.h; sourceTree = "<group>"; };
|
||||
D0B21B14220D85DD003F741D /* TabBarAccountSwitchController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarAccountSwitchController.swift; sourceTree = "<group>"; };
|
||||
D0B21B16220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarAccountSwitchControllerNode.swift; sourceTree = "<group>"; };
|
||||
D0B21B1E22156D92003F741D /* LegacyCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyCache.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1415,7 +1297,6 @@
|
|||
D0B7F8E11D8A18070045D939 /* PeerMediaCollectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMediaCollectionController.swift; sourceTree = "<group>"; };
|
||||
D0B7F8E71D8A1F5F0045D939 /* PeerMediaCollectionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMediaCollectionControllerNode.swift; sourceTree = "<group>"; };
|
||||
D0B843CC1DA903BB005F29E1 /* PeerInfoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerInfoController.swift; sourceTree = "<group>"; };
|
||||
D0B843DA1DAAB138005F29E1 /* ItemListPeerActionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListPeerActionItem.swift; sourceTree = "<group>"; };
|
||||
D0B85C1B1FF6F76000E795B4 /* AuthorizationSequencePasswordRecoveryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationSequencePasswordRecoveryController.swift; sourceTree = "<group>"; };
|
||||
D0B85C1D1FF6F76600E795B4 /* AuthorizationSequencePasswordRecoveryControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationSequencePasswordRecoveryControllerNode.swift; sourceTree = "<group>"; };
|
||||
D0B85C201FF70BEC00E795B4 /* AuthorizationSequenceAwaitingAccountResetControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceAwaitingAccountResetControllerNode.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1431,8 +1312,6 @@
|
|||
D0BCC3D1203F0A6C008126C2 /* StringForMessageTimestampStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringForMessageTimestampStatus.swift; sourceTree = "<group>"; };
|
||||
D0BCC3D320404CC7008126C2 /* ChatMessageActionSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageActionSheetController.swift; sourceTree = "<group>"; };
|
||||
D0BCC3D520404CD8008126C2 /* ChatMessageActionSheetControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageActionSheetControllerNode.swift; sourceTree = "<group>"; };
|
||||
D0BE383B1E7C3E51000079AF /* StickerPreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPreviewController.swift; sourceTree = "<group>"; };
|
||||
D0BE931A1E92DFBA00DCC1E6 /* StickerPreviewControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPreviewControllerNode.swift; sourceTree = "<group>"; };
|
||||
D0BFAE4520AB04FB00793CF2 /* ChatRestrictedInputPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRestrictedInputPanelNode.swift; sourceTree = "<group>"; };
|
||||
D0BFAE4D20AB1D7B00793CF2 /* DisabledContextResultsChatInputContextPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisabledContextResultsChatInputContextPanelNode.swift; sourceTree = "<group>"; };
|
||||
D0BFAE4F20AB2A1300793CF2 /* PeerBanTimeoutController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerBanTimeoutController.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1554,9 +1433,6 @@
|
|||
D0D268991D79CF9F00C422DA /* ChatPanelInterfaceInteraction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatPanelInterfaceInteraction.swift; sourceTree = "<group>"; };
|
||||
D0D3281322F31B3000D07EE2 /* TelegramUpdateUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUpdateUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D0D4345B1F97CEAA00CC1806 /* ProxyServerSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyServerSettingsController.swift; sourceTree = "<group>"; };
|
||||
D0D748051E7AF63800F4B1F6 /* StickerPackPreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewController.swift; sourceTree = "<group>"; };
|
||||
D0D748071E7AF64400F4B1F6 /* StickerPackPreviewControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewControllerNode.swift; sourceTree = "<group>"; };
|
||||
D0D7480E1E7B1BD600F4B1F6 /* StickerPackPreviewGridItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickerPackPreviewGridItem.swift; sourceTree = "<group>"; };
|
||||
D0DC35431DE32230000195EB /* ChatInterfaceStateContextQueries.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatInterfaceStateContextQueries.swift; sourceTree = "<group>"; };
|
||||
D0DC35451DE35805000195EB /* MentionChatInputPanelItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MentionChatInputPanelItem.swift; sourceTree = "<group>"; };
|
||||
D0DC35491DE366CD000195EB /* CommandChatInputContextPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommandChatInputContextPanelNode.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -1738,6 +1614,11 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D03E3E8C2304B6E10049C28B /* YuvConversion.framework in Frameworks */,
|
||||
D03E3E482304B4670049C28B /* StickerPackPreviewUI.framework in Frameworks */,
|
||||
D03E3E002304B2AC0049C28B /* ItemListPeerActionItem.framework in Frameworks */,
|
||||
D03E3DD22304AF8E0049C28B /* ItemListAvatarAndNameInfoItem.framework in Frameworks */,
|
||||
D03E3D7F2304ACB40049C28B /* HashtagSearchUI.framework in Frameworks */,
|
||||
D03E3D4D23045E410049C28B /* PlatformRestrictionMatching.framework in Frameworks */,
|
||||
D0C9CBD72302C09000FAB518 /* TextSelectionNode.framework in Frameworks */,
|
||||
D0C9CBB62302B65600FAB518 /* LanguageSuggestionUI.framework in Frameworks */,
|
||||
|
|
@ -1892,15 +1773,6 @@
|
|||
name = "Peers Nearby";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
0919546D229458E900E11046 /* Animated Stickers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
091954782294754E00E11046 /* AnimatedStickerUtils.swift */,
|
||||
D08557E622C5FEB90026D6D2 /* AnimatedStickerNode.swift */,
|
||||
);
|
||||
name = "Animated Stickers";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
092F368B2154AAD6001A9F49 /* Fonts */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -1979,13 +1851,6 @@
|
|||
name = "Recent Sessions";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
09CC52A7210615AA000578F8 /* Web Embed */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = "Web Embed";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
09CE950F2237F3A300A7D2C3 /* Search */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -2115,44 +1980,10 @@
|
|||
D01590A922BD46690017C33E /* Animation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0AF793422C2E26500CECCB8 /* astc */,
|
||||
D01590B622BDAEBC0017C33E /* BC1Compression.cpp */,
|
||||
D01590B122BDAEBB0017C33E /* BC1Compression.h */,
|
||||
D01590B922BDAEBC0017C33E /* BMPImage.cpp */,
|
||||
D01590B222BDAEBB0017C33E /* BMPImage.h */,
|
||||
D01590B022BDAEB30017C33E /* ColorVec.h */,
|
||||
D01590B322BDAEBB0017C33E /* DDSImage.cpp */,
|
||||
D01590B722BDAEBC0017C33E /* DDSImage.h */,
|
||||
D01590B422BDAEBB0017C33E /* Image.cpp */,
|
||||
D01590B522BDAEBC0017C33E /* Image.h */,
|
||||
D01590B822BDAEBC0017C33E /* TypeDefinitions.h */,
|
||||
D01590AA22BD467B0017C33E /* AnimationRenderer.swift */,
|
||||
D01590A522BD460C0017C33E /* MetalAnimationRenderer.swift */,
|
||||
D01590A722BD462C0017C33E /* SoftwareAnimationRenderer.swift */,
|
||||
D01590AC22BD58AD0017C33E /* YUV.h */,
|
||||
D01590AD22BD58AD0017C33E /* YUV.m */,
|
||||
D01590C822BE62C40017C33E /* TextureCompression.h */,
|
||||
D01590C522BE61CB0017C33E /* TextureCompression.cpp */,
|
||||
);
|
||||
name = Animation;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D017494F1E1067C00057C89A /* Hashtag Search */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D01749501E1067E40057C89A /* HashtagSearchController.swift */,
|
||||
D01749521E1068820057C89A /* HashtagSearchControllerNode.swift */,
|
||||
);
|
||||
name = "Hashtag Search";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D01776B61F1D6CCF0044446D /* Radial Status */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = "Radial Status";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D01848F021A2323D00B6DEBD /* Strings */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -2175,14 +2006,6 @@
|
|||
name = "Create Channel";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D01B27931E38F3920022A4C0 /* Item List */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0E6521D1E3A2305004EEA91 /* Items */,
|
||||
);
|
||||
name = "Item List";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D01C06AD1FBB45ED001561AB /* Join Link Preview */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -2386,7 +2209,6 @@
|
|||
D0477D191F617E4B00412B44 /* Video */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
09CC52A7210615AA000578F8 /* Web Embed */,
|
||||
D0943B041FDDFDA0001522CC /* OverlayInstantVideoNode.swift */,
|
||||
D0CFBB941FD8B05000B65C0D /* OverlayInstantVideoDecoration.swift */,
|
||||
D0943B061FDEC528001522CC /* InstantVideoRadialStatusNode.swift */,
|
||||
|
|
@ -2591,6 +2413,11 @@
|
|||
D08D45281D5E340200A7428A /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D03E3E8B2304B6E10049C28B /* YuvConversion.framework */,
|
||||
D03E3E472304B4670049C28B /* StickerPackPreviewUI.framework */,
|
||||
D03E3DFF2304B2AC0049C28B /* ItemListPeerActionItem.framework */,
|
||||
D03E3DD12304AF8E0049C28B /* ItemListAvatarAndNameInfoItem.framework */,
|
||||
D03E3D7E2304ACB40049C28B /* HashtagSearchUI.framework */,
|
||||
D03E3D4C23045E410049C28B /* PlatformRestrictionMatching.framework */,
|
||||
D0C9CBD62302C09000FAB518 /* TextSelectionNode.framework */,
|
||||
D0C9CBB52302B65600FAB518 /* LanguageSuggestionUI.framework */,
|
||||
|
|
@ -2766,74 +2593,6 @@
|
|||
path = "Bridge Audio";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0AF793422C2E26500CECCB8 /* astc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0AF793522C2E26500CECCB8 /* compress */,
|
||||
D0AF793722C2E26500CECCB8 /* astc */,
|
||||
D0AF795522C2E26500CECCB8 /* image */,
|
||||
);
|
||||
name = astc;
|
||||
path = "third-party/astc";
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
D0AF793522C2E26500CECCB8 /* compress */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0AF79A222C2E36400CECCB8 /* astc.h */,
|
||||
D0AF793622C2E26500CECCB8 /* astc.cc */,
|
||||
);
|
||||
path = compress;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0AF793722C2E26500CECCB8 /* astc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0AF793822C2E26500CECCB8 /* compress_texture.h */,
|
||||
D0AF793922C2E26500CECCB8 /* integer_sequence_encoding.h */,
|
||||
D0AF793A22C2E26500CECCB8 /* range.h */,
|
||||
D0AF793B22C2E26500CECCB8 /* misc.h */,
|
||||
D0AF793C22C2E26500CECCB8 /* tables_data_size.h */,
|
||||
D0AF793D22C2E26500CECCB8 /* matrix.h */,
|
||||
D0AF793E22C2E26500CECCB8 /* colors.h */,
|
||||
D0AF793F22C2E26500CECCB8 /* endpoints_principal_components.cc */,
|
||||
D0AF794022C2E26500CECCB8 /* data_size.h */,
|
||||
D0AF794122C2E26500CECCB8 /* meson.build */,
|
||||
D0AF794222C2E26500CECCB8 /* endpoints_bounding_box.h */,
|
||||
D0AF794322C2E26500CECCB8 /* tables_color_quantization.h */,
|
||||
D0AF794422C2E26500CECCB8 /* tables_integer_sequence_encoding.h */,
|
||||
D0AF794522C2E26500CECCB8 /* constants.h */,
|
||||
D0AF794622C2E26500CECCB8 /* endpoints_min_max.h */,
|
||||
D0AF794722C2E26500CECCB8 /* dcheck.h */,
|
||||
D0AF794822C2E26500CECCB8 /* weights_quantize_table.h */,
|
||||
D0AF794922C2E26500CECCB8 /* compress_block.cc */,
|
||||
D0AF794A22C2E26500CECCB8 /* endpoints_principal_components.h */,
|
||||
D0AF794B22C2E26500CECCB8 /* bitmanip.h */,
|
||||
D0AF794C22C2E26500CECCB8 /* endpoints.h */,
|
||||
D0AF794D22C2E26500CECCB8 /* compress_block.h */,
|
||||
D0AF794E22C2E26500CECCB8 /* endpoints_encode.h */,
|
||||
D0AF794F22C2E26500CECCB8 /* weights_quantize.h */,
|
||||
D0AF795022C2E26500CECCB8 /* compress_texture.cc */,
|
||||
D0AF795122C2E26500CECCB8 /* matrix.cc */,
|
||||
D0AF795222C2E26500CECCB8 /* vector.h */,
|
||||
D0AF795322C2E26500CECCB8 /* endpoints_quantize.h */,
|
||||
D0AF795422C2E26500CECCB8 /* store_block.h */,
|
||||
);
|
||||
path = astc;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0AF795522C2E26500CECCB8 /* image */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0AF795622C2E26500CECCB8 /* color.h */,
|
||||
D0AF795722C2E26500CECCB8 /* bgra.cc */,
|
||||
D0AF795822C2E26500CECCB8 /* compressed.h */,
|
||||
D0AF795922C2E26500CECCB8 /* compressed.cc */,
|
||||
D0AF795A22C2E26500CECCB8 /* bgra.h */,
|
||||
);
|
||||
path = image;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0AF7C441ED84BB000CD8E0F /* Language Selection */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -3086,19 +2845,6 @@
|
|||
name = "Peer Selection";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0D748041E7AF62000F4B1F6 /* Stickers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0D748051E7AF63800F4B1F6 /* StickerPackPreviewController.swift */,
|
||||
D0D748071E7AF64400F4B1F6 /* StickerPackPreviewControllerNode.swift */,
|
||||
D0D7480E1E7B1BD600F4B1F6 /* StickerPackPreviewGridItem.swift */,
|
||||
D0BE383B1E7C3E51000079AF /* StickerPreviewController.swift */,
|
||||
D0BE931A1E92DFBA00DCC1E6 /* StickerPreviewControllerNode.swift */,
|
||||
D03AA4E4202DF8840056C405 /* StickerPreviewPeekContent.swift */,
|
||||
);
|
||||
name = Stickers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0DC35481DE366B4000195EB /* Commands */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -3183,15 +2929,6 @@
|
|||
name = "Vertical List";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0E6521D1E3A2305004EEA91 /* Items */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */,
|
||||
D0B843DA1DAAB138005F29E1 /* ItemListPeerActionItem.swift */,
|
||||
);
|
||||
name = Items;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0E7A1BB1D8C17EB00C37A6F /* Chat History Node */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -3332,7 +3069,6 @@
|
|||
D0FE4DE31F0AEBB900E8A0B3 /* SharedVideoContextManager.swift */,
|
||||
D09E637D1F0E8C66003444CD /* Shared Media Player */,
|
||||
D0D03AE61DECB0D200220C46 /* Audio Recorder */,
|
||||
0919546D229458E900E11046 /* Animated Stickers */,
|
||||
D0F69E9D1D6B8E240046BCD6 /* Resources */,
|
||||
D0177B831DFB095000A5083A /* FileMediaResourceStatus.swift */,
|
||||
D0ADF965212E05A300310BBC /* TonePlayer.swift */,
|
||||
|
|
@ -3345,7 +3081,6 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
D0F69DBF1D6B89AE0046BCD6 /* Nodes */,
|
||||
D0F69DD31D6B8A160046BCD6 /* Controllers */,
|
||||
D0E7A1BB1D8C17EB00C37A6F /* Chat History Node */,
|
||||
);
|
||||
name = Components;
|
||||
|
|
@ -3354,12 +3089,9 @@
|
|||
D0F69DBF1D6B89AE0046BCD6 /* Nodes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D01776B61F1D6CCF0044446D /* Radial Status */,
|
||||
D0F69DCA1D6B89F20046BCD6 /* Search */,
|
||||
D0477D191F617E4B00412B44 /* Video */,
|
||||
D0F69DC41D6B89E10046BCD6 /* RadialProgressNode.swift */,
|
||||
D00C7CE51E378FD00080C3D5 /* RadialTimeoutNode.swift */,
|
||||
D0943AF51FDAAE7E001522CC /* MultipleAvatarsNode.swift */,
|
||||
D0568AAC1DF198130022E7DA /* AudioWaveformNode.swift */,
|
||||
D0BC38621E3F9EFA0044D6FE /* EditableTokenListNode.swift */,
|
||||
D0B2F76B2052A7D600D3BFB9 /* SinglePhoneInputNode.swift */,
|
||||
|
|
@ -3370,27 +3102,11 @@
|
|||
name = Nodes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0F69DCA1D6B89F20046BCD6 /* Search */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Search;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0F69DD31D6B8A160046BCD6 /* Controllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D01B27931E38F3920022A4C0 /* Item List */,
|
||||
);
|
||||
name = Controllers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D0F69DE61D6B8A4E0046BCD6 /* Controllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D0F69DE71D6B8A590046BCD6 /* Authorization */,
|
||||
D05174C11EAE582A00A1BF36 /* Root */,
|
||||
D017494F1E1067C00057C89A /* Hashtag Search */,
|
||||
D0F69E0D1D6B8AB90046BCD6 /* Chat */,
|
||||
D04281F2200E5A70009DDE36 /* Chat Recent Actions */,
|
||||
D00DE6961E8E8E21003F0D76 /* Share */,
|
||||
|
|
@ -3432,7 +3148,6 @@
|
|||
D0F69E111D6B8ACF0046BCD6 /* ChatHistoryEntry.swift */,
|
||||
D0F69E121D6B8ACF0046BCD6 /* ChatHistoryLocation.swift */,
|
||||
D0D268681D78865300C422DA /* ChatAvatarNavigationNode.swift */,
|
||||
D0943AFD1FDAE454001522CC /* ChatMultipleAvatarsNavigationNode.swift */,
|
||||
D0DE76FF1D92F1EB002B8809 /* ChatTitleView.swift */,
|
||||
D02383761DDF16B2004018B6 /* ChatControllerTitlePanelNodeContainer.swift */,
|
||||
D00C7CE81E379B820080C3D5 /* ChatSecretAutoremoveTimerActionSheet.swift */,
|
||||
|
|
@ -3559,7 +3274,6 @@
|
|||
D0575AF81EA0FD94006F2541 /* Avatar Gallery */,
|
||||
D0EEE99F2165583B001292A6 /* Document */,
|
||||
D07827CC1E03F32C00071108 /* Instant Page */,
|
||||
D0D748041E7AF62000F4B1F6 /* Stickers */,
|
||||
D020A9D81FEAE611008C66F7 /* Player */,
|
||||
D01C06AD1FBB45ED001561AB /* Join Link Preview */,
|
||||
D081E102217F57B2003CD921 /* Language Link Preview */,
|
||||
|
|
@ -3776,57 +3490,21 @@
|
|||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D0AF798622C2E26500CECCB8 /* weights_quantize.h in Headers */,
|
||||
D0AF799022C2E26500CECCB8 /* bgra.h in Headers */,
|
||||
D01590C222BDAEBC0017C33E /* TypeDefinitions.h in Headers */,
|
||||
D0AE303622B1D3620058D3BC /* TGBridgeAudioDecoder.h in Headers */,
|
||||
D0208AD51FA33D14001F0D5F /* RaiseToListenActivator.h in Headers */,
|
||||
D00817DA22B47A14008A895F /* TGPresentationAutoNightPreferences.h in Headers */,
|
||||
D0AF797D22C2E26500CECCB8 /* endpoints_min_max.h in Headers */,
|
||||
D0AF797222C2E26500CECCB8 /* misc.h in Headers */,
|
||||
D0AF798222C2E26500CECCB8 /* bitmanip.h in Headers */,
|
||||
D0AF797C22C2E26500CECCB8 /* constants.h in Headers */,
|
||||
D00817E022B47A14008A895F /* UIImage+ImageEffects.h in Headers */,
|
||||
D01590BA22BDAEBC0017C33E /* ColorVec.h in Headers */,
|
||||
D0AF797422C2E26500CECCB8 /* matrix.h in Headers */,
|
||||
D0AF79A322C2E36400CECCB8 /* astc.h in Headers */,
|
||||
D08803C51F6064CF00DD7951 /* TelegramUI.h in Headers */,
|
||||
D0EB42001F30ED4F00838FE6 /* LegacyImageProcessors.h in Headers */,
|
||||
D01590AE22BD58AD0017C33E /* YUV.h in Headers */,
|
||||
D008177B22B46B7E008A895F /* TGContactModel.h in Headers */,
|
||||
D0AF797922C2E26500CECCB8 /* endpoints_bounding_box.h in Headers */,
|
||||
D00701A12029F6D0006B9E34 /* TGMimeTypeMap.h in Headers */,
|
||||
D0AF798A22C2E26500CECCB8 /* endpoints_quantize.h in Headers */,
|
||||
D0AF797322C2E26500CECCB8 /* tables_data_size.h in Headers */,
|
||||
D0AF797E22C2E26500CECCB8 /* dcheck.h in Headers */,
|
||||
D0AF797F22C2E26500CECCB8 /* weights_quantize_table.h in Headers */,
|
||||
D0208AD91FA34017001F0D5F /* DeviceProximityManager.h in Headers */,
|
||||
D0AF798B22C2E26500CECCB8 /* store_block.h in Headers */,
|
||||
D0AF797122C2E26500CECCB8 /* range.h in Headers */,
|
||||
D0AF797722C2E26500CECCB8 /* data_size.h in Headers */,
|
||||
D0AE303722B1D3620058D3BC /* TGBridgeAudioEncoder.h in Headers */,
|
||||
D0AF798422C2E26500CECCB8 /* compress_block.h in Headers */,
|
||||
D0AF798E22C2E26500CECCB8 /* compressed.h in Headers */,
|
||||
D00817CD22B47A14008A895F /* TGAutoDownloadPreferences.h in Headers */,
|
||||
D01590C122BDAEBC0017C33E /* DDSImage.h in Headers */,
|
||||
D0AF798122C2E26500CECCB8 /* endpoints_principal_components.h in Headers */,
|
||||
D008177C22B46B7E008A895F /* TGItemProviderSignals.h in Headers */,
|
||||
D0AF798322C2E26500CECCB8 /* endpoints.h in Headers */,
|
||||
D01590BB22BDAEBC0017C33E /* BC1Compression.h in Headers */,
|
||||
D01590BC22BDAEBC0017C33E /* BMPImage.h in Headers */,
|
||||
D0AF797522C2E26500CECCB8 /* colors.h in Headers */,
|
||||
D0AF797B22C2E26500CECCB8 /* tables_integer_sequence_encoding.h in Headers */,
|
||||
D0AF798C22C2E26500CECCB8 /* color.h in Headers */,
|
||||
D00817D722B47A14008A895F /* TGBridgeServer.h in Headers */,
|
||||
D0AF796F22C2E26500CECCB8 /* compress_texture.h in Headers */,
|
||||
D0AF798922C2E26500CECCB8 /* vector.h in Headers */,
|
||||
D00817CE22B47A14008A895F /* TGProxyItem.h in Headers */,
|
||||
D01590C922BE62C40017C33E /* TextureCompression.h in Headers */,
|
||||
D0AF797A22C2E26500CECCB8 /* tables_color_quantization.h in Headers */,
|
||||
D008177A22B46B7E008A895F /* TGShareLocationSignals.h in Headers */,
|
||||
D0AF798522C2E26500CECCB8 /* endpoints_encode.h in Headers */,
|
||||
D01590BF22BDAEBC0017C33E /* Image.h in Headers */,
|
||||
D0AF797022C2E26500CECCB8 /* integer_sequence_encoding.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -3987,7 +3665,6 @@
|
|||
D0E9BA981F056F4C00F079A4 /* stp_card_applepay_template@3x.png in Resources */,
|
||||
D0E9BAA51F056F4C00F079A4 /* stp_card_form_applepay@2x.png in Resources */,
|
||||
D0E9BAB81F056F4C00F079A4 /* stp_card_visa_template@3x.png in Resources */,
|
||||
D0AF797822C2E26500CECCB8 /* meson.build in Resources */,
|
||||
D0E9BA9B1F056F4C00F079A4 /* stp_card_cvc_amex@2x.png in Resources */,
|
||||
D0E9BAB61F056F4C00F079A4 /* stp_card_visa@3x.png in Resources */,
|
||||
D0E9BAA61F056F4C00F079A4 /* stp_card_form_applepay@3x.png in Resources */,
|
||||
|
|
@ -4022,7 +3699,6 @@
|
|||
D04281F6200E5AC2009DDE36 /* ChatRecentActionsControllerNode.swift in Sources */,
|
||||
09DD5D5221ED175300D7007A /* WallpaperColorPickerNode.swift in Sources */,
|
||||
D0B2F76820528E3D00D3BFB9 /* UserInfoEditingPhoneActionItem.swift in Sources */,
|
||||
D0AF798D22C2E26500CECCB8 /* bgra.cc in Sources */,
|
||||
09F79A0321C8225600820234 /* WebSearchVideoGalleryItem.swift in Sources */,
|
||||
D01848E821A03BDA00B6DEBD /* ChatSearchState.swift in Sources */,
|
||||
D0208ADC1FA346A4001F0D5F /* RaiseToListen.swift in Sources */,
|
||||
|
|
@ -4042,7 +3718,6 @@
|
|||
D00817D522B47A14008A895F /* ApplicationShortcutItem.swift in Sources */,
|
||||
D077C5C122B59A800097D617 /* ApplicationContext.swift in Sources */,
|
||||
D0EC6CC71EB9F58800EBF1C3 /* PeerNotificationSoundStrings.swift in Sources */,
|
||||
D0AF798F22C2E26500CECCB8 /* compressed.cc in Sources */,
|
||||
D081E108217F583F003CD921 /* LanguageLinkPreviewContentNode.swift in Sources */,
|
||||
D0EC6CC91EB9F58800EBF1C3 /* ConvertToWebP.swift in Sources */,
|
||||
D09E637F1F0E8C9F003444CD /* PeerMessagesMediaPlaylist.swift in Sources */,
|
||||
|
|
@ -4061,7 +3736,6 @@
|
|||
D0380DB8204EE0A5000414AB /* ChatInstantVideoMessageDurationNode.swift in Sources */,
|
||||
D0EC6CDC1EB9F58800EBF1C3 /* TelegramAccountAuxiliaryMethods.swift in Sources */,
|
||||
D0642EFC1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift in Sources */,
|
||||
D03AA4E5202DF8840056C405 /* StickerPreviewPeekContent.swift in Sources */,
|
||||
D025402322E1C92D00AC0195 /* ChatSlowmodeItem.swift in Sources */,
|
||||
D05D8B3F2192FC6E0064586F /* LocalizationListControllerNode.swift in Sources */,
|
||||
D0AA840C1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift in Sources */,
|
||||
|
|
@ -4091,7 +3765,6 @@
|
|||
0910B0EF21FA532D00F8F87D /* WallpaperResources.swift in Sources */,
|
||||
09E4A807223D4B860038140F /* AccountUtils.swift in Sources */,
|
||||
D069F5D0212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift in Sources */,
|
||||
D01590C022BDAEBC0017C33E /* BC1Compression.cpp in Sources */,
|
||||
D06018B522F3659900796784 /* ChatTextFormat.swift in Sources */,
|
||||
D0750C8322B2E4EE00BE5F6E /* SharedNotificationManager.swift in Sources */,
|
||||
D0EC6D041EB9F58800EBF1C3 /* opusenc.m in Sources */,
|
||||
|
|
@ -4129,18 +3802,15 @@
|
|||
09749BCD21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift in Sources */,
|
||||
09EDAD26220D30980012A50B /* AutodownloadConnectionTypeController.swift in Sources */,
|
||||
D05D8B3A2192FC460064586F /* LocalizationListController.swift in Sources */,
|
||||
D0943AFE1FDAE454001522CC /* ChatMultipleAvatarsNavigationNode.swift in Sources */,
|
||||
D0B21B15220D85DD003F741D /* TabBarAccountSwitchController.swift in Sources */,
|
||||
D0ADF966212E05A300310BBC /* TonePlayer.swift in Sources */,
|
||||
D007019E2029EFDD006B9E34 /* ICloudResources.swift in Sources */,
|
||||
D0F760DD222034980074F7E5 /* ChannelStatsControllerNode.swift in Sources */,
|
||||
D01590A622BD460C0017C33E /* MetalAnimationRenderer.swift in Sources */,
|
||||
D0EC6D251EB9F58800EBF1C3 /* FetchCachedRepresentations.swift in Sources */,
|
||||
D0EC6D261EB9F58800EBF1C3 /* TransformOutgoingMessageMedia.swift in Sources */,
|
||||
D0EC6D271EB9F58800EBF1C3 /* FetchResource.swift in Sources */,
|
||||
D09D88731F86D56B00BEB4C9 /* AuthorizationLayout.swift in Sources */,
|
||||
D0EC6D281EB9F58800EBF1C3 /* MediaResources.swift in Sources */,
|
||||
D01590C722BE61CB0017C33E /* TextureCompression.cpp in Sources */,
|
||||
D0EC6D291EB9F58800EBF1C3 /* FetchVideoMediaResource.swift in Sources */,
|
||||
09EDAD2E221164440012A50B /* AutodownloadSizeLimitItem.swift in Sources */,
|
||||
D008177E22B46B7E008A895F /* TGItemProviderSignals.m in Sources */,
|
||||
|
|
@ -4167,7 +3837,6 @@
|
|||
D0EC6D3B1EB9F58800EBF1C3 /* EditableTokenListNode.swift in Sources */,
|
||||
D0E2CE6C222930540084E3DD /* PrefetchManager.swift in Sources */,
|
||||
D0EB42011F30ED4F00838FE6 /* LegacyImageProcessors.m in Sources */,
|
||||
D01590C322BDAEBC0017C33E /* BMPImage.cpp in Sources */,
|
||||
D0CE8CE51F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift in Sources */,
|
||||
D097C26820DD0A1D007BB4B8 /* PeerReportController.swift in Sources */,
|
||||
09F664C621EB400A00AB7E26 /* ThemeGridSearchContentNode.swift in Sources */,
|
||||
|
|
@ -4223,22 +3892,16 @@
|
|||
D0EC6D701EB9F58800EBF1C3 /* AuthorizationSequenceCodeEntryControllerNode.swift in Sources */,
|
||||
D0EC6D711EB9F58800EBF1C3 /* AuthorizationSequencePasswordEntryController.swift in Sources */,
|
||||
D0EC6D721EB9F58800EBF1C3 /* AuthorizationSequencePasswordEntryControllerNode.swift in Sources */,
|
||||
D0AF797622C2E26500CECCB8 /* endpoints_principal_components.cc in Sources */,
|
||||
D0EC6D731EB9F58800EBF1C3 /* AuthorizationSequenceSignUpController.swift in Sources */,
|
||||
D0C12EB01F9A8D1300600BB2 /* ListMessageDateHeader.swift in Sources */,
|
||||
091954792294754E00E11046 /* AnimatedStickerUtils.swift in Sources */,
|
||||
D0EC6D741EB9F58800EBF1C3 /* AuthorizationSequenceSignUpControllerNode.swift in Sources */,
|
||||
D0EC6D751EB9F58800EBF1C3 /* TelegramRootController.swift in Sources */,
|
||||
D0F6800A1EE750EE000E5906 /* ChannelBannedMemberController.swift in Sources */,
|
||||
D03AA4DF202DBF6F0056C405 /* ChatContextResultPeekContentNode.swift in Sources */,
|
||||
D00817D622B47A14008A895F /* TGProxyItem.m in Sources */,
|
||||
0910B0ED21FA178C00F8F87D /* WallpaperPreviewMedia.swift in Sources */,
|
||||
D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */,
|
||||
D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */,
|
||||
D0EC6D811EB9F58800EBF1C3 /* ChatController.swift in Sources */,
|
||||
D0B37C5E1F8D26A8004252DF /* ThemeSettingsChatPreviewItem.swift in Sources */,
|
||||
D01590A822BD462C0017C33E /* SoftwareAnimationRenderer.swift in Sources */,
|
||||
D01590BE22BDAEBC0017C33E /* Image.cpp in Sources */,
|
||||
D0EC6D821EB9F58800EBF1C3 /* ChatControllerInteraction.swift in Sources */,
|
||||
D0EC6D831EB9F58800EBF1C3 /* ChatControllerNode.swift in Sources */,
|
||||
D0EC6D841EB9F58800EBF1C3 /* ChatHistoryEntry.swift in Sources */,
|
||||
|
|
@ -4263,7 +3926,6 @@
|
|||
D0F19F6420E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift in Sources */,
|
||||
D0AEAE252080D6830013176E /* PaneSearchContainerNode.swift in Sources */,
|
||||
D01DBA9B209CC6AD00C64E64 /* ChatLinkPreview.swift in Sources */,
|
||||
D01590AF22BD58AD0017C33E /* YUV.m in Sources */,
|
||||
D0EC6D901EB9F58900EBF1C3 /* ChatMessageBubbleContentNode.swift in Sources */,
|
||||
D0EC6D911EB9F58900EBF1C3 /* ChatMessageBubbleItemNode.swift in Sources */,
|
||||
D0E8B8BD204479A500605593 /* SecretChatKeyController.swift in Sources */,
|
||||
|
|
@ -4430,7 +4092,6 @@
|
|||
090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */,
|
||||
D0E8B8BB2044780600605593 /* ItemListSecretChatKeyItem.swift in Sources */,
|
||||
D06F31E62135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift in Sources */,
|
||||
D01590BD22BDAEBC0017C33E /* DDSImage.cpp in Sources */,
|
||||
09F2158D225CF5BC00AEDF6D /* Pasteboard.swift in Sources */,
|
||||
D0C26D571FDF2388004ABF18 /* OpenChatMessage.swift in Sources */,
|
||||
D00817CA22B47A14008A895F /* WatchRequestHandlers.swift in Sources */,
|
||||
|
|
@ -4439,8 +4100,6 @@
|
|||
09B4819523028A8A00D5B32B /* ThemeAccentColorControllerNode.swift in Sources */,
|
||||
D000CABC21F158AD0011B15D /* PrepareSecretThumbnailData.swift in Sources */,
|
||||
D0208AD61FA33D14001F0D5F /* RaiseToListenActivator.m in Sources */,
|
||||
D0AF798022C2E26500CECCB8 /* compress_block.cc in Sources */,
|
||||
D0AF798722C2E26500CECCB8 /* compress_texture.cc in Sources */,
|
||||
09DD88F321BF907C000766BC /* WebSearchRecentQueryItem.swift in Sources */,
|
||||
D04554A421B42982007A6DD9 /* ConfirmPhoneNumberController.swift in Sources */,
|
||||
D07ABBA5202A14BC003671DE /* LegacyImagePicker.swift in Sources */,
|
||||
|
|
@ -4457,16 +4116,10 @@
|
|||
D00817D922B47A14008A895F /* AppDelegate.swift in Sources */,
|
||||
D0E1199C229808B8008CAE3A /* ChannelDiscussionGroupSetupHeaderItem.swift in Sources */,
|
||||
091417F221EF4E5D00C8325A /* WallpaperGalleryController.swift in Sources */,
|
||||
D0EC6E231EB9F58900EBF1C3 /* StickerPackPreviewController.swift in Sources */,
|
||||
D0EC6E241EB9F58900EBF1C3 /* StickerPackPreviewControllerNode.swift in Sources */,
|
||||
D0FC194D201F82A000FEDBB2 /* OpenResolvedUrl.swift in Sources */,
|
||||
D0EC6E251EB9F58900EBF1C3 /* StickerPackPreviewGridItem.swift in Sources */,
|
||||
D0EC6E261EB9F58900EBF1C3 /* StickerPreviewController.swift in Sources */,
|
||||
D00817D422B47A14008A895F /* LegacyUserDataImport.swift in Sources */,
|
||||
D0EC6E271EB9F58900EBF1C3 /* StickerPreviewControllerNode.swift in Sources */,
|
||||
09CE95062236D47F00A7D2C3 /* SettingsSearchItem.swift in Sources */,
|
||||
D0AF323A1FB1D8D60097362B /* ChatOverlayNavigationBar.swift in Sources */,
|
||||
D0943AF61FDAAE7E001522CC /* MultipleAvatarsNode.swift in Sources */,
|
||||
D0EC6E2B1EB9F58900EBF1C3 /* ComposeController.swift in Sources */,
|
||||
09749BCF21F236F2008FDDE9 /* ModernCheckNode.swift in Sources */,
|
||||
0940932422E73DFB003846A3 /* ChatSendMessageActionSheetController.swift in Sources */,
|
||||
|
|
@ -4481,18 +4134,13 @@
|
|||
D0EC6E321EB9F58900EBF1C3 /* CreateGroupController.swift in Sources */,
|
||||
D0EC55A3210231D600D1992C /* SearchPeerMembers.swift in Sources */,
|
||||
D0EC6E331EB9F58900EBF1C3 /* CreateChannelController.swift in Sources */,
|
||||
D0EC6E351EB9F58900EBF1C3 /* ItemListAvatarAndNameItem.swift in Sources */,
|
||||
D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */,
|
||||
D04203152037162700490EA5 /* MediaInputPaneTrendingItem.swift in Sources */,
|
||||
D0EC6E3C1EB9F58900EBF1C3 /* ItemListPeerActionItem.swift in Sources */,
|
||||
D0CE8CE71F6F35A300AA2DB0 /* ChatTextInputPanelState.swift in Sources */,
|
||||
D0AF796E22C2E26500CECCB8 /* astc.cc in Sources */,
|
||||
D0CE6F70213EEE5000BCD44B /* CreatePasswordController.swift in Sources */,
|
||||
0940932622E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift in Sources */,
|
||||
D00817D022B47A14008A895F /* WakeupManager.swift in Sources */,
|
||||
D0AF798822C2E26500CECCB8 /* matrix.cc in Sources */,
|
||||
D0E8175920122FE100B82BBB /* ChatRecentActionsFilterController.swift in Sources */,
|
||||
D08557E722C5FEB90026D6D2 /* AnimatedStickerNode.swift in Sources */,
|
||||
D084023420E295F000065674 /* GroupStickerPackSetupController.swift in Sources */,
|
||||
0900678D21ED5EA800530762 /* WallpaperColorPanelNode.swift in Sources */,
|
||||
0957DE2522DE2909001B4D57 /* ThemePreviewControllerNode.swift in Sources */,
|
||||
|
|
@ -4531,7 +4179,6 @@
|
|||
D0EC6E561EB9F58900EBF1C3 /* UserInfoController.swift in Sources */,
|
||||
D0EC6E571EB9F58900EBF1C3 /* GroupsInCommonController.swift in Sources */,
|
||||
D0EC6E581EB9F58900EBF1C3 /* PeerSelectionController.swift in Sources */,
|
||||
D01590AB22BD467B0017C33E /* AnimationRenderer.swift in Sources */,
|
||||
D0EC6E591EB9F58900EBF1C3 /* PeerSelectionControllerNode.swift in Sources */,
|
||||
D0AB262921C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift in Sources */,
|
||||
D0F4B0222110972300912B92 /* ContactInfoStrings.swift in Sources */,
|
||||
|
|
|
|||
|
|
@ -1,168 +0,0 @@
|
|||
#ifndef ASTC_BITMANIP_H_
|
||||
#define ASTC_BITMANIP_H_
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
#include "dcheck.h"
|
||||
|
||||
inline bool getbit(size_t number, size_t n) {
|
||||
return (number >> n) & 1;
|
||||
}
|
||||
|
||||
inline uint8_t getbits(uint8_t number, uint8_t msb, uint8_t lsb) {
|
||||
int count = msb - lsb + 1;
|
||||
return static_cast<uint8_t>((number >> lsb) & ((1 << count) - 1));
|
||||
}
|
||||
|
||||
inline size_t getbits(size_t number, size_t msb, size_t lsb) {
|
||||
size_t count = msb - lsb + 1;
|
||||
return (number >> lsb) & (static_cast<size_t>(1 << count) - 1);
|
||||
}
|
||||
|
||||
inline void orbits8_ptr(uint8_t* ptr,
|
||||
size_t bitoffset,
|
||||
size_t number,
|
||||
size_t bitcount) {
|
||||
DCHECK(bitcount <= 8);
|
||||
DCHECK((number >> bitcount) == 0);
|
||||
|
||||
size_t index = bitoffset / 8;
|
||||
size_t shift = bitoffset % 8;
|
||||
|
||||
// Depending on the offset we might have to consider two bytes when
|
||||
// writing, for instance if we are writing 8 bits and the offset is 4,
|
||||
// then we have to write 4 bits to the first byte (ptr[index]) and 4 bits
|
||||
// to the second byte (ptr[index+1]).
|
||||
//
|
||||
// FIXME: Writing to the last byte when the number of bytes is a multiple of 2
|
||||
// will write past the allocated memory.
|
||||
|
||||
uint8_t* p = ptr + index;
|
||||
size_t mask = number << shift;
|
||||
|
||||
DCHECK((p[0] & mask) == 0);
|
||||
DCHECK((p[1] & (mask >> 8)) == 0);
|
||||
|
||||
p[0] |= static_cast<uint8_t>(mask & 0xFF);
|
||||
p[1] |= static_cast<uint8_t>((mask >> 8) & 0xFF);
|
||||
}
|
||||
|
||||
inline void orbits16_ptr(uint8_t* ptr,
|
||||
size_t bitoffset,
|
||||
size_t number,
|
||||
size_t bitcount) {
|
||||
DCHECK(bitcount > 8 && bitcount <= 16);
|
||||
|
||||
size_t index = bitoffset / 8;
|
||||
size_t shift = bitoffset % 8;
|
||||
|
||||
uint8_t* p = ptr + index;
|
||||
size_t mask = number << shift;
|
||||
|
||||
p[0] |= static_cast<uint8_t>(mask & 0xFF);
|
||||
p[1] |= static_cast<uint8_t>((mask >> 8) & 0xFF);
|
||||
p[2] |= static_cast<uint8_t>((mask >> 16) & 0xFF);
|
||||
p[3] |= static_cast<uint8_t>((mask >> 24) & 0xFF);
|
||||
}
|
||||
|
||||
inline uint16_t getbytes2(const uint8_t* ptr, size_t byteoffset) {
|
||||
const uint8_t* p = ptr + byteoffset;
|
||||
return static_cast<uint16_t>((p[1] << 8) | p[0]);
|
||||
}
|
||||
|
||||
inline void setbytes2(uint8_t* ptr, size_t byteoffset, uint16_t bytes) {
|
||||
ptr[byteoffset + 0] = static_cast<uint8_t>(bytes & 0xFF);
|
||||
ptr[byteoffset + 1] = static_cast<uint8_t>((bytes >> 8) & 0xFF);
|
||||
}
|
||||
|
||||
inline void split_high_low(uint8_t n, size_t i, uint8_t& high, uint8_t& low) {
|
||||
DCHECK(i < 8);
|
||||
|
||||
uint8_t low_mask = static_cast<uint8_t>((1 << i) - 1);
|
||||
|
||||
low = n & low_mask;
|
||||
high = static_cast<uint8_t>(n >> i);
|
||||
}
|
||||
|
||||
class bitwriter {
|
||||
public:
|
||||
explicit bitwriter(uint8_t* ptr) : ptr_(ptr), bitoffset_(0) {
|
||||
// assumption that all bits in ptr are zero after the offset
|
||||
|
||||
// writing beyound the bounds of the allocated memory is undefined
|
||||
// behaviour
|
||||
}
|
||||
|
||||
// Specialized function that can't write more than 8 bits.
|
||||
void write8(uint8_t number, size_t bitcount) {
|
||||
orbits8_ptr(ptr_, bitoffset_, number, bitcount);
|
||||
|
||||
bitoffset_ += bitcount;
|
||||
}
|
||||
|
||||
size_t offset() const { return bitoffset_; }
|
||||
|
||||
private:
|
||||
uint8_t* ptr_;
|
||||
size_t bitoffset_; // in bits
|
||||
};
|
||||
|
||||
const uint8_t bit_reverse_table[256] = {
|
||||
0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0,
|
||||
0x30, 0xB0, 0x70, 0xF0, 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
|
||||
0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, 0x04, 0x84, 0x44, 0xC4,
|
||||
0x24, 0xA4, 0x64, 0xE4, 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
|
||||
0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, 0x1C, 0x9C, 0x5C, 0xDC,
|
||||
0x3C, 0xBC, 0x7C, 0xFC, 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
|
||||
0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, 0x0A, 0x8A, 0x4A, 0xCA,
|
||||
0x2A, 0xAA, 0x6A, 0xEA, 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
|
||||
0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, 0x16, 0x96, 0x56, 0xD6,
|
||||
0x36, 0xB6, 0x76, 0xF6, 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
|
||||
0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, 0x01, 0x81, 0x41, 0xC1,
|
||||
0x21, 0xA1, 0x61, 0xE1, 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
|
||||
0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, 0x19, 0x99, 0x59, 0xD9,
|
||||
0x39, 0xB9, 0x79, 0xF9, 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
|
||||
0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, 0x0D, 0x8D, 0x4D, 0xCD,
|
||||
0x2D, 0xAD, 0x6D, 0xED, 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
|
||||
0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, 0x13, 0x93, 0x53, 0xD3,
|
||||
0x33, 0xB3, 0x73, 0xF3, 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
|
||||
0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, 0x07, 0x87, 0x47, 0xC7,
|
||||
0x27, 0xA7, 0x67, 0xE7, 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
|
||||
0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x9F, 0x5F, 0xDF,
|
||||
0x3F, 0xBF, 0x7F, 0xFF};
|
||||
|
||||
/**
|
||||
* Reverse a byte, total function.
|
||||
*/
|
||||
inline uint8_t reverse_byte(uint8_t number) {
|
||||
return bit_reverse_table[number];
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse a sequence of bytes.
|
||||
*
|
||||
* Assumes that the bits written to (using bitwise or) are zero and that they
|
||||
* will not clash with bits already written to target sequence. That is it is
|
||||
* possible to write to a non-zero byte as long as the bits that are actually
|
||||
* written to are zero.
|
||||
*/
|
||||
inline void reverse_bytes(const uint8_t* source,
|
||||
size_t bytecount,
|
||||
uint8_t* target) {
|
||||
for (int i = 0; i < static_cast<int>(bytecount); ++i) {
|
||||
DCHECK((reverse_byte(source[i]) & target[-i]) == 0);
|
||||
target[-i] = target[-i] | reverse_byte(source[i]);
|
||||
}
|
||||
}
|
||||
|
||||
inline void copy_bytes(const uint8_t* source,
|
||||
size_t bytecount,
|
||||
uint8_t* target,
|
||||
size_t bitoffset) {
|
||||
for (size_t i = 0; i < bytecount; ++i) {
|
||||
orbits8_ptr(target, bitoffset + i * 8, source[i], 8);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // ASTC_BITMANIP_H_
|
||||
132
submodules/TelegramUI/third-party/astc/astc/colors.h
vendored
132
submodules/TelegramUI/third-party/astc/astc/colors.h
vendored
|
|
@ -1,132 +0,0 @@
|
|||
#ifndef ASTC_COLORS_H_
|
||||
#define ASTC_COLORS_H_
|
||||
|
||||
#include <math.h>
|
||||
#include <cstdint>
|
||||
|
||||
#include "misc.h"
|
||||
#include "vector.h"
|
||||
|
||||
const int APPROX_COLOR_EPSILON = 50;
|
||||
|
||||
union unorm8_t {
|
||||
struct RgbaColorType {
|
||||
uint8_t b, g, r, a;
|
||||
} channels;
|
||||
uint8_t components[4];
|
||||
uint32_t bits;
|
||||
};
|
||||
|
||||
union unorm16_t {
|
||||
struct RgbaColorType {
|
||||
uint16_t b, g, r, a;
|
||||
} channels;
|
||||
uint16_t components[4];
|
||||
uint64_t bits;
|
||||
};
|
||||
|
||||
inline bool is_greyscale(vec3i_t color) {
|
||||
// integer equality is transitive
|
||||
return color.r == color.g && color.g == color.b;
|
||||
}
|
||||
|
||||
inline int luminance(vec3i_t color) {
|
||||
return (color.r + color.g + color.b) / 3;
|
||||
}
|
||||
|
||||
inline bool approx_equal(vec3i_t a, vec3i_t b) {
|
||||
return quadrance(a - b) <= APPROX_COLOR_EPSILON;
|
||||
}
|
||||
|
||||
inline vec3i_t clamp_rgb(vec3i_t color) {
|
||||
vec3i_t result;
|
||||
result.r = clamp(0, 255, color.r);
|
||||
result.g = clamp(0, 255, color.g);
|
||||
result.b = clamp(0, 255, color.b);
|
||||
return result;
|
||||
}
|
||||
|
||||
inline vec3f_t clamp_rgb(vec3f_t color) {
|
||||
vec3f_t result;
|
||||
result.r = clamp(0.0f, 255.0f, color.r);
|
||||
result.g = clamp(0.0f, 255.0f, color.g);
|
||||
result.b = clamp(0.0f, 255.0f, color.b);
|
||||
return result;
|
||||
}
|
||||
|
||||
inline bool is_rgb(float color) {
|
||||
return color >= 0.0f && color <= 255.0f;
|
||||
}
|
||||
|
||||
inline bool is_rgb(vec3f_t color) {
|
||||
return is_rgb(color.r) && is_rgb(color.g) && is_rgb(color.b);
|
||||
}
|
||||
|
||||
inline vec3i_t floor(vec3f_t color) {
|
||||
vec3i_t result;
|
||||
result.r = static_cast<int>(floor(color.r));
|
||||
result.g = static_cast<int>(floor(color.g));
|
||||
result.b = static_cast<int>(floor(color.b));
|
||||
return result;
|
||||
}
|
||||
|
||||
inline vec3i_t round(vec3f_t color) {
|
||||
vec3i_t result;
|
||||
result.r = static_cast<int>(round(color.r));
|
||||
result.g = static_cast<int>(round(color.g));
|
||||
result.b = static_cast<int>(round(color.b));
|
||||
return result;
|
||||
}
|
||||
|
||||
inline vec3i_t to_vec3i(unorm8_t color) {
|
||||
vec3i_t result;
|
||||
result.r = color.channels.r;
|
||||
result.g = color.channels.g;
|
||||
result.b = color.channels.b;
|
||||
return result;
|
||||
}
|
||||
|
||||
inline vec3i_t to_vec3i(vec3f_t color) {
|
||||
vec3i_t result;
|
||||
result.r = static_cast<int>(color.r);
|
||||
result.g = static_cast<int>(color.g);
|
||||
result.b = static_cast<int>(color.b);
|
||||
return result;
|
||||
}
|
||||
|
||||
inline vec3f_t to_vec3f(unorm8_t color) {
|
||||
vec3f_t result;
|
||||
result.r = color.channels.r;
|
||||
result.g = color.channels.g;
|
||||
result.b = color.channels.b;
|
||||
return result;
|
||||
}
|
||||
|
||||
inline vec3f_t to_vec3f(vec3i_t color) {
|
||||
vec3f_t result;
|
||||
result.r = static_cast<float>(color.r);
|
||||
result.g = static_cast<float>(color.g);
|
||||
result.b = static_cast<float>(color.b);
|
||||
return result;
|
||||
}
|
||||
|
||||
inline unorm8_t to_unorm8(vec3i_t color) {
|
||||
unorm8_t result;
|
||||
result.channels.r = static_cast<uint8_t>(color.r);
|
||||
result.channels.g = static_cast<uint8_t>(color.g);
|
||||
result.channels.b = static_cast<uint8_t>(color.b);
|
||||
result.channels.a = 255;
|
||||
return result;
|
||||
}
|
||||
|
||||
inline unorm16_t unorm8_to_unorm16(unorm8_t c8) {
|
||||
// (x / 255) * (2^16-1) = x * 65535 / 255 = x * 257
|
||||
unorm16_t result;
|
||||
result.channels.r = static_cast<uint16_t>(c8.channels.r * 257);
|
||||
result.channels.g = static_cast<uint16_t>(c8.channels.g * 257);
|
||||
result.channels.b = static_cast<uint16_t>(c8.channels.b * 257);
|
||||
result.channels.a = static_cast<uint16_t>(c8.channels.a * 257);
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif // ASTC_COLORS_H_
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
#include "compress_block.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
#include "colors.h"
|
||||
#include "constants.h"
|
||||
#include "data_size.h"
|
||||
#include "endpoints.h"
|
||||
#include "endpoints_encode.h"
|
||||
#include "endpoints_min_max.h"
|
||||
#include "endpoints_principal_components.h"
|
||||
#include "integer_sequence_encoding.h"
|
||||
#include "misc.h"
|
||||
#include "range.h"
|
||||
#include "store_block.h"
|
||||
#include "vector.h"
|
||||
#include "weights_quantize.h"
|
||||
|
||||
/**
|
||||
* Write void extent block bits for LDR mode and unused extent coordinates.
|
||||
*/
|
||||
void encode_void_extent(vec3i_t color, PhysicalBlock* physical_block) {
|
||||
void_extent_to_physical(unorm8_to_unorm16(to_unorm8(color)), physical_block);
|
||||
}
|
||||
|
||||
void encode_luminance(const uint8_t texels[BLOCK_TEXEL_COUNT],
|
||||
PhysicalBlock* physical_block) {
|
||||
size_t partition_count = 1;
|
||||
size_t partition_index = 0;
|
||||
|
||||
color_endpoint_mode_t color_endpoint_mode = CEM_LDR_LUMINANCE_DIRECT;
|
||||
range_t weight_quant = RANGE_32;
|
||||
range_t endpoint_quant =
|
||||
endpoint_quantization(partition_count, weight_quant, color_endpoint_mode);
|
||||
|
||||
uint8_t l0 = 255;
|
||||
uint8_t l1 = 0;
|
||||
for (size_t i = 0; i < BLOCK_TEXEL_COUNT; ++i) {
|
||||
l0 = std::min(l0, texels[i]);
|
||||
l1 = std::max(l1, texels[i]);
|
||||
}
|
||||
|
||||
uint8_t endpoint_unquantized[2];
|
||||
uint8_t endpoint_quantized[2];
|
||||
encode_luminance_direct(endpoint_quant, l0, l1, endpoint_quantized,
|
||||
endpoint_unquantized);
|
||||
|
||||
uint8_t weights_quantized[BLOCK_TEXEL_COUNT];
|
||||
calculate_quantized_weights_luminance(
|
||||
texels, weight_quant, endpoint_unquantized[0], endpoint_unquantized[1],
|
||||
weights_quantized);
|
||||
|
||||
uint8_t endpoint_ise[MAXIMUM_ENCODED_COLOR_ENDPOINT_BYTES] = {0};
|
||||
integer_sequence_encode(endpoint_quantized, 2, RANGE_256, endpoint_ise);
|
||||
|
||||
uint8_t weights_ise[MAXIMUM_ENCODED_WEIGHT_BYTES + 1] = {0};
|
||||
integer_sequence_encode(weights_quantized, BLOCK_TEXEL_COUNT, RANGE_32,
|
||||
weights_ise);
|
||||
|
||||
symbolic_to_physical(color_endpoint_mode, endpoint_quant, weight_quant,
|
||||
partition_count, partition_index, endpoint_ise,
|
||||
weights_ise, physical_block);
|
||||
}
|
||||
|
||||
void encode_rgb_single_partition(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
vec3f_t e0,
|
||||
vec3f_t e1,
|
||||
PhysicalBlock* physical_block) {
|
||||
size_t partition_index = 0;
|
||||
size_t partition_count = 1;
|
||||
|
||||
color_endpoint_mode_t color_endpoint_mode = CEM_LDR_RGB_DIRECT;
|
||||
range_t weight_quant = RANGE_12;
|
||||
range_t endpoint_quant =
|
||||
endpoint_quantization(partition_count, weight_quant, color_endpoint_mode);
|
||||
|
||||
vec3i_t endpoint_unquantized[2];
|
||||
uint8_t endpoint_quantized[6];
|
||||
encode_rgb_direct(endpoint_quant, round(e0), round(e1), endpoint_quantized,
|
||||
endpoint_unquantized);
|
||||
|
||||
uint8_t weights_quantized[BLOCK_TEXEL_COUNT];
|
||||
calculate_quantized_weights_rgb(texels, weight_quant, endpoint_unquantized[0],
|
||||
endpoint_unquantized[1], weights_quantized);
|
||||
|
||||
uint8_t endpoint_ise[MAXIMUM_ENCODED_COLOR_ENDPOINT_BYTES] = {0};
|
||||
integer_sequence_encode(endpoint_quantized, 6, endpoint_quant, endpoint_ise);
|
||||
|
||||
uint8_t weights_ise[MAXIMUM_ENCODED_WEIGHT_BYTES + 1] = {0};
|
||||
integer_sequence_encode(weights_quantized, BLOCK_TEXEL_COUNT, weight_quant,
|
||||
weights_ise);
|
||||
|
||||
symbolic_to_physical(color_endpoint_mode, endpoint_quant, weight_quant,
|
||||
partition_count, partition_index, endpoint_ise,
|
||||
weights_ise, physical_block);
|
||||
}
|
||||
|
||||
bool is_solid(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
size_t count,
|
||||
unorm8_t* color) {
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
if (!approx_equal(to_vec3i(texels[i]), to_vec3i(texels[0]))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Calculate average color?
|
||||
*color = texels[0];
|
||||
return true;
|
||||
}
|
||||
|
||||
bool is_greyscale(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
size_t count,
|
||||
uint8_t luminances[BLOCK_TEXEL_COUNT]) {
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
vec3i_t color = to_vec3i(texels[i]);
|
||||
luminances[i] = static_cast<uint8_t>(luminance(color));
|
||||
vec3i_t lum(luminances[i], luminances[i], luminances[i]);
|
||||
if (!approx_equal(color, lum)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void compress_block(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
PhysicalBlock* physical_block) {
|
||||
{
|
||||
unorm8_t color;
|
||||
if (is_solid(texels, BLOCK_TEXEL_COUNT, &color)) {
|
||||
encode_void_extent(to_vec3i(color), physical_block);
|
||||
/* encode_void_extent(vec3i_t(0, 0, 0), physical_block); */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
uint8_t luminances[BLOCK_TEXEL_COUNT];
|
||||
if (is_greyscale(texels, BLOCK_TEXEL_COUNT, luminances)) {
|
||||
encode_luminance(luminances, physical_block);
|
||||
/* encode_void_extent(vec3i_t(255, 0, 0), physical_block); */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
vec3f_t k, m;
|
||||
principal_component_analysis_block(texels, k, m);
|
||||
vec3f_t e0, e1;
|
||||
find_min_max_block(texels, k, m, e0, e1);
|
||||
encode_rgb_single_partition(texels, e0, e1, physical_block);
|
||||
/* encode_void_extent(vec3i_t(0, 255, 0), physical_block); */
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
#ifndef ASTC_COMPRESS_BLOCK_H_
|
||||
#define ASTC_COMPRESS_BLOCK_H_
|
||||
|
||||
#include "constants.h"
|
||||
|
||||
union unorm8_t;
|
||||
struct PhysicalBlock;
|
||||
|
||||
void compress_block(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
PhysicalBlock* physical_block);
|
||||
|
||||
#endif // ASTC_COMPRESS_BLOCK_H_
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
#include <cstddef>
|
||||
|
||||
#include "colors.h"
|
||||
#include "compress_block.h"
|
||||
#include "compress_texture.h"
|
||||
#include "constants.h"
|
||||
#include "store_block.h"
|
||||
|
||||
namespace {
|
||||
void fetch_image_block(const unorm8_t* source,
|
||||
size_t image_width,
|
||||
size_t xpos,
|
||||
size_t ypos,
|
||||
unorm8_t texels[BLOCK_TEXEL_COUNT]) {
|
||||
size_t topleft_index = ypos * image_width + xpos;
|
||||
|
||||
const unorm8_t* row0 = source + topleft_index;
|
||||
const unorm8_t* row1 = row0 + image_width;
|
||||
const unorm8_t* row2 = row0 + 2 * image_width;
|
||||
const unorm8_t* row3 = row0 + 3 * image_width;
|
||||
|
||||
texels[0] = row0[0];
|
||||
texels[1] = row0[1];
|
||||
texels[2] = row0[2];
|
||||
texels[3] = row0[3];
|
||||
|
||||
texels[4] = row1[0];
|
||||
texels[5] = row1[1];
|
||||
texels[6] = row1[2];
|
||||
texels[7] = row1[3];
|
||||
|
||||
texels[8] = row2[0];
|
||||
texels[9] = row2[1];
|
||||
texels[10] = row2[2];
|
||||
texels[11] = row2[3];
|
||||
|
||||
texels[12] = row3[0];
|
||||
texels[13] = row3[1];
|
||||
texels[14] = row3[2];
|
||||
texels[15] = row3[3];
|
||||
}
|
||||
|
||||
PhysicalBlock physical_block_zero = {0};
|
||||
} // namespace
|
||||
|
||||
void compress_texture(const uint8_t* src,
|
||||
uint8_t* dst,
|
||||
int width_int,
|
||||
int height_int) {
|
||||
const unorm8_t* data = reinterpret_cast<const unorm8_t*>(src);
|
||||
|
||||
size_t width = static_cast<size_t>(width_int);
|
||||
size_t height = static_cast<size_t>(height_int);
|
||||
|
||||
PhysicalBlock* dst_re = reinterpret_cast<PhysicalBlock*>(dst);
|
||||
|
||||
for (size_t ypos = 0; ypos < height; ypos += BLOCK_WIDTH) {
|
||||
for (size_t xpos = 0; xpos < width; xpos += BLOCK_HEIGHT) {
|
||||
unorm8_t texels[BLOCK_TEXEL_COUNT];
|
||||
fetch_image_block(data, width, xpos, ypos, texels);
|
||||
|
||||
*dst_re = physical_block_zero;
|
||||
compress_block(texels, dst_re);
|
||||
|
||||
++dst_re;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
#ifndef ASTC_COMPRESS_TEXTURE_H_
|
||||
#define ASTC_COMPRESS_TEXTURE_H_
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/**
|
||||
* Compress an texture with the ASTC format.
|
||||
*
|
||||
* @param src The source data, width*height*4 bytes with BGRA ordering.
|
||||
* @param dst The output, width*height bytes.
|
||||
* @param width The width of the input texture.
|
||||
* @param height The height of the input texture.
|
||||
*/
|
||||
void compress_texture(const uint8_t* src, uint8_t* dst, int width, int height);
|
||||
|
||||
#endif // ASTC_COMPRESS_TEXTURE_H_
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
#ifndef ASTC_CONSTANTS_H_
|
||||
#define ASTC_CONSTANTS_H_
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
const size_t BLOCK_WIDTH = 4;
|
||||
const size_t BLOCK_HEIGHT = 4;
|
||||
const size_t BLOCK_TEXEL_COUNT = BLOCK_WIDTH * BLOCK_HEIGHT;
|
||||
const size_t BLOCK_BYTES = 16;
|
||||
|
||||
const size_t MAXIMUM_ENCODED_WEIGHT_BITS = 96;
|
||||
const size_t MAXIMUM_ENCODED_WEIGHT_BYTES = 12;
|
||||
|
||||
const size_t MAXIMUM_ENCODED_COLOR_ENDPOINT_BYTES = 12;
|
||||
|
||||
const size_t MAX_ENDPOINT_VALUE_COUNT = 18;
|
||||
|
||||
#endif // ASTC_CONSTANTS_H_
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
#ifndef ASTC_DATA_SIZE_H_
|
||||
#define ASTC_DATA_SIZE_H_
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
#include "dcheck.h"
|
||||
#include "endpoints.h"
|
||||
#include "range.h"
|
||||
#include "tables_data_size.h"
|
||||
|
||||
range_t endpoint_quantization(size_t partitions,
|
||||
range_t weight_quant,
|
||||
color_endpoint_mode_t endpoint_mode) {
|
||||
int8_t ce_range =
|
||||
color_endpoint_range_table[partitions - 1][weight_quant][endpoint_mode];
|
||||
DCHECK(ce_range >= 0 && ce_range <= RANGE_MAX);
|
||||
return static_cast<range_t>(ce_range);
|
||||
}
|
||||
|
||||
#endif // ASTC_DATA_SIZE_H_
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#ifndef ASTC_DCHECK_H_
|
||||
#define ASTC_DCHECK_H_
|
||||
|
||||
#include <cassert>
|
||||
#define DCHECK(x) assert(x)
|
||||
|
||||
#endif // ASTC_DCHECK_H_
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
#ifndef ASTC_ENDPOINTS_H_
|
||||
#define ASTC_ENDPOINTS_H_
|
||||
|
||||
enum color_endpoint_mode_t {
|
||||
CEM_LDR_LUMINANCE_DIRECT = 0,
|
||||
CEM_LDR_LUMINANCE_BASE_OFFSET = 1,
|
||||
CEM_HDR_LUMINANCE_LARGE_RANGE = 2,
|
||||
CEM_HDR_LUMINANCE_SMALL_RANGE = 3,
|
||||
CEM_LDR_LUMINANCE_ALPHA_DIRECT = 4,
|
||||
CEM_LDR_LUMINANCE_ALPHA_BASE_OFFSET = 5,
|
||||
CEM_LDR_RGB_BASE_SCALE = 6,
|
||||
CEM_HDR_RGB_BASE_SCALE = 7,
|
||||
CEM_LDR_RGB_DIRECT = 8,
|
||||
CEM_LDR_RGB_BASE_OFFSET = 9,
|
||||
CEM_LDR_RGB_BASE_SCALE_PLUS_TWO_ALPHA = 10,
|
||||
CEM_HDR_RGB = 11,
|
||||
CEM_LDR_RGBA_DIRECT = 12,
|
||||
CEM_LDR_RGBA_BASE_OFFSET = 13,
|
||||
CEM_HDR_RGB_LDR_ALPHA = 14,
|
||||
CEM_HDR_RGB_HDR_ALPHA = 15,
|
||||
CEM_MAX = 16
|
||||
};
|
||||
|
||||
#endif // ASTC_ENDPOINTS_H_
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
#ifndef ASTC_ENDPOINTS_BOUNDING_BOX_H_
|
||||
#define ASTC_ENDPOINTS_BOUNDING_BOX_H_
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "astc/colors.h"
|
||||
#include "astc/constants.h"
|
||||
#include "astc/misc.h"
|
||||
#include "astc/vector.h"
|
||||
|
||||
void bounding_box(const unorm8_t* texels,
|
||||
size_t count,
|
||||
vec3i_t& e0,
|
||||
vec3i_t& e1) {
|
||||
vec3i_t a(255, 255, 255);
|
||||
vec3i_t b(0, 0, 0);
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
vec3i_t t = to_vec3i(texels[i]);
|
||||
a = vecmin(a, t);
|
||||
b = vecmax(b, t);
|
||||
}
|
||||
e0 = a;
|
||||
e1 = b;
|
||||
}
|
||||
|
||||
void bounding_box_block(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
vec3i_t& e0,
|
||||
vec3i_t& e1) {
|
||||
bounding_box(texels, BLOCK_TEXEL_COUNT, e0, e1);
|
||||
}
|
||||
|
||||
#endif // ASTC_ENDPOINTS_BOUNDING_BOX_H_
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
#ifndef ASTC_ENDPOINTS_ENCODE_H_
|
||||
#define ASTC_ENDPOINTS_ENCODE_H_
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include "endpoints_quantize.h"
|
||||
#include "range.h"
|
||||
#include "vector.h"
|
||||
|
||||
int color_channel_sum(vec3i_t color) {
|
||||
return color.r + color.g + color.b;
|
||||
}
|
||||
|
||||
void encode_luminance_direct(range_t endpoint_quant,
|
||||
int v0,
|
||||
int v1,
|
||||
uint8_t endpoint_unquantized[2],
|
||||
uint8_t endpoint_quantized[2]) {
|
||||
endpoint_quantized[0] = quantize_color(endpoint_quant, v0);
|
||||
endpoint_quantized[1] = quantize_color(endpoint_quant, v1);
|
||||
endpoint_unquantized[0] =
|
||||
unquantize_color(endpoint_quant, endpoint_quantized[0]);
|
||||
endpoint_unquantized[1] =
|
||||
unquantize_color(endpoint_quant, endpoint_quantized[1]);
|
||||
}
|
||||
|
||||
void encode_rgb_direct(range_t endpoint_quant,
|
||||
vec3i_t e0,
|
||||
vec3i_t e1,
|
||||
uint8_t endpoint_quantized[6],
|
||||
vec3i_t endpoint_unquantized[2]) {
|
||||
vec3i_t e0q = quantize_color(endpoint_quant, e0);
|
||||
vec3i_t e1q = quantize_color(endpoint_quant, e1);
|
||||
vec3i_t e0u = unquantize_color(endpoint_quant, e0q);
|
||||
vec3i_t e1u = unquantize_color(endpoint_quant, e1q);
|
||||
|
||||
// ASTC uses a different blue contraction encoding when the sum of values for
|
||||
// the first endpoint is larger than the sum of values in the second
|
||||
// endpoint. Sort the endpoints to ensure that the normal encoding is used.
|
||||
if (color_channel_sum(e0u) > color_channel_sum(e1u)) {
|
||||
endpoint_quantized[0] = static_cast<uint8_t>(e1q.r);
|
||||
endpoint_quantized[1] = static_cast<uint8_t>(e0q.r);
|
||||
endpoint_quantized[2] = static_cast<uint8_t>(e1q.g);
|
||||
endpoint_quantized[3] = static_cast<uint8_t>(e0q.g);
|
||||
endpoint_quantized[4] = static_cast<uint8_t>(e1q.b);
|
||||
endpoint_quantized[5] = static_cast<uint8_t>(e0q.b);
|
||||
|
||||
endpoint_unquantized[0] = e1u;
|
||||
endpoint_unquantized[1] = e0u;
|
||||
} else {
|
||||
endpoint_quantized[0] = static_cast<uint8_t>(e0q.r);
|
||||
endpoint_quantized[1] = static_cast<uint8_t>(e1q.r);
|
||||
endpoint_quantized[2] = static_cast<uint8_t>(e0q.g);
|
||||
endpoint_quantized[3] = static_cast<uint8_t>(e1q.g);
|
||||
endpoint_quantized[4] = static_cast<uint8_t>(e0q.b);
|
||||
endpoint_quantized[5] = static_cast<uint8_t>(e1q.b);
|
||||
|
||||
endpoint_unquantized[0] = e0u;
|
||||
endpoint_unquantized[1] = e1u;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // ASTC_ENDPOINTS_ENCODE_H_
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
#ifndef ASTC_ENDPOINTS_MIN_MAX_H_
|
||||
#define ASTC_ENDPOINTS_MIN_MAX_H_
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstddef>
|
||||
|
||||
#include "colors.h"
|
||||
#include "constants.h"
|
||||
#include "dcheck.h"
|
||||
#include "misc.h"
|
||||
#include "vector.h"
|
||||
|
||||
void find_min_max(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
size_t count,
|
||||
vec3f_t line_k,
|
||||
vec3f_t line_m,
|
||||
vec3f_t& e0,
|
||||
vec3f_t& e1) {
|
||||
DCHECK(count <= BLOCK_TEXEL_COUNT);
|
||||
DCHECK(approx_equal(quadrance(line_k), 1.0, 0.0001f));
|
||||
|
||||
float a, b;
|
||||
{
|
||||
float t = dot(to_vec3f(texels[0]) - line_m, line_k);
|
||||
a = t;
|
||||
b = t;
|
||||
}
|
||||
|
||||
for (size_t i = 1; i < count; ++i) {
|
||||
float t = dot(to_vec3f(texels[i]) - line_m, line_k);
|
||||
a = std::min(a, t);
|
||||
b = std::max(b, t);
|
||||
}
|
||||
|
||||
e0 = clamp_rgb(line_k * a + line_m);
|
||||
e1 = clamp_rgb(line_k * b + line_m);
|
||||
}
|
||||
|
||||
void find_min_max_block(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
vec3f_t line_k,
|
||||
vec3f_t line_m,
|
||||
vec3f_t& e0,
|
||||
vec3f_t& e1) {
|
||||
find_min_max(texels, BLOCK_TEXEL_COUNT, line_k, line_m, e0, e1);
|
||||
}
|
||||
|
||||
#endif // ASTC_ENDPOINTS_MIN_MAX_H_
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
#include <cstddef>
|
||||
|
||||
#include "colors.h"
|
||||
#include "constants.h"
|
||||
#include "dcheck.h"
|
||||
#include "endpoints_principal_components.h"
|
||||
#include "matrix.h"
|
||||
#include "vector.h"
|
||||
|
||||
vec3f_t mean(const unorm8_t texels[BLOCK_TEXEL_COUNT], size_t count) {
|
||||
vec3i_t sum(0, 0, 0);
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
sum = sum + to_vec3i(texels[i]);
|
||||
}
|
||||
|
||||
return to_vec3f(sum) / static_cast<float>(count);
|
||||
}
|
||||
|
||||
void subtract(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
size_t count,
|
||||
vec3f_t v,
|
||||
vec3f_t output[BLOCK_TEXEL_COUNT]) {
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
output[i] = to_vec3f(texels[i]) - v;
|
||||
}
|
||||
}
|
||||
|
||||
mat3x3f_t covariance(const vec3f_t m[BLOCK_TEXEL_COUNT], size_t count) {
|
||||
mat3x3f_t cov;
|
||||
for (size_t i = 0; i < 3; ++i) {
|
||||
for (size_t j = 0; j < 3; ++j) {
|
||||
float s = 0;
|
||||
for (size_t k = 0; k < count; ++k) {
|
||||
s += m[k].components[i] * m[k].components[j];
|
||||
}
|
||||
cov.at(i, j) = s / static_cast<float>(count - 1);
|
||||
}
|
||||
}
|
||||
|
||||
return cov;
|
||||
}
|
||||
|
||||
void principal_component_analysis(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
size_t count,
|
||||
vec3f_t& line_k,
|
||||
vec3f_t& line_m) {
|
||||
// Since we are working with fixed sized blocks count we can cap count. This
|
||||
// avoids dynamic allocation.
|
||||
DCHECK(count <= BLOCK_TEXEL_COUNT);
|
||||
|
||||
line_m = mean(texels, count);
|
||||
|
||||
vec3f_t n[BLOCK_TEXEL_COUNT];
|
||||
subtract(texels, count, line_m, n);
|
||||
|
||||
mat3x3f_t w = covariance(n, count);
|
||||
|
||||
eigen_vector(w, line_k);
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
#ifndef ASTC_ENDPOINTS_PRINCIPAL_COMPONENTS_H_
|
||||
#define ASTC_ENDPOINTS_PRINCIPAL_COMPONENTS_H_
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "colors.h"
|
||||
#include "constants.h"
|
||||
#include "vector.h"
|
||||
|
||||
void principal_component_analysis(const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
size_t count,
|
||||
vec3f_t& line_k,
|
||||
vec3f_t& line_m);
|
||||
|
||||
inline void principal_component_analysis_block(
|
||||
const unorm8_t texels[BLOCK_TEXEL_COUNT],
|
||||
vec3f_t& line_k,
|
||||
vec3f_t& line_m) {
|
||||
principal_component_analysis(texels, BLOCK_TEXEL_COUNT, line_k, line_m);
|
||||
}
|
||||
|
||||
#endif // ASTC_ENDPOINTS_PRINCIPAL_COMPONENTS_H_
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
#ifndef ASTC_ENDPOINTS_QUANTIZE_H_
|
||||
#define ASTC_ENDPOINTS_QUANTIZE_H_
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include "dcheck.h"
|
||||
#include "range.h"
|
||||
#include "tables_color_quantization.h"
|
||||
#include "vector.h"
|
||||
|
||||
uint8_t quantize_color(range_t quant, int c) {
|
||||
DCHECK(c >= 0 && c <= 255);
|
||||
return color_quantize_table[quant][c];
|
||||
}
|
||||
|
||||
vec3i_t quantize_color(range_t quant, vec3i_t c) {
|
||||
vec3i_t result;
|
||||
result.r = color_quantize_table[quant][c.r];
|
||||
result.g = color_quantize_table[quant][c.g];
|
||||
result.b = color_quantize_table[quant][c.b];
|
||||
return result;
|
||||
}
|
||||
|
||||
uint8_t unquantize_color(range_t quant, int c) {
|
||||
DCHECK(c >= 0 && c <= 255);
|
||||
return color_unquantize_table[quant][c];
|
||||
}
|
||||
|
||||
vec3i_t unquantize_color(range_t quant, vec3i_t c) {
|
||||
vec3i_t result;
|
||||
result.r = color_unquantize_table[quant][c.r];
|
||||
result.g = color_unquantize_table[quant][c.g];
|
||||
result.b = color_unquantize_table[quant][c.b];
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif // ASTC_ENDPOINTS_QUANTIZE_H_
|
||||
|
|
@ -1,212 +0,0 @@
|
|||
#ifndef ASTC_INTEGER_SEQUENCE_ENCODING_H_
|
||||
#define ASTC_INTEGER_SEQUENCE_ENCODING_H_
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
#include "bitmanip.h"
|
||||
#include "dcheck.h"
|
||||
#include "tables_integer_sequence_encoding.h"
|
||||
#include "range.h"
|
||||
|
||||
/**
|
||||
* Table that describes the number of trits or quints along with bits required
|
||||
* for storing each range.
|
||||
*/
|
||||
const uint8_t bits_trits_quints_table[RANGE_MAX][3] = {
|
||||
{1, 0, 0}, // RANGE_2
|
||||
{0, 1, 0}, // RANGE_3
|
||||
{2, 0, 0}, // RANGE_4
|
||||
{0, 0, 1}, // RANGE_5
|
||||
{1, 1, 0}, // RANGE_6
|
||||
{3, 0, 0}, // RANGE_8
|
||||
{1, 0, 1}, // RANGE_10
|
||||
{2, 1, 0}, // RANGE_12
|
||||
{4, 0, 0}, // RANGE_16
|
||||
{2, 0, 1}, // RANGE_20
|
||||
{3, 1, 0}, // RANGE_24
|
||||
{5, 0, 0}, // RANGE_32
|
||||
{3, 0, 1}, // RANGE_40
|
||||
{4, 1, 0}, // RANGE_48
|
||||
{6, 0, 0}, // RANGE_64
|
||||
{4, 0, 1}, // RANGE_80
|
||||
{5, 1, 0}, // RANGE_96
|
||||
{7, 0, 0}, // RANGE_128
|
||||
{5, 0, 1}, // RANGE_160
|
||||
{6, 1, 0}, // RANGE_192
|
||||
{8, 0, 0} // RANGE_256
|
||||
};
|
||||
|
||||
/**
|
||||
* Encode a group of 5 numbers using trits and bits.
|
||||
*/
|
||||
inline void encode_trits(size_t bits,
|
||||
uint8_t b0,
|
||||
uint8_t b1,
|
||||
uint8_t b2,
|
||||
uint8_t b3,
|
||||
uint8_t b4,
|
||||
bitwriter& writer) {
|
||||
uint8_t t0, t1, t2, t3, t4;
|
||||
uint8_t m0, m1, m2, m3, m4;
|
||||
|
||||
split_high_low(b0, bits, t0, m0);
|
||||
split_high_low(b1, bits, t1, m1);
|
||||
split_high_low(b2, bits, t2, m2);
|
||||
split_high_low(b3, bits, t3, m3);
|
||||
split_high_low(b4, bits, t4, m4);
|
||||
|
||||
DCHECK(t0 < 3);
|
||||
DCHECK(t1 < 3);
|
||||
DCHECK(t2 < 3);
|
||||
DCHECK(t3 < 3);
|
||||
DCHECK(t4 < 3);
|
||||
|
||||
uint8_t packed = integer_from_trits[t4][t3][t2][t1][t0];
|
||||
|
||||
writer.write8(m0, bits);
|
||||
writer.write8(getbits(packed, 1, 0), 2);
|
||||
writer.write8(m1, bits);
|
||||
writer.write8(getbits(packed, 3, 2), 2);
|
||||
writer.write8(m2, bits);
|
||||
writer.write8(getbits(packed, 4, 4), 1);
|
||||
writer.write8(m3, bits);
|
||||
writer.write8(getbits(packed, 6, 5), 2);
|
||||
writer.write8(m4, bits);
|
||||
writer.write8(getbits(packed, 7, 7), 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a group of 3 numbers using quints and bits.
|
||||
*/
|
||||
inline void encode_quints(size_t bits,
|
||||
uint8_t b0,
|
||||
uint8_t b1,
|
||||
uint8_t b2,
|
||||
bitwriter& writer) {
|
||||
uint8_t q0, q1, q2;
|
||||
uint8_t m0, m1, m2;
|
||||
|
||||
split_high_low(b0, bits, q0, m0);
|
||||
split_high_low(b1, bits, q1, m1);
|
||||
split_high_low(b2, bits, q2, m2);
|
||||
|
||||
DCHECK(q0 < 5);
|
||||
DCHECK(q1 < 5);
|
||||
DCHECK(q2 < 5);
|
||||
|
||||
uint8_t packed = integer_from_quints[q2][q1][q0];
|
||||
|
||||
writer.write8(m0, bits);
|
||||
writer.write8(getbits(packed, 2, 0), 3);
|
||||
writer.write8(m1, bits);
|
||||
writer.write8(getbits(packed, 4, 3), 2);
|
||||
writer.write8(m2, bits);
|
||||
writer.write8(getbits(packed, 6, 5), 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a sequence of numbers using using one trit and a custom number of
|
||||
* bits per number.
|
||||
*/
|
||||
inline void encode_trits(const uint8_t* numbers,
|
||||
size_t count,
|
||||
bitwriter& writer,
|
||||
size_t bits) {
|
||||
for (size_t i = 0; i < count; i += 5) {
|
||||
uint8_t b0 = numbers[i + 0];
|
||||
uint8_t b1 = i + 1 >= count ? 0 : numbers[i + 1];
|
||||
uint8_t b2 = i + 2 >= count ? 0 : numbers[i + 2];
|
||||
uint8_t b3 = i + 3 >= count ? 0 : numbers[i + 3];
|
||||
uint8_t b4 = i + 4 >= count ? 0 : numbers[i + 4];
|
||||
|
||||
encode_trits(bits, b0, b1, b2, b3, b4, writer);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a sequence of numbers using one quint and the custom number of bits
|
||||
* per number.
|
||||
*/
|
||||
inline void encode_quints(const uint8_t* numbers,
|
||||
size_t count,
|
||||
bitwriter& writer,
|
||||
size_t bits) {
|
||||
for (size_t i = 0; i < count; i += 3) {
|
||||
uint8_t b0 = numbers[i + 0];
|
||||
uint8_t b1 = i + 1 >= count ? 0 : numbers[i + 1];
|
||||
uint8_t b2 = i + 2 >= count ? 0 : numbers[i + 2];
|
||||
encode_quints(bits, b0, b1, b2, writer);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a sequence of numbers using binary representation with the selected
|
||||
* bit count.
|
||||
*/
|
||||
inline void encode_binary(const uint8_t* numbers,
|
||||
size_t count,
|
||||
bitwriter& writer,
|
||||
size_t bits) {
|
||||
DCHECK(count > 0);
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
writer.write8(numbers[i], bits);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a sequence of numbers in a specific range using the binary integer
|
||||
* sequence encoding. The numbers are assumed to be in the correct range and
|
||||
* the memory we are writing to is assumed to be zero-initialized.
|
||||
*/
|
||||
inline void integer_sequence_encode(const uint8_t* numbers,
|
||||
size_t count,
|
||||
range_t range,
|
||||
bitwriter writer) {
|
||||
#ifndef NDEBUG
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
DCHECK(numbers[i] <= range_max_table[range]);
|
||||
}
|
||||
#endif
|
||||
|
||||
size_t bits = bits_trits_quints_table[range][0];
|
||||
size_t trits = bits_trits_quints_table[range][1];
|
||||
size_t quints = bits_trits_quints_table[range][2];
|
||||
|
||||
if (trits == 1) {
|
||||
encode_trits(numbers, count, writer, bits);
|
||||
} else if (quints == 1) {
|
||||
encode_quints(numbers, count, writer, bits);
|
||||
} else {
|
||||
encode_binary(numbers, count, writer, bits);
|
||||
}
|
||||
}
|
||||
|
||||
inline void integer_sequence_encode(const uint8_t* numbers,
|
||||
size_t count,
|
||||
range_t range,
|
||||
uint8_t* output) {
|
||||
integer_sequence_encode(numbers, count, range, bitwriter(output));
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the number of bits required to store a number of items in a specific
|
||||
* range using the binary integer sequence encoding.
|
||||
*/
|
||||
inline size_t compute_ise_bitcount(size_t items, range_t range) {
|
||||
size_t bits = bits_trits_quints_table[range][0];
|
||||
size_t trits = bits_trits_quints_table[range][1];
|
||||
size_t quints = bits_trits_quints_table[range][2];
|
||||
|
||||
if (trits) {
|
||||
return ((8 + 5 * bits) * items + 4) / 5;
|
||||
}
|
||||
|
||||
if (quints) {
|
||||
return ((7 + 3 * bits) * items + 2) / 3;
|
||||
}
|
||||
|
||||
return items * bits;
|
||||
}
|
||||
|
||||
#endif // ASTC_INTEGER_SEQUENCE_ENCODING_H_
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
#include "matrix.h"
|
||||
|
||||
void eigen_vector(const mat3x3f_t& a, vec3f_t& eig) {
|
||||
vec3f_t b = signorm(vec3f_t(1, 5, 2)); // FIXME: Magic number
|
||||
for (size_t i = 0; i < 8; ++i) {
|
||||
b = signorm(a * b);
|
||||
}
|
||||
|
||||
eig = b;
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
#ifndef ASTC_MATRIX_H_
|
||||
#define ASTC_MATRIX_H_
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "vector.h"
|
||||
|
||||
struct mat3x3f_t {
|
||||
public:
|
||||
mat3x3f_t() {}
|
||||
|
||||
mat3x3f_t(float m00,
|
||||
float m01,
|
||||
float m02,
|
||||
float m10,
|
||||
float m11,
|
||||
float m12,
|
||||
float m20,
|
||||
float m21,
|
||||
float m22) {
|
||||
m[0] = vec3f_t(m00, m01, m02);
|
||||
m[1] = vec3f_t(m10, m11, m12);
|
||||
m[2] = vec3f_t(m20, m21, m22);
|
||||
}
|
||||
|
||||
const vec3f_t& row(size_t i) const { return m[i]; }
|
||||
|
||||
float& at(size_t i, size_t j) { return m[i].components[j]; }
|
||||
const float& at(size_t i, size_t j) const { return m[i].components[j]; }
|
||||
|
||||
private:
|
||||
vec3f_t m[3];
|
||||
};
|
||||
|
||||
inline vec3f_t operator*(const mat3x3f_t& a, vec3f_t b) {
|
||||
vec3f_t tmp;
|
||||
tmp.x = dot(a.row(0), b);
|
||||
tmp.y = dot(a.row(1), b);
|
||||
tmp.z = dot(a.row(2), b);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
void eigen_vector(const mat3x3f_t& a, vec3f_t& eig);
|
||||
|
||||
#endif // ASTC_MATRIX_H_
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
tables_color_quantization = custom_target(
|
||||
'gen-color-quantization',
|
||||
input: [],
|
||||
output: ['tables_color_quantization.h'],
|
||||
command: [codegen, 'quantize', '@OUTPUT0@']
|
||||
)
|
||||
|
||||
tables_data_size = custom_target(
|
||||
'gen-data-size',
|
||||
input: [],
|
||||
output: ['tables_data_size.h'],
|
||||
command: [codegen, 'datasize', '@OUTPUT0@']
|
||||
)
|
||||
|
||||
tables_integer_sequence_encoding = custom_target(
|
||||
'gen-integer_sequence_encoding-tables',
|
||||
input: [],
|
||||
output: ['tables_integer_sequence_encoding.h'],
|
||||
command: [codegen, 'bise', '@OUTPUT0@']
|
||||
)
|
||||
|
||||
astc_sources = [
|
||||
'bitmanip.h',
|
||||
'colors.h',
|
||||
'compress_block.cc',
|
||||
'compress_block.h',
|
||||
'compress_texture.cc',
|
||||
'compress_texture.h',
|
||||
'constants.h',
|
||||
'data_size.h',
|
||||
'dcheck.h',
|
||||
'endpoints.h',
|
||||
'endpoints_bounding_box.h',
|
||||
'endpoints_encode.h',
|
||||
'endpoints_min_max.h',
|
||||
'endpoints_principal_components.cc',
|
||||
'endpoints_principal_components.h',
|
||||
'endpoints_quantize.h',
|
||||
'integer_sequence_encoding.h',
|
||||
'matrix.cc',
|
||||
'matrix.h',
|
||||
'misc.h',
|
||||
'range.h',
|
||||
'store_block.h',
|
||||
'vector.h',
|
||||
'weights_quantize.h',
|
||||
'weights_quantize_table.h',
|
||||
tables_color_quantization,
|
||||
tables_data_size,
|
||||
tables_integer_sequence_encoding,
|
||||
]
|
||||
|
||||
astc = static_library(
|
||||
'astc',
|
||||
sources: astc_sources,
|
||||
include_directories: incdir
|
||||
)
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
#ifndef ASTC_MISC_H_
|
||||
#define ASTC_MISC_H_
|
||||
|
||||
#include <math.h>
|
||||
|
||||
template <typename T>
|
||||
T clamp(T a, T b, T x) {
|
||||
if (x < a) {
|
||||
return a;
|
||||
}
|
||||
|
||||
if (x > b) {
|
||||
return b;
|
||||
}
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
inline bool approx_equal(float x, float y, float epsilon) {
|
||||
return fabs(x - y) < epsilon;
|
||||
}
|
||||
|
||||
#endif // ASTC_MISC_H_
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
#ifndef ASTC_RANGE_H_
|
||||
#define ASTC_RANGE_H_
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
/**
|
||||
* Define normalized (starting at zero) numeric ranges that can be represented
|
||||
* with 8 bits or less.
|
||||
*/
|
||||
enum range_t {
|
||||
RANGE_2,
|
||||
RANGE_3,
|
||||
RANGE_4,
|
||||
RANGE_5,
|
||||
RANGE_6,
|
||||
RANGE_8,
|
||||
RANGE_10,
|
||||
RANGE_12,
|
||||
RANGE_16,
|
||||
RANGE_20,
|
||||
RANGE_24,
|
||||
RANGE_32,
|
||||
RANGE_40,
|
||||
RANGE_48,
|
||||
RANGE_64,
|
||||
RANGE_80,
|
||||
RANGE_96,
|
||||
RANGE_128,
|
||||
RANGE_160,
|
||||
RANGE_192,
|
||||
RANGE_256,
|
||||
RANGE_MAX
|
||||
};
|
||||
|
||||
/**
|
||||
* Table of maximum value for each range, minimum is always zero.
|
||||
*/
|
||||
const uint8_t range_max_table[RANGE_MAX] = {1, 2, 3, 4, 5, 7, 9,
|
||||
11, 15, 19, 23, 31, 39, 47,
|
||||
63, 79, 95, 127, 159, 191, 255};
|
||||
|
||||
#endif // ASTC_RANGE_H_
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue