mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
38 lines
1.1 KiB
Swift
38 lines
1.1 KiB
Swift
import Foundation
|
|
import LayoutKit
|
|
import VGSL
|
|
|
|
protocol DivImageProtocol: DivBase, DivImageContentMode {
|
|
var aspect: DivAspect? { get }
|
|
|
|
func resolvePreview(_ expressionResolver: ExpressionResolver) -> String?
|
|
func resolvePlaceholderColor(_ expressionResolver: ExpressionResolver) -> Color
|
|
}
|
|
|
|
extension DivImageProtocol {
|
|
func resolveHeight(_ context: DivBlockModelingContext) -> ImageBlockHeight {
|
|
if let aspect {
|
|
return .ratio(aspect.resolveRatio(context.expressionResolver) ?? 0)
|
|
}
|
|
return .trait(resolveContentHeightTrait(context))
|
|
}
|
|
|
|
func resolvePlaceholder(
|
|
_ expressionResolver: ExpressionResolver,
|
|
highPriority: Bool = false
|
|
) -> ImagePlaceholder {
|
|
if let base64 = resolvePreview(expressionResolver) {
|
|
.imageData(ImageData(base64: base64, highPriority: highPriority))
|
|
} else {
|
|
.color(resolvePlaceholderColor(expressionResolver))
|
|
}
|
|
}
|
|
|
|
private var typeName: String {
|
|
guard let typeName = String(describing: self).split(separator: ".").last else {
|
|
return "DivImage"
|
|
}
|
|
return String(typeName)
|
|
}
|
|
}
|