mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
52ccd56888
Прогнал форматтер на всех файлах.
74 lines
2.4 KiB
Swift
74 lines
2.4 KiB
Swift
import Foundation
|
|
|
|
import BaseUI
|
|
import CommonCore
|
|
import LayoutKit
|
|
import Networking
|
|
|
|
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),
|
|
tintMode: resolveTintMode(expressionResolver).tintMode,
|
|
effects: makeEffects(with: expressionResolver),
|
|
metalImageRenderingEnabled: context.flagsInfo.metalImageRenderingEnabled,
|
|
appearanceAnimation: appearanceAnimation?.makeAppearanceAnimation(with: expressionResolver)
|
|
)
|
|
}
|
|
}
|
|
|
|
extension DivBlendMode {
|
|
fileprivate var tintMode: TintMode {
|
|
switch self {
|
|
case .sourceIn:
|
|
return .sourceIn
|
|
case .sourceAtop:
|
|
return .sourceAtop
|
|
case .darken:
|
|
return .darken
|
|
case .lighten:
|
|
return .lighten
|
|
case .multiply:
|
|
return .multiply
|
|
case .screen:
|
|
return .screen
|
|
}
|
|
}
|
|
}
|
|
|
|
extension DivImage {
|
|
fileprivate func makeEffects(with resolver: ExpressionResolver) -> [ImageEffect] {
|
|
filters?.compactMap { $0.makeImageEffect(with: resolver) } ?? []
|
|
}
|
|
}
|