mirror of
https://github.com/danog/Telegram.git
synced 2024-12-11 17:09:46 +01:00
79 lines
1.7 KiB
Objective-C
79 lines
1.7 KiB
Objective-C
#import "PGSaturationTool.h"
|
|
|
|
@interface PGSaturationTool ()
|
|
{
|
|
PGPhotoProcessPassParameter *_parameter;
|
|
}
|
|
@end
|
|
|
|
@implementation PGSaturationTool
|
|
|
|
- (instancetype)init
|
|
{
|
|
self = [super init];
|
|
if (self != nil)
|
|
{
|
|
_identifier = @"saturation";
|
|
_type = PGPhotoToolTypeShader;
|
|
_order = 8;
|
|
|
|
_minimumValue = -100;
|
|
_maximumValue = 100;
|
|
_defaultValue = 0;
|
|
|
|
self.value = @(_defaultValue);
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (NSString *)title
|
|
{
|
|
return TGLocalized(@"PhotoEditor.SaturationTool");
|
|
}
|
|
|
|
- (UIImage *)image
|
|
{
|
|
return [UIImage imageNamed:@"PhotoEditorSaturationTool"];
|
|
}
|
|
|
|
- (bool)shouldBeSkipped
|
|
{
|
|
return (ABS(((NSNumber *)self.displayValue).floatValue - (float)self.defaultValue) < FLT_EPSILON);
|
|
}
|
|
|
|
- (NSArray *)parameters
|
|
{
|
|
if (!_parameters)
|
|
{
|
|
_parameter = [PGPhotoProcessPassParameter parameterWithName:@"saturation" type:@"lowp float"];
|
|
_parameters = @[ [PGPhotoProcessPassParameter constWithName:@"satLuminanceWeighting" type:@"mediump vec3" value:@"vec3(0.2126, 0.7152, 0.0722)"],
|
|
_parameter ];
|
|
}
|
|
|
|
return _parameters;
|
|
}
|
|
|
|
- (void)updateParameters
|
|
{
|
|
NSNumber *value = (NSNumber *)self.displayValue;
|
|
|
|
CGFloat parameterValue = (value.floatValue / 100.0f);
|
|
if (parameterValue > 0)
|
|
parameterValue *= 1.05f;
|
|
parameterValue += 1;
|
|
[_parameter setFloatValue:parameterValue];
|
|
}
|
|
|
|
- (NSString *)shaderString
|
|
{
|
|
return PGShaderString
|
|
(
|
|
lowp float satLuminance = dot(result.rgb, satLuminanceWeighting);
|
|
lowp vec3 greyScaleColor = vec3(satLuminance);
|
|
|
|
result = vec4(clamp(mix(greyScaleColor, result.rgb, saturation), 0.0, 1.0), result.a);
|
|
);
|
|
}
|
|
|
|
@end
|