Sha256: ea5a407392f3934d88e720aa69190a1a31e94bc22d28723a16b5da03bab0c4cd

Contents?: true

Size: 1.28 KB

Versions: 2

Compression:

Stored size: 1.28 KB

Contents

#include <qrtools_ui_camera.h>

static void deallocate(CvCapture * capture)
{
  if(capture) cvReleaseCapture(&capture);
}

static VALUE allocate(VALUE klass)
{
  return Data_Wrap_Struct(klass, NULL, deallocate, NULL);
}

static VALUE start(VALUE self)
{
  VALUE index = rb_iv_get(self, "@camera_number");
  CvCapture * capture = cvCreateCameraCapture(NUM2INT(index));
  DATA_PTR(self) = capture;
  return self;
}

static VALUE stop(VALUE self)
{
  CvCapture * capture;
  Data_Get_Struct(self, CvCapture, capture);
  if(capture) {
    cvReleaseCapture(&capture);
    DATA_PTR(self) = NULL;
  }
  return self;
}

static VALUE capture(VALUE self)
{
  CvCapture * capture;
  Data_Get_Struct(self, CvCapture, capture);

  IplImage * cam = cvQueryFrame(capture);
  if(cam)
    return QRTools_Wrap_Image(cvCloneImage(cam));

  return Qnil;
}

VALUE cQRToolsUICamera;

void init_qrtools_ui_camera()
{
  VALUE qrtools = rb_define_module("QRTools");
  VALUE ui      = rb_define_module_under(qrtools, "UI");
  VALUE klass   = rb_define_class_under(ui, "Camera", rb_cObject);

  cQRToolsUICamera = klass;
  rb_define_alloc_func(klass, allocate);
  rb_define_method(klass, "capture", capture, 0);

  rb_define_private_method(klass, "native_start", start, 0);
  rb_define_private_method(klass, "native_stop", stop, 0);
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
qrtools-1.0.0 ext/qrtools/qrtools_ui_camera.c
qrtools-1.0.1 ext/qrtools/qrtools_ui_camera.c