Class: VIPS::Mask

Inherits:
Object
  • Object
show all
Defined in:
ext/mask.c

Instance Method Summary collapse

Constructor Details

#new(coeffs, scale = 1, offset = 0) ⇒ Object

Create a new Mask object. coeffs is a two-dimensional array where every row must have the same length. Note that some methods require a mask where all values in coeffs are whole integers.

[View source]

97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'ext/mask.c', line 97

static VALUE
mask_initialize(int argc, VALUE *argv, VALUE obj)
{
    VALUE coeffs, scale, offset;
    vipsMask *msk;
    Data_Get_Struct(obj, vipsMask, msk);

	rb_scan_args(argc, argv, "12", &coeffs, &scale, &offset);

    if (NIL_P(scale))
        scale = INT2NUM(1);

    if (NIL_P(offset))
        offset = INT2NUM(0);

    if(TYPE(scale) == T_FIXNUM && TYPE(offset) == T_FIXNUM &&
        ary_is_int_2d(coeffs)) {
        msk->imask = mask_ary2imask(coeffs);
        msk->imask->scale = NUM2INT(scale);
        msk->imask->offset = NUM2INT(offset);
    }

    msk->dmask = mask_ary2dmask(coeffs);
    msk->dmask->scale = NUM2DBL(scale);
    msk->dmask->offset = NUM2DBL(offset);

    return obj;
}

Instance Method Details

#coeffArray

Retrieve the two-dimensional array of coefficients for the mask.

Returns:

  • (Array)
[View source]

227
228
229
230
231
232
233
234
235
236
# File 'ext/mask.c', line 227

static VALUE
mask_coeff(VALUE obj)
{
    vipsMask *msk;
    Data_Get_Struct(obj, vipsMask, msk);
    if(msk->imask)
        return imask2rb(msk->imask);
    else
        return dmask2rb(msk->dmask);
}

#int?Boolean

Indicate whether all coefficients, the scale and the offset in the mask are integers. Some methods require an all-integer mask.

Returns:

  • (Boolean)
[View source]

246
247
248
249
250
251
252
253
254
255
# File 'ext/mask.c', line 246

static VALUE
mask_int_p(VALUE obj)
{
    vipsMask *msk;
    Data_Get_Struct(obj, vipsMask, msk);
    if(msk->imask)
        return Qtrue;

    return Qfalse;
}

#offsetNumeric

Retrieve the offset of the mask.

Returns:

  • (Numeric)
[View source]

178
179
180
181
182
183
184
# File 'ext/mask.c', line 178

static VALUE
mask_offset(VALUE obj)
{
    vipsMask *msk;
    Data_Get_Struct(obj, vipsMask, msk);
    return msk->imask ? INT2FIX(msk->imask->offset) : DBL2NUM(msk->dmask->offset);
}

#scaleNumeric

Retrieve the scale of the mask.

Returns:

  • (Numeric)
[View source]

163
164
165
166
167
168
169
# File 'ext/mask.c', line 163

static VALUE
mask_scale(VALUE obj)
{
    vipsMask *msk;
    Data_Get_Struct(obj, vipsMask, msk);
    return msk->imask ? INT2FIX(msk->imask->scale) : DBL2NUM(msk->dmask->scale);
}

#int?Boolean

Create a one-band, band format :DOUBLE image based on mask self.

Returns:

  • (Boolean)
[View source]

302
303
304
305
306
307
308
309
310
311
312
313
314
# File 'ext/mask.c', line 302

static VALUE
mask_to_image(VALUE obj)
{
    vipsMask *msk;

    OutImg(obj, new, data, im);
    Data_Get_Struct(obj, vipsMask, msk);

    if (im_mask2vips(msk->dmask, im))
        vips_lib_error();

    return new;
}

#xsizeNumeric

Retrieve the number of columns in the mask.

Returns:

  • (Numeric)
[View source]

133
134
135
136
137
138
139
# File 'ext/mask.c', line 133

static VALUE
mask_xsize(VALUE obj)
{
    vipsMask *msk;
    Data_Get_Struct(obj, vipsMask, msk);
    return INT2FIX(msk->dmask->xsize);
}

#ysizeNumeric

Retrieve the number of rows in the mask.

Returns:

  • (Numeric)
[View source]

148
149
150
151
152
153
154
# File 'ext/mask.c', line 148

static VALUE
mask_ysize(VALUE obj)
{
    vipsMask *msk;
    Data_Get_Struct(obj, vipsMask, msk);
    return INT2FIX(msk->dmask->ysize);
}