123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /*
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- #import <React/ARTLinearGradient.h>
- #import <React/RCTLog.h>
- #import "RCTConvert+ART.h"
- @implementation ARTLinearGradient
- {
- CGGradientRef _gradient;
- CGPoint _startPoint;
- CGPoint _endPoint;
- }
- - (instancetype)initWithArray:(NSArray<NSNumber *> *)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
|