/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ #import "ARTLinearGradient.h" #import "RCTConvert+ART.h" #import "RCTLog.h" @implementation ARTLinearGradient { CGGradientRef _gradient; CGPoint _startPoint; CGPoint _endPoint; } - (instancetype)initWithArray:(NSArray *)array { if ((self = [super initWithArray:array])) { if (array.count < 5) { RCTLogError(@"-[%@ %@] expects 5 elements, received %@", self.class, NSStringFromSelector(_cmd), array); return nil; } _startPoint = [RCTConvert CGPoint:array offset:1]; _endPoint = [RCTConvert CGPoint:array offset:3]; _gradient = CGGradientRetain([RCTConvert CGGradient:array offset:5]); } return self; } - (void)dealloc { CGGradientRelease(_gradient); } - (void)paint:(CGContextRef)context { CGGradientDrawingOptions extendOptions = kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation; CGContextDrawLinearGradient(context, _gradient, _startPoint, _endPoint, extendOptions); } @end