1
0
mirror of https://github.com/danog/Telegram.git synced 2024-12-03 09:57:46 +01:00
Telegram/thirdparty/PGPhotoEditor/PGFadeTool.m
2015-10-01 19:19:52 +03:00

100 lines
2.2 KiB
Objective-C

#import "PGFadeTool.h"
@interface PGFadeTool ()
{
PGPhotoProcessPassParameter *_parameter;
}
@end
@implementation PGFadeTool
- (instancetype)init
{
self = [super init];
if (self != nil)
{
_identifier = @"fade";
_type = PGPhotoToolTypeShader;
_order = 7;
_minimumValue = 0;
_maximumValue = 100;
_defaultValue = 0;
self.value = @(_defaultValue);
}
return self;
}
- (NSString *)title
{
return TGLocalized(@"PhotoEditor.FadeTool");
}
- (UIImage *)image
{
return [UIImage imageNamed:@"PhotoEditorFadeTool"];
}
- (bool)shouldBeSkipped
{
return (ABS(((NSNumber *)self.displayValue).floatValue - self.defaultValue) < FLT_EPSILON);
}
- (NSArray *)parameters
{
if (!_parameters)
{
_parameter = [PGPhotoProcessPassParameter parameterWithName:@"fadeAmount" type:@"lowp float"];
_parameters = @[ _parameter ];
}
return _parameters;
}
- (void)updateParameters
{
NSNumber *value = (NSNumber *)self.displayValue;
CGFloat parameterValue = value.floatValue / 100.0f;
[_parameter setFloatValue:parameterValue];
}
- (NSString *)ancillaryShaderString
{
return PGShaderString
(
highp vec3 fadeAdjust(highp vec3 color, highp float fadeVal) {
highp vec3 co1 = vec3(-0.9772);
highp vec3 co2 = vec3(1.708);
highp vec3 co3 = vec3(-0.1603);
highp vec3 co4 = vec3(0.2878);
highp vec3 comp1 = co1 * pow(vec3(color), vec3(3.0));
highp vec3 comp2 = co2 * pow(vec3(color), vec3(2.0));
highp vec3 comp3 = co3 * vec3(color);
highp vec3 comp4 = co4;
highp vec3 finalComponent = comp1 + comp2 + comp3 + comp4;
highp vec3 difference = finalComponent - color;
highp vec3 scalingValue = vec3(0.9);
highp vec3 faded = color + (difference * scalingValue);
return (color * (1.0 - fadeVal)) + (faded * fadeVal);
}
);
}
- (NSString *)shaderString
{
return PGShaderString
(
if (abs(fadeAmount) > toolEpsilon) {
result.rgb = fadeAdjust(result.rgb, fadeAmount);
}
);
}
@end