//
//  DrawableFrameHostObject.h
//  VisionCamera
//
//  Created by Marc Rousavy on 20.07.23.
//  Copyright © 2023 mrousavy. All rights reserved.
//

#pragma once

#import <jsi/jsi.h>
#import "../Frame Processor/FrameHostObject.h"
#import "../Frame Processor/Frame.h"
#import <CoreMedia/CMSampleBuffer.h>

#import "SkCanvas.h"
#import "JsiSkCanvas.h"

using namespace facebook;

class JSI_EXPORT DrawableFrameHostObject: public FrameHostObject {
public:
  explicit DrawableFrameHostObject(Frame* frame,
                                   std::shared_ptr<RNSkia::JsiSkCanvas> canvas):
                                    FrameHostObject(frame), _canvas(canvas) {}
  
public:
  jsi::Value get(jsi::Runtime&, const jsi::PropNameID& name) override;
  std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& rt) override;
  
  void invalidateCanvas();
  
private:
  std::shared_ptr<RNSkia::JsiSkCanvas> _canvas;
};