Module: Axon::Interpolation

Defined in:
ext/axon/interpolation.c

Class Method Summary collapse

Class Method Details

.bilinear(rb_scanline1, rb_scanline2, rb_width, rb_ty, rb_components) ⇒ Object

:nodoc:



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'ext/axon/interpolation.c', line 69

static VALUE
bilinear(VALUE self, VALUE rb_scanline1, VALUE rb_scanline2, VALUE rb_width,
	 VALUE rb_ty, VALUE rb_components)
{
    double ty;
    unsigned char *scanline1, *scanline2;
    int src_line_size;
    size_t width, components, src_width;

    width = NUM2INT(rb_width);
    components = NUM2INT(rb_components);
    ty = NUM2DBL(rb_ty);

    Check_Type(rb_scanline1, T_STRING);
    Check_Type(rb_scanline2, T_STRING);

    src_line_size = RSTRING_LEN(rb_scanline1);

    if (RSTRING_LEN(rb_scanline2) != src_line_size)
	rb_raise(rb_eArgError, "Scanlines don't have the same width.");

    src_width = src_line_size / components - 1;
    scanline1 = RSTRING_PTR(rb_scanline1);
    scanline2 = RSTRING_PTR(rb_scanline2);

    return bilinear2(width, src_width, components, ty, scanline1, scanline2);
}

.nearest(rb_scanline, rb_width, rb_components) ⇒ Object

:nodoc:



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'ext/axon/interpolation.c', line 121

static VALUE
nearest(VALUE self, VALUE rb_scanline, VALUE rb_width, VALUE rb_components)
{
    unsigned char *scanline;
    size_t width, src_width, src_line_size, components;

    width = NUM2INT(rb_width);
    components = NUM2INT(rb_components);

    Check_Type(rb_scanline, T_STRING);
    src_line_size = RSTRING_LEN(rb_scanline);
    scanline = RSTRING_PTR(rb_scanline);

    src_width = src_line_size / components;
    return nearest2(width, src_width, components, scanline);
}