Files
divkit/client/ios/DivKit/Extensions/DivImage/DivImageExtensions.swift
T
morevsavva 3a7a3166a3 Add metal renderer for tint color.
Add metal renderer for tint color.
Добавил метал вью для рендеринга картинок.
Подтянул новый алгоритм сравнения снепшотов. 
Обновил часть снепшотов (проверили, что все ок).
Немного обновил RemoteImageViewContainer.
2022-11-09 15:17:53 +03:00

47 lines
1.7 KiB
Swift

import Foundation
import CommonCore
import Networking
import LayoutKit
extension DivImage: DivBlockModeling, DivImageProtocol {
public func makeBlock(context: DivBlockModelingContext) throws -> Block {
try applyBaseProperties(
to: { try makeBaseBlock(context: context) },
context: context,
actions: makeActions(context: context.actionContext),
actionAnimation: actionAnimation.makeActionAnimation(with: context.expressionResolver),
doubleTapActions: makeDoubleTapActions(context: context.actionContext),
longTapActions: makeLongTapActions(context: context.actionContext)
)
}
private func makeBaseBlock(context: DivBlockModelingContext) throws -> Block {
try checkLayoutTraits(context: context)
let expressionResolver = context.expressionResolver
let highPriority = resolveHighPriorityPreviewShow(expressionResolver)
let imageHolderFactory: ImageHolderFactory
if highPriority, let highPriorityImageHolderFactory = context.highPriorityImageHolderFactory {
imageHolderFactory = highPriorityImageHolderFactory
} else {
imageHolderFactory = context.imageHolderFactory
}
let imageHolder = imageHolderFactory.make(
resolveImageUrl(expressionResolver),
resolvePlaceholder(expressionResolver)
)
return ImageBlock(
imageHolder: imageHolder,
widthTrait: makeContentWidthTrait(with: context),
height: resolveHeight(context),
contentMode: resolveContentMode(expressionResolver),
tintColor: resolveTintColor(expressionResolver),
metalImageRenderingEnabled: context.flagsInfo.metalImageRenderingEnabled,
appearanceAnimation: appearanceAnimation?.makeAppearanceAnimation(with: expressionResolver)
)
}
}