Sha256: d7d070c9beea9e55aee413f4f8c5fc986b217cccfdd2dd178b68b8adfc9e2a11

Contents?: true

Size: 1.68 KB

Versions: 2

Compression:

Stored size: 1.68 KB

Contents

#include <qrtools_image.h>

static void dealloc(IplImage * img)
{
  cvReleaseImage(&img);
}

static VALUE load(VALUE klass, VALUE path)
{
  IplImage *src = cvLoadImage(StringValuePtr(path), 1);
  return Data_Wrap_Struct(klass, NULL, dealloc, src);
}

static VALUE save(VALUE self, VALUE path)
{
  IplImage * src;
  Data_Get_Struct(self, IplImage, src);
  cvSaveImage(StringValuePtr(path), src);
  return self;
}

/*
 * call-seq:
 *  native_draw_line(from, to, r, g, b, thickness, type, shift)
 *
 * Draw line from +from+ vertex to +to+ vertex
 */
static VALUE native_draw_line(
    VALUE self,
    VALUE _from,
    VALUE _to,
    VALUE _r,
    VALUE _g,
    VALUE _b,
    VALUE _thickness,
    VALUE _type,
    VALUE _shift
) {
  IplImage * src;
  Data_Get_Struct(self, IplImage, src);
  cvLine(
      src,
      cvPoint(
        NUM2INT(rb_funcall(_from, rb_intern("x"), 0)),
        NUM2INT(rb_funcall(_from, rb_intern("y"), 0))
      ),
      cvPoint(
        NUM2INT(rb_funcall(_to, rb_intern("x"), 0)),
        NUM2INT(rb_funcall(_to, rb_intern("y"), 0))
      ),
      CV_RGB(
        NUM2INT(_r),
        NUM2INT(_g),
        NUM2INT(_b)
      ),
      NUM2INT(_thickness),
      NUM2INT(_type),
      NUM2INT(_shift)
  );
  return self;
}

VALUE QRTools_Wrap_Image(IplImage * image)
{
  return Data_Wrap_Struct(cQRToolsImage, NULL, dealloc, image);
}

VALUE cQRToolsImage;

void init_qrtools_image()
{
  VALUE qrtools  = rb_define_module("QRTools");
  VALUE klass    = rb_define_class_under(qrtools, "Image", rb_cObject);

  cQRToolsImage = klass;

  rb_define_singleton_method(klass, "load", load, 1);
  rb_define_method(klass, "save", save, 1);
  rb_define_method(klass, "native_draw_line", native_draw_line, 8);
}

Version data entries

2 entries across 2 versions & 1 rubygems

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