12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /*
- * 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/ARTPattern.h>
- #import <React/RCTLog.h>
- #import "RCTConvert+ART.h"
- @implementation ARTPattern
- {
- CGImageRef _image;
- CGRect _rect;
- }
- - (instancetype)initWithArray:(NSArray<id /* imagesource + numbers */> *)array
- {
- if ((self = [super initWithArray:array])) {
- if (array.count < 6) {
- RCTLogError(@"-[%@ %@] expects 6 elements, received %@",
- self.class, NSStringFromSelector(_cmd), array);
- return nil;
- }
- _image = CGImageRetain([RCTConvert CGImage:array[1]]);
- _rect = [RCTConvert CGRect:array offset:2];
- }
- return self;
- }
- - (void)dealloc
- {
- CGImageRelease(_image);
- }
- // Note: This could use applyFillColor with a pattern. This could be more efficient but
- // to do that, we need to calculate our own user space CTM.
- - (void)paint:(CGContextRef)context
- {
- CGContextDrawTiledImage(context, _rect, _image);
- }
- @end
|