#include "spvm_native.h"

#include <stdio.h>
#include <opencv2/opencv.hpp>

extern "C" {

static const char* FILE_NAME = "MyOpenCVResize.c";

int32_t SPVM__MyOpenCVResize__resize(SPVM_ENV* env, SPVM_VALUE* stack) {
  
  using namespace cv;
  
  void* sv_in_file = stack[0].oval;
  const char* in_file = (const char*)env->get_elems_byte(env, sv_in_file);
  
  void* sv_out_file = stack[1].oval;
  const char* out_file = (const char*)env->get_elems_byte(env, sv_out_file);
  
  Mat image;
  image = imread( in_file, 1 );
  
  if (!image.data) {
    return env->die(env, stack, "The imread function(opencv2/opencv.hpp) failed.", "MyZlib.c", __func__, FILE_NAME, __LINE__);
  }
  
  resize(image, image, cv::Size(), 0.5, 0.5);
  
  imwrite(out_file, image);
  
  return 0;
}

}