mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
Improve smaller text rendering
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
import Foundation
|
||||
import simd
|
||||
|
||||
final class MediaEditorRenderChain {
|
||||
let enhancePass = EnhanceRenderPass()
|
||||
let sharpenPass = SharpenRenderPass()
|
||||
let blurPass = BlurRenderPass()
|
||||
let adjustmentsPass = AdjustmentsRenderPass()
|
||||
|
||||
var renderPasses: [RenderPass] {
|
||||
return [
|
||||
self.enhancePass,
|
||||
self.sharpenPass,
|
||||
self.blurPass,
|
||||
self.adjustmentsPass
|
||||
]
|
||||
}
|
||||
|
||||
func update(values: MediaEditorValues) {
|
||||
for key in EditorToolKey.allCases {
|
||||
let value = values.toolValues[key]
|
||||
switch key {
|
||||
case .enhance:
|
||||
if let value = value as? Float {
|
||||
self.enhancePass.value = abs(value)
|
||||
} else {
|
||||
self.enhancePass.value = 0.0
|
||||
}
|
||||
case .brightness:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.exposure = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.exposure = 0.0
|
||||
}
|
||||
case .contrast:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.contrast = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.contrast = 0.0
|
||||
}
|
||||
case .saturation:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.saturation = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.saturation = 0.0
|
||||
}
|
||||
case .warmth:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.warmth = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.warmth = 0.0
|
||||
}
|
||||
case .fade:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.fade = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.fade = 0.0
|
||||
}
|
||||
case .highlights:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.highlights = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.highlights = 0.0
|
||||
}
|
||||
case .shadows:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.shadows = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.shadows = 0.0
|
||||
}
|
||||
case .vignette:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.vignette = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.vignette = 0.0
|
||||
}
|
||||
case .grain:
|
||||
if let value = value as? Float {
|
||||
self.adjustmentsPass.adjustments.grain = value
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.grain = 0.0
|
||||
}
|
||||
case .sharpen:
|
||||
if let value = value as? Float {
|
||||
self.sharpenPass.value = value
|
||||
} else {
|
||||
self.sharpenPass.value = 0.0
|
||||
}
|
||||
case .shadowsTint:
|
||||
if let value = value as? TintValue {
|
||||
if value.color != .clear {
|
||||
let (red, green, blue, _) = value.color.components
|
||||
self.adjustmentsPass.adjustments.shadowsTintColor = simd_float3(Float(red), Float(green), Float(blue))
|
||||
self.adjustmentsPass.adjustments.shadowsTintIntensity = value.intensity
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.shadowsTintIntensity = 0.0
|
||||
}
|
||||
}
|
||||
case .highlightsTint:
|
||||
if let value = value as? TintValue {
|
||||
if value.color != .clear {
|
||||
let (red, green, blue, _) = value.color.components
|
||||
self.adjustmentsPass.adjustments.shadowsTintColor = simd_float3(Float(red), Float(green), Float(blue))
|
||||
self.adjustmentsPass.adjustments.highlightsTintIntensity = value.intensity
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.highlightsTintIntensity = 0.0
|
||||
}
|
||||
}
|
||||
case .blur:
|
||||
if let value = value as? BlurValue {
|
||||
switch value.mode {
|
||||
case .off:
|
||||
self.blurPass.mode = .off
|
||||
case .linear:
|
||||
self.blurPass.mode = .linear
|
||||
case .radial:
|
||||
self.blurPass.mode = .radial
|
||||
case .portrait:
|
||||
self.blurPass.mode = .portrait
|
||||
}
|
||||
self.blurPass.intensity = value.intensity
|
||||
self.blurPass.value.size = Float(value.size)
|
||||
self.blurPass.value.position = simd_float2(Float(value.position.x), Float(value.position.y))
|
||||
self.blurPass.value.falloff = Float(value.falloff)
|
||||
self.blurPass.value.rotation = Float(value.rotation)
|
||||
}
|
||||
case .curves:
|
||||
if var value = value as? CurvesValue {
|
||||
let allDataPoints = value.all.dataPoints
|
||||
let redDataPoints = value.red.dataPoints
|
||||
let greenDataPoints = value.green.dataPoints
|
||||
let blueDataPoints = value.blue.dataPoints
|
||||
|
||||
self.adjustmentsPass.adjustments.hasCurves = 1.0
|
||||
self.adjustmentsPass.allCurve = allDataPoints
|
||||
self.adjustmentsPass.redCurve = redDataPoints
|
||||
self.adjustmentsPass.greenCurve = greenDataPoints
|
||||
self.adjustmentsPass.blueCurve = blueDataPoints
|
||||
} else {
|
||||
self.adjustmentsPass.adjustments.hasCurves = 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user