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