Class: Rixmap::ImageIO::ImageIOInfo

Inherits:
Object
  • Object
show all
Defined in:
src/rixmapio.cxx,
src/rixmapio.cxx

Overview

IOクラス実装情報クラス. Rixmap::ImageIOモジュールの内部で使用しています.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass, extensions = []) (private)

画像入出力情報クラスを初期化します.

Parameters:

  • klass (Class)

    ImageIO実装クラス

  • extensions (Array) (defaults to: [])

    画像の拡張子リスト



253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'src/rixmapio.cxx', line 253

static VALUE ImageIOInfo_initialize(int argc, VALUE* argv, VALUE self) {
    VALUE argKlass, argExtensions;
    rb_scan_args(argc, argv, "11", &argKlass, &argExtensions);

    VALUE objIOClass    = argKlass;
    VALUE objExtensions = Qnil;
    if (NIL_P(argExtensions)) {
        objExtensions = rb_ary_new();
    } else {
        objExtensions = rb_Array(argExtensions);
    }

    rb_iv_set(self, "@imageio",    objIOClass);
    rb_iv_set(self, "@extensions", objExtensions);

    return self;
}

Instance Attribute Details

#extensionsObject

#imageioObject

Instance Method Details

#match?(argFileName) ⇒ Boolean

指定したファイル名の拡張子をこの情報クラスの拡張子リストと比較して、 マッチしたものが見つかった場合はtrueを返します.

Parameters:

  • filename (String)

    ファイル名

Returns:

  • (Boolean)

    拡張子リストとマッチしたものがあるばあいはtrue



278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
# File 'src/rixmapio.cxx', line 278

static VALUE ImageIOInfo_isMatchFileName(VALUE self, VALUE argFileName) {
    // 型チェック
    VALUE objExtensions = rb_iv_get(self, "@extensions");
    if (NIL_P(objExtensions)) {
        rb_warning("extensions is null");
        return Qfalse;
    }
    if (!RB_TYPE_P(objExtensions, T_ARRAY)) {
        rb_warning("extensions is not array");
        return Qfalse;
    }

    // ファイル名
    VALUE objFileName = rb_funcall(rb_String(argFileName), rb_intern("downcase"), 0);

    // マッチをとる
    long next = RARRAY_LEN(objExtensions);
    for (long i = 0; i < next; i++) {
        VALUE objExt = rb_funcall(rb_String(rb_ary_entry(objExtensions, i)), rb_intern("downcase"), 0);
        if (RTEST(rb_funcall(objFileName, rb_intern("end_with?"), 1, objExt))) {
            return Qtrue;
        }
    }
    return Qfalse;
}