ruby-processingでopenclass

openclassを利用しようとしたとき、詰まったのでメモ。

 --bareオプションで作成した場合、Processing::Appクラスに含まれる形になるので
普通にFixnumにメソッドを追加ができません。

--bareで生成されるスケルトンでFixnumクラスにfooメソッドを追加しても

class Fixnum
  def foo
    "foo#{self}"
  end
end

def setup
  p 100.foo
end

def draw

end

実際は、以下のだからメソッドは追加されていないw;

class Sketch < Processing::App
  class Fixnum
  #class Sketch::Fixnumにfooメソッド定義なので::Fixnumにはfooメソッドは未定義のままw;
    def foo
      "foo#{self}"
    end
  end

  def setup
    p 100.foo
  end

  def draw

  end
end


ので、::Fixnumの相対?で指定してやって解決^^;

以下、画像ファイルから赤色部分の検索。

class ::Fixnum
  def alpha
    ((self>>24)&0xff)
  end
  def red
    ((self>>16)&0xff)
  end
  def green
    ((self>> 8)&0xff)
  end
  def blue
    ((self>> 0)&0xff)
  end
end

def setup
  @img = load_image "sample.jpg"

  @jp.width.times{|x|
    @jp.height.times{|y|
      p [x,y] if @img.get(x,y).red > 250  #RGBで赤色の部分を検索
    }
  }
end

def draw

end