GLCanvasManager.m 1.55 KB
Newer Older
Gaëtan Renaudeau's avatar
Gaëtan Renaudeau committed
1 2 3
#import <React/RCTUIManager.h>
#import <React/RCTLog.h>
#import <UIKit/UIKit.h>
4 5 6
#import "GLCanvasManager.h"
#import "GLCanvas.h"
#import "RCTConvert+GLData.h"
7
#import "RCTConvert+CaptureConfig.h"
8 9 10 11 12 13 14 15 16 17 18 19 20

@implementation GLCanvasManager

RCT_EXPORT_MODULE();

- (instancetype)init
{
  self = [super init];
  if (self) {
  }
  return self;
}

Andrew Shini's avatar
Andrew Shini committed
21 22 23 24
+ (BOOL)requiresMainQueueSetup {
  return NO;
}

25 26 27 28 29
- (dispatch_queue_t)methodQueue
{
  return self.bridge.uiManager.methodQueue;
}

30
RCT_EXPORT_VIEW_PROPERTY(nbContentTextures, NSNumber);
31
RCT_EXPORT_VIEW_PROPERTY(autoRedraw, BOOL);
32
RCT_EXPORT_VIEW_PROPERTY(preserveImages, BOOL);
33
RCT_EXPORT_VIEW_PROPERTY(data, GLData);
34
RCT_EXPORT_VIEW_PROPERTY(renderId, NSNumber);
35
RCT_EXPORT_VIEW_PROPERTY(pixelRatio, NSNumber);
36
RCT_EXPORT_VIEW_PROPERTY(imagesToPreload, NSArray);
37 38 39
RCT_EXPORT_VIEW_PROPERTY(onGLLoad, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onGLProgress, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onGLCaptureFrame, RCTBubblingEventBlock);
40

41
RCT_EXPORT_METHOD(capture: (nonnull NSNumber *)reactTag withConfig:(id)config)
42
{
43 44
  [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
    UIView *view = viewRegistry[reactTag];
45 46 47 48
    if (![view isKindOfClass:[GLCanvas class]]) {
      RCTLog(@"expecting UIView, got: %@", view);
    }
    else {
49
      GLCanvas *glCanvas = (GLCanvas *)view;
50
      [glCanvas requestCaptureFrame:[RCTConvert CaptureConfig:config]];
51 52 53
    }
  }];
}
Gaëtan Renaudeau's avatar
Gaëtan Renaudeau committed
54

55 56 57
- (UIView *)view
{
  GLCanvas * v;
58
  v = [[GLCanvas alloc] initWithBridge:self.bridge];
59
  return v;
60

61 62
}

Gaëtan Renaudeau's avatar
Gaëtan Renaudeau committed
63
@end