Class: Miyako::Sprite

Inherits:
Object show all
Extended by:
Forwardable
Includes:
Animation, Layout, SpriteBase, SingleEnumerable
Defined in:
lib/Miyako/API/sprite.rb

Overview

スプライト管理クラス

Constant Summary collapse

@@abb =
{:ck => :color_key, :as => :alpha_surface, :ac => :alpha_channel}
@@sprites =
SpriteList.new

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SingleEnumerable

#each, #length

Methods included from Layout

#add_snap_child, #bottom, #bottom!, #center, #center!, #centering, #centering!, #copy_layout, #delete_snap_child, #get_snap_children, #get_snap_sprite, #include_snap_child?, #init_layout, #layout_dispose, #left, #left!, #middle, #middle!, #move, #move!, #move_to, #move_to!, #on_move, #outside_bottom, #outside_bottom!, #outside_left, #outside_left!, #outside_right, #outside_right!, #outside_top, #outside_top!, #pos, #relative_move_to, #relative_move_to!, #reset_snap, #right, #right!, #segment, #set_layout_size, #set_snap_children, #set_snap_sprite, #size, #snap, #top, #top!, #update_layout, #x, #y

Methods included from Animation

anim_hash, #reset, reset, start, #start, stop, #stop, update, update_animation, #update_animation

Methods included from SpriteBase

#hide, #oh, #ow, #ox, #oy, #render_d, #show

Constructor Details

#initialize(param) ⇒ Sprite

インスタンス生成

スプライトをファイルや画像サイズから生成します。 Screen.init/Miyako.openが呼ばれる前に作成しようとするとMiyakoError例外が発生します

v1.5以前は、ファイルからスプライトを生成するときは、ファイル名で画像が共有されていましたが、 v2.0では廃止されました。

param

各種設定(ハッシュ引数。詳細は後述)

返却値

生成したインスタンス

<引数の内容>

  • 1.画像の元データ(括弧内は省略形)。以下の3種類のどれかを必ず指定する。

  • 画像ファイル(ファイル名)から生成。 (書式):filename(:file)=>画像ファイル名 (例):file=>“image.png”

  • 画像サイズ(2要素の整数の配列もしくはSize構造体)から生成。

 (書式1):size=>2要素の配列((例):size=>[100,100])

  (書式2):size=>Size構造体((例):size=>Size.new(100,100))

* SDL::Surfaceクラスのインスタンスから生成。 
  (書式):bitmap(:bmp)=>SDL::Surfaceクラスのインスタンス((例):bmp=>@surface)
* SpriteUnit構造体のインスタンスから生成(ビットマップ以外のUnitの値は引き継がれる。
  しかし、snapの親子関係は引き継がれない)。

 (書式):unit=>SpriteUnit構造体のインスタンス((例):unit=>@spr.to_unit)

  • 2.透過設定(括弧内は省略形)。以下の3種類のどれかを必ず指定する。

  • カラーキーによる透過は行わない方式(デフォルトの方式) (書式):type=>:alpha_surface(:as)

  • カラーキーの指定。 (書式):type=>:color_key(:ck) カラーキー指定の方法は以下のとおり

    • 透明色にするピクセルの位置(2要素の整数の配列、Point構造体)

     (書式1):point=>2要素の配列((例):type=>:ck, :point=>)  (書式2):point=>Point構造体((例):type=>:ck, :point=>Point.new(20,20))

    • 色を直接指定

     (書式):tr_color=>色情報(Color.to_rgbメソッドで生成できるパラメータ)

     ((例1):type=>:ck, :tr_color=>[255,0,255] # 紫色を透明色に
     (例2):type=>:ck, :tr_color=>:red # 赤色を透明色に)
    
    1. αチャネル付き画像を使用(設定変更不可) (書式):type=>:alpha_channel(:ac)

  • 4.背景塗りつぶし。必要ならば、色を指定してその色で塗りつぶす

 (書式):fill=> #=> 白で塗りつぶす  省略時は塗りつぶさない

  • 5.半透明設定。必要ならば、指定した割合で透明度を変える

 値の範囲は0.0 <= alpha <= 1.0。範囲外の値を渡すとMiyakoValueErrorが発生  (書式):alpha=>0.5 #=> 半透明  (書式):alpha=>0.1 #=> 1割残っている程度  (書式):alpha=>0.0 #=> 完全透明  (書式):alpha=>1.0 #=> 完全不透明  省略時は生成時そのままの画像

Raises:



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/Miyako/API/sprite.rb', line 110

def initialize(param)
  raise MiyakoError, "Sprite instance cannot create uninitialized yet!" unless Screen.initialized?
  raise MiyakoTypeError, "Sprite parameter is not Hash!" unless param.kind_of?(Hash)
  setup
  init_layout

  bitmap = nil
  @tr_color = nil

  param[:type] ||= :color_key
  param[:type] = @@abb[param[:type]] if @@abb.has_key?(param[:type])
  param[:point]  ||= Point.new(0, 0)
  param[:tr_color]  ||= Color[:black]
  param[:is_fill] ||= false
  param[:fill] ||= nil
  param[:alpha] ||= nil

  if param.has_key?(:bitmap) || param.has_key?(:bmp)
    self.bitmap = param[:bitmap] || param[:bmp]
  elsif param.has_key?(:size)
    self.bitmap = Bitmap.create(*(param[:size].to_a))
    param[:is_fill] = true
  elsif param.has_key?(:filename) || param.has_key?(:file)
    name = param[:filename] || param[:file]
    raise MiyakoIOError.no_file(name) unless File.exist?(name)
    begin
      self.bitmap = Bitmap.load(name)
    rescue SDL::Error
      raise MiyakoFileFormatError, "Illegal file format! collect? #{name}"
    end
  elsif param.has_key?(:unit)
    self.bitmap = param[:unit].bitmap
  else
    raise MiyakoError, "Illegal Sprite parameter!"
  end

  case param[:type]
  when :color_key
    if param.has_key?(:point)
      @tr_color = Color.to_rgb(@unit.bitmap.get_rgb(@unit.bitmap.getPixel(*(param[:point].to_a))))
    else
      @tr_color = Color.to_rgb(param[:tr_color])
    end
    # カラーキーのα値を0にしたビットマップを作成
    if param[:is_fill]
      @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
      Bitmap.ck_to_ac!(@unit, [0,0,0])
    else
      Bitmap.ck_to_ac!(@unit, @tr_color)
    end
  when :alpha_surface
    # カラーキーのα値を0にしたビットマップを作成
    Bitmap.normal_to_ac!(@unit)
    if param[:is_fill]
      @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
      Bitmap.ck_to_ac!(@unit, [0,0,0])
    end
  when :alpha_channel
    if param[:is_fill]
      @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
      Bitmap.ck_to_ac!(@unit, [0,0,0])
    end
  else
    # 何もしない
  end
  @type = param[:type]

  if param.has_key?(:unit)
    SpriteUnitFactory.apply(@unit, :ow=>param[:unit].ow, :oh=>param[:unit].oh,
                                   :cx => param[:unit].cx, :cy => param[:unit].cy)
    self.move_to!(param[:unit].x, param[:unit].y)
  end

  if param[:fill]
    self.fill(param[:fill])
  end

  if param[:alpha]
    alpha = param[:alpha]
    raise MiyakoValueError, "alpha is 0<=alpha<=1. value=#{param[:alpha]}" unless (alpha >= 0.0 and alpha <= 1.0)
    Bitmap.dec_alpha!(self, alpha)
  end
end

Instance Attribute Details

#collisionObject

Collision#bindで関連づけられた当たり判定



34
35
36
# File 'lib/Miyako/API/sprite.rb', line 34

def collision
  @collision
end

#tr_colorObject (readonly)

カラーキーが有向になっている場合のRGB値。の配列(各要素は0~255の整数)



35
36
37
# File 'lib/Miyako/API/sprite.rb', line 35

def tr_color
  @tr_color
end

#typeObject (readonly)

画像の透明度・透過タイプを取得する(詳細はSprite.newメソッドを参照)



36
37
38
# File 'lib/Miyako/API/sprite.rb', line 36

def type
  @type
end

#visibleObject

レンダリングの可否(true->描画 false->非描画)



33
34
35
# File 'lib/Miyako/API/sprite.rb', line 33

def visible
  @visible
end

Class Method Details

.[](name) ⇒ Object



45
46
47
# File 'lib/Miyako/API/sprite.rb', line 45

def Sprite.[](name)
  @@sprites[name]
end

.[]=(name, sprite) ⇒ Object



49
50
51
# File 'lib/Miyako/API/sprite.rb', line 49

def Sprite.[]=(name, sprite)
  @@sprites[name] = sprite
end

.render_to(src, dst) ⇒ Object

インスタンスの内容を別のインスタンスに描画する

転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。 画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。 ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る) ブロックの引数は、|転送元のSpriteUnit,転送先のSpriteUnit|となる。 (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

自分自身を返す



534
535
# File 'lib/Miyako/API/sprite.rb', line 534

def Sprite.render_to(src, dst)
end

.spritesObject



41
42
43
# File 'lib/Miyako/API/sprite.rb', line 41

def Sprite.sprites
  @@sprites
end

Instance Method Details

#additive(src, &block) ⇒ Object

2枚の画像の加算合成を行う

範囲は、src側の(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側の(x,y)を左上とする。 ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の新しい画像インスタンス

Raises:



908
909
910
911
912
913
# File 'lib/Miyako/API/sprite.rb', line 908

def additive(src, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  self.render_to(dst)
  raise MiyakoValueError, "illegal range!" unless Bitmap.additive(src, dst, &block)
  return dst
end

#additive!(src, &block) ⇒ Object

2枚の画像の加算合成を行う

範囲は、src側の(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側の(x,y)を左上とする。 ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の自分自身を返す

Raises:



922
923
924
925
# File 'lib/Miyako/API/sprite.rb', line 922

def additive!(src, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.additive(src, self, &block)
  return self
end

#and(src, &block) ⇒ Object

2つの画像のandを取り、別の画像へ転送する

重ね合わせの式は、“src and self -> dst”で表される。自分自身と転送先画像は同じ大きさとなる。 範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。 src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。 ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の新しい画像インスタンス

Raises:



709
710
711
712
713
714
# File 'lib/Miyako/API/sprite.rb', line 709

def and(src, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  self.render_to(dst)
  raise MiyakoValueError, "illegal range!" unless Bitmap.blit_and(src, dst, &block)
  return dst
end

#and!(src, &block) ⇒ Object

2つの画像のandを破壊的に行う

重ね合わせの式は、“src and self -> self”で表される。 範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。 src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。 ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の自分自身を返す

Raises:



725
726
727
728
# File 'lib/Miyako/API/sprite.rb', line 725

def and!(src, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.blit_and(src, self, &block)
  return self
end

#bitmapObject

:nodoc:



223
224
225
# File 'lib/Miyako/API/sprite.rb', line 223

def bitmap #:nodoc:
  return @unit.bitmap
end

#bitmap=(bmp) ⇒ Object

:nodoc:



227
228
229
230
231
232
233
234
# File 'lib/Miyako/API/sprite.rb', line 227

def bitmap=(bmp) #:nodoc:
  @unit.bitmap = bmp
  @unit.ow = @unit.bitmap.w
  @unit.oh = @unit.bitmap.h
  @w = @unit.bitmap.w
  @h = @unit.bitmap.h
  set_layout_size(@unit.ow, @unit.oh)
end

#black_out(degree, &block) ⇒ Object

画像の色を一定の割合で黒に近づける(ブラックアウト)

赤・青・緑・αの各要素を一定の割合で下げ、黒色に近づける。 degreeの値が1.0に近づけば近づくほど黒色に近づく(値が0.0のときは変化なし、1.0のときは真っ黒になる) αの値が0のときは変わらないことに注意! ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

degree

変化率。0.0<=degree<=1.0までの実数

返却値

変更後の新しい画像インスタンス

Raises:



829
830
831
832
833
# File 'lib/Miyako/API/sprite.rb', line 829

def black_out(degree, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  raise MiyakoValueError, "illegal range!" unless Bitmap.black_out(self, dst, degree, &block)
  return dst
end

#black_out!(degree, &block) ⇒ Object

画像の色を一定の割合で黒に近づける(ブラックアウト)

赤・青・緑・αの各要素を一定の割合で下げ、黒色に近づける。 degreeの値が1.0に近づけば近づくほど黒色に近づく(値が0.0のときは変化なし、1.0のときは真っ黒になる) αの値が0のときは変わらないことに注意! ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

degree

変化率。0.0<=degree<=1.0までの実数

返却値

変更後の自分自身を返す

Raises:



844
845
846
847
# File 'lib/Miyako/API/sprite.rb', line 844

def black_out!(degree, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.black_out!(self, degree, &block)
  return self
end

#broad_rectObject

現在の画面の最大の大きさを矩形で取得する

但し、Spriteの場合は最大の大きさ=スプライトの大きさなので、rectと同じ値が得られる

返却値

画像の大きさ(Rect構造体のインスタンス)



465
466
467
# File 'lib/Miyako/API/sprite.rb', line 465

def broad_rect
  return self.rect
end

#center_xObject

画像の回転・拡大・縮小の中心座標を取得する

x方向の中心座標を取得する

返却値

中心座標。



430
431
432
# File 'lib/Miyako/API/sprite.rb', line 430

def center_x
  return @unit.cx
end

#center_x=(pos) ⇒ Object

画像の回転・拡大・縮小の中心座標を取得する

x方向の中心座標を取得する

pos

中心座標



437
438
439
# File 'lib/Miyako/API/sprite.rb', line 437

def center_x=(pos)
  @unit.cx = pos
end

#center_yObject

画像の回転・拡大・縮小の中心座標を取得する

y方向の中心座標を取得する

返却値

中心座標。



444
445
446
# File 'lib/Miyako/API/sprite.rb', line 444

def center_y
  return @unit.cy
end

#center_y=(pos) ⇒ Object

画像の回転・拡大・縮小の中心座標を取得する

y方向の中心座標を取得する

pos

中心座標



451
452
453
# File 'lib/Miyako/API/sprite.rb', line 451

def center_y=(pos)
  @unit.cy = pos
end

#clear!Object

画像の内容を破壊的に消去する

インスタンスの複製を行う(画像インスタンスも複製) 引数1個のブロックを渡せば、スプライトに補正をかけることが出来る 注意事項: 1.複製のため、呼び出していくとメモリ使用量が著しく上がる 2.レイアウト情報がリセットされる(snapの親子関係が解消される)

返却値

自分自身を返す



519
520
521
522
523
# File 'lib/Miyako/API/sprite.rb', line 519

def clear!
  Drawing.fill(self, [0,0,0])
  Bitmap.ck_to_ac!(self, [0,0,0])
  return self
end

#dec_alpha(degree, &block) ⇒ Object

画像のαチャネルの値を一定の割合で変化させて転送する

degreeの値が1.0に近づけば近づくほど透明に近づき、 degreeの値が-1.0に近づけば近づくほど不透明に近づく(値が-1.0のときは完全不透明、値が0.0のときは変化なし、1.0のときは完全に透明になる) 但し、元々αの値がゼロの時は変化しない ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

degree

減少率。-1.0<=degree<=1.0までの実数

返却値

変更後の新しい画像インスタンス

Raises:



799
800
801
802
803
# File 'lib/Miyako/API/sprite.rb', line 799

def dec_alpha(degree, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  raise MiyakoValueError, "illegal range!" unless Bitmap.dec_alpha(self, dst, degree, &block)
  return dst
end

#dec_alpha!(degree, &block) ⇒ Object

画像のαチャネルの値を一定の割合で破壊的に変化させる

degreeの値が1.0に近づけば近づくほど透明に近づき、 degreeの値が-1.0に近づけば近づくほど不透明に近づく (値が-1.0のときは完全不透明、値が0.0のときは変化なし、1.0のときは完全に透明になる) 但し、元々αの値がゼロの時は変化しない ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

degree

減少率。-1.0<=degree<=1.0までの実数

返却値

変更後の自分自身を返す

Raises:



815
816
817
818
# File 'lib/Miyako/API/sprite.rb', line 815

def dec_alpha!(degree, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.dec_alpha!(self, degree, &block)
  return self
end

#disposeObject

画像を解放する

内部で使用しているデータをインスタンスから解放する



481
482
483
484
485
# File 'lib/Miyako/API/sprite.rb', line 481

def dispose
  layout_dispose
  @unit.bitmap = nil
  @unit = nil
end

#fill(color) ⇒ Object

画像全体を指定の色で塗りつぶす

color

塗りつぶす色。Color.to_rgbメソッドのパラメータでの指定が可能

返却値

自分自身を返す



239
240
241
242
# File 'lib/Miyako/API/sprite.rb', line 239

def fill(color)
  @unit.bitmap.fill_rect(0,0,self.w,self.h,Color.to_rgb(color))
  return self
end

#hObject

画像の高さを取得する

返却値

画像の高さ(ピクセル)



219
220
221
# File 'lib/Miyako/API/sprite.rb', line 219

def h
  return @unit.bitmap.h
end

#hsv(degree, saturation, value, &block) ⇒ Object

画像の色相・彩度・明度を変更する

ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

degree

色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0

saturation

彩度の変更量。範囲は0.0〜1.0の実数

value

明度の変更量。範囲は0.0〜1.0の実数

返却値

変更後の新しい画像インスタンス

Raises:



1031
1032
1033
1034
1035
# File 'lib/Miyako/API/sprite.rb', line 1031

def hsv(degree, saturation, value, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  raise MiyakoValueError, "illegal range!" unless Bitmap.hsv(self, dst, degree, saturation, value, &block)
  return dst
end

#hsv!(degree, saturation, value, &block) ⇒ Object

画像の色相・彩度・明度を変更する

ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

degree

色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0

saturation

彩度の変更量。範囲は0.0〜1.0の実数

value

明度の変更量。範囲は0.0〜1.0の実数

返却値

変更後の画像インスタンス

Raises:



1045
1046
1047
1048
# File 'lib/Miyako/API/sprite.rb', line 1045

def hsv!(degree, saturation, value, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.hsv!(self, degree, saturation, value, &block)
  return self
end

#hue(degree, &block) ⇒ Object

画像の色相を変更する

ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

degree

色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0

返却値

変更後の新しい画像インスタンス

Raises:



959
960
961
962
963
# File 'lib/Miyako/API/sprite.rb', line 959

def hue(degree, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  raise MiyakoValueError, "illegal range!" unless Bitmap.hue(self, dst, degree, &block)
  return dst
end

#hue!(degree, &block) ⇒ Object

画像の色相を変更する

degree

色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0

ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

返却値

変更後の画像インスタンス

返却値

変更後の自分自身を返す

Raises:



972
973
974
975
# File 'lib/Miyako/API/sprite.rb', line 972

def hue!(degree, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.hue!(self, degree, &block)
  return self
end

#image_rectObject

スプライトの元画像の矩形を返す

返却値

Rect構造体インスタンス



423
424
425
# File 'lib/Miyako/API/sprite.rb', line 423

def image_rect
  return Rect.new(0,0,self.bitmap.w, self.bitmap.h)
end

#image_sizeObject

スプライトの元画像の大きさを返す

返却値

Size構造体インスタンス



417
418
419
# File 'lib/Miyako/API/sprite.rb', line 417

def image_size
  return Size.new(self.bitmap.w,self.bitmap.h)
end

#initialize_copy(obj) ⇒ Object

複写時に呼び出されるメソッド

複写と同時に、本インスタンスに対するスナップの関係を解消



198
199
200
201
# File 'lib/Miyako/API/sprite.rb', line 198

def initialize_copy(obj)
  self.unit = obj.to_unit
  copy_layout
end

#inverse(&block) ⇒ Object

画像のRGB値を反転させる

αチャネルの値は変更しない ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

返却値

変更後の新しい画像インスタンス

Raises:



884
885
886
887
888
# File 'lib/Miyako/API/sprite.rb', line 884

def inverse(&block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  raise MiyakoValueError, "illegal range!" unless Bitmap.inverse(self, dst, &block)
  return dst
end

#inverse!(&block) ⇒ Object

画像のRGB値を反転させる

αチャネルの値は変更しない ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

返却値

変更後の自分自身を返す

Raises:



896
897
898
899
# File 'lib/Miyako/API/sprite.rb', line 896

def inverse!(&block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.inverse!(self, &block)
  return self
end

#oh=(v) ⇒ Object

画像の表示高を指定する

ohを指定すると、縦方向の一部のみ表示される。 値が画像の高さの範囲外(値がマイナス、画像の高さを超える値)のときは例外が発生する

v

表示高。整数で指定



273
274
275
276
# File 'lib/Miyako/API/sprite.rb', line 273

def oh=(v)
  @unit.oh = v
  set_layout_size(@unit.ow, v)
end

#or(src, &block) ⇒ Object

2つの画像のorを取り、別の画像へ転送する

重ね合わせの式は、“src or self -> dst”で表される。自分自身と転送先画像は同じ大きさとなる。 範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。 src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。 ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の新しい画像インスタンス

Raises:



739
740
741
742
743
744
# File 'lib/Miyako/API/sprite.rb', line 739

def or(src, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  self.render_to(dst)
  raise MiyakoValueError, "illegal range!" unless Bitmap.blit_or(src, dst, &block)
  return dst
end

#or!(src, &block) ⇒ Object

2つの画像のorを破壊的に行う

重ね合わせの式は、“src or self -> self”で表される。 範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。 src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。 ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の自分自身を返す

Raises:



755
756
757
758
# File 'lib/Miyako/API/sprite.rb', line 755

def or!(src, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.blit_or(src, self, &block)
  return self
end

#ow=(v) ⇒ Object

画像の表示幅を指定する

owを指定すると、横方向の一部のみ表示される。 値が画像の幅の範囲外(値がマイナス、画像の幅を超える値)のときは例外が発生する

v

表示幅。整数で指定



264
265
266
267
# File 'lib/Miyako/API/sprite.rb', line 264

def ow=(v)
  @unit.ow = v
  set_layout_size(v, @unit.oh)
end

#ox=(v) ⇒ Object

画像の表示開始位置(X座標)を指定する

oxを指定すると、表示の左上位置が変更される。 値が画像の幅の範囲外(値がマイナス、画像の幅を超える値)のときは例外が発生する

v

表示開始位置。整数で指定



248
249
250
# File 'lib/Miyako/API/sprite.rb', line 248

def ox=(v)
  @unit.ox = v
end

#oy=(v) ⇒ Object

画像の表示開始位置(Y座標)を指定する

oyを指定すると、表示の左上位置が変更される。 値が画像の高さの範囲外(値がマイナス、画像の高さを超える値)のときは例外が発生する

v

表示開始位置。整数で指定



256
257
258
# File 'lib/Miyako/API/sprite.rb', line 256

def oy=(v)
  @unit.oy = v
end

#part_move(dx, dy) ⇒ Object

範囲を画像の大きさに合わせながら、部分描画開始位置を移動させる

ただし、移動した後の矩形を得られるだけで、内部を変更しない

返却値

変更後の部分描画矩形(Rect構造体)



370
371
372
373
374
375
376
377
# File 'lib/Miyako/API/sprite.rb', line 370

def part_move(dx, dy)
  return adjust_part(
           dx ? self.ox+dx : self.ox,
           dy ? self.oy+dy : self.oy,
           self.ow,
           self.oh
         )
end

#part_move!(dx, dy) ⇒ Object

範囲を画像の大きさに合わせながら、部分描画開始位置を移動させる

返却値

自分自身



317
318
319
320
321
322
323
324
325
326
# File 'lib/Miyako/API/sprite.rb', line 317

def part_move!(dx, dy)
  @unit.ox, @unit.oy, @unit.ow, @unit.oh =
    adjust_part(
      dx ? @unit.ox+dx : @unit.ox,
      dy ? @unit.oy+dy : @unit.oy,
      @unit.ow,
      @unit.oh
    )
  return self
end

#part_move_to(x, y) ⇒ Object

範囲を画像の大きさに合わせながら、部分描画開始位置を移動させる

ただし、移動した後の矩形を得られるだけで、内部を変更しない

返却値

変更後の部分描画矩形(Rect構造体)



382
383
384
385
386
387
388
389
# File 'lib/Miyako/API/sprite.rb', line 382

def part_move_to(x, y)
  return adjust_part(
           x ? x : self.ox,
           y ? y : self.oy,
           self.ow,
           self.oh
         )
end

#part_move_to!(x, y) ⇒ Object

範囲を画像の大きさに合わせながら、部分描画開始位置を移動させる

返却値

自分自身



330
331
332
333
334
335
336
337
338
339
# File 'lib/Miyako/API/sprite.rb', line 330

def part_move_to!(x, y)
  @unit.ox, @unit.oy, @unit.ow, @unit.oh =
    adjust_part(
      x ? x : @unit.ox,
      y ? y : @unit.oy,
      @unit.ow,
      @unit.oh
    )
  return self
end

#part_rectObject

スプライトの部分描画矩形を返す

返却値

Rect構造体インスタンス



280
281
282
# File 'lib/Miyako/API/sprite.rb', line 280

def part_rect
  return Rect.new(self.ox,self.oy,self.ow,self.oh)
end

#part_resize(dw, dh) ⇒ Object

範囲を画像の大きさに合わせながら、部分描画の大きさを変える

ただし、移動した後の矩形を得られるだけで、内部を変更しない

返却値

変更後の部分描画矩形(Rect構造体)



394
395
396
397
398
399
400
401
# File 'lib/Miyako/API/sprite.rb', line 394

def part_resize(dw, dh)
  return adjust_part(
           self.ox,
           self.oy,
           dw ? self.ow+dw : self.ow,
           dh ? self.oh+dh : self.oh
         )
end

#part_resize!(dw, dh) ⇒ Object

範囲を画像の大きさに合わせながら、部分描画の大きさを変える

返却値

自分自身



343
344
345
346
347
348
349
350
351
352
# File 'lib/Miyako/API/sprite.rb', line 343

def part_resize!(dw, dh)
  @unit.ox, @unit.oy, @unit.ow, @unit.oh =
    adjust_part(
      @unit.ox,
      @unit.oy,
      dw ? @unit.ow+dw : @unit.ow,
      dh ? @unit.oh+dh : @unit.oh
    )
  return self
end

#part_resize_to(w, h) ⇒ Object

範囲を画像の大きさに合わせながら、部分描画の大きさを変える

ただし、移動した後の矩形を得られるだけで、内部を変更しない

返却値

変更後の部分描画矩形(Rect構造体)



406
407
408
409
410
411
412
413
# File 'lib/Miyako/API/sprite.rb', line 406

def part_resize_to(w, h)
  return adjust_part(
           self.ox,
           self.oy,
           w ? w : self.ow,
           h ? h : self.oh
         )
end

#part_resize_to!(w, h) ⇒ Object

範囲を画像の大きさに合わせながら、部分描画の大きさを変える

返却値

自分自身



356
357
358
359
360
361
362
363
364
365
# File 'lib/Miyako/API/sprite.rb', line 356

def part_resize_to!(w, h)
  @unit.ox, @unit.oy, @unit.ow, @unit.oh =
    adjust_part(
      @unit.ox,
      @unit.oy,
      w ? w : @unit.ow,
      h ? h : @unit.oh
    )
  return self
end

#rectObject

画像の表示矩形を取得する

画像が表示されているときの矩形(Rect構造体)を取得する

返却値

生成された矩形(Rect構造体インスタンス)



458
459
460
# File 'lib/Miyako/API/sprite.rb', line 458

def rect
  return Rect.new(@unit.x, @unit.y, @unit.ow, @unit.oh)
end

#renderObject

インスタンスの内容を画面に描画する

現在の画像を、現在の状態で描画するよう指示する ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る) (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|インスタンスのSpriteUnit, 画面のSpriteUnit|となる。 visibleメソッドの値がfalseのときは描画されない。

返却値

自分自身を返す



544
545
# File 'lib/Miyako/API/sprite.rb', line 544

def render
end

#render_rect(rect) ⇒ Object

部分矩形の一部分を画面に描画する

現在の画像を、現在の状態で描画するよう指示する ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る) (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|インスタンスのSpriteUnit, 画面のSpriteUnit|となる。 visibleメソッドの値がfalseのときは描画されない。

返却値

自分自身を返す



583
584
# File 'lib/Miyako/API/sprite.rb', line 583

def render_rect(rect)
end

#render_rect2(rect) ⇒ Object

画像の一部分を画面に描画する

画像の一部分(rect構造体で示した矩形)を画面に描画する このメソッドでは、部分矩形を無視して描画する visibleメソッドの値がfalseのときは描画されない。

rect

Rect構造体

返却値

自分自身を返す



604
605
# File 'lib/Miyako/API/sprite.rb', line 604

def render_rect2(rect)
end

#render_rect2_to(dst, rect) ⇒ Object

画像の一部分を別のインスタンスに描画する

画像の一部分(rect構造体で示した矩形)を別のスプライトに描画する このメソッドでは、部分矩形を無視して描画する visibleメソッドの値がfalseのときは描画されない。

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

rect

Rect構造体

返却値

自分自身を返す



614
615
# File 'lib/Miyako/API/sprite.rb', line 614

def render_rect2_to(dst,rect)
end

#render_rect2_xy(rect, x, y) ⇒ Object

画像の一部分を画面の指定の位置に描画する

画像の一部分(rect構造体で示した矩形)を画面のの位置を開始点として描画する このメソッドでは、あらかじめ持っている描画開始位置と部分矩形を無視して描画する visibleメソッドの値がfalseのときは描画されない。

rect

Rect構造体

x

描画開始位置(x座標)

y

描画開始位置(y座標)

返却値

自分自身を返す



648
649
# File 'lib/Miyako/API/sprite.rb', line 648

def render_rect2_xy(rect,x,y)
end

#render_rect2_xy_to(dst, rect, x, y) ⇒ Object

画像の一部分を別のインスタンスの指定の位置にに描画する

画像の一部分(rect構造体で示した矩形)をスプライトのの位置を開始点として描画する このメソッドでは、あらかじめ持っている描画開始位置と部分矩形を無視して描画する visibleメソッドの値がfalseのときは描画されない。

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

rect

Rect構造体

x

描画開始位置(x座標)

y

描画開始位置(y座標)

返却値

自分自身を返す



660
661
# File 'lib/Miyako/API/sprite.rb', line 660

def render_rect2_xy_to(dst,rect,x,y)
end

#render_rect_to(dst, rect) ⇒ Object

部分矩形の一部分を別のインスタンスに描画する

転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。 画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。 ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る) (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。 visibleメソッドの値がfalseのときは描画されない。

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

自分自身を返す



595
596
# File 'lib/Miyako/API/sprite.rb', line 595

def render_rect_to(dst,rect)
end

#render_rect_xy(rect, x, y) ⇒ Object

部分矩形の一部分を画面の指定の位置に描画する

画像の一部分(rect構造体で示した矩形)を画面のの位置を開始点として描画する このメソッドでは、あらかじめ持っている描画開始位置を無視して描画する visibleメソッドの値がfalseのときは描画されない。

rect

Rect構造体

x

描画開始位置(x座標)

y

描画開始位置(y座標)

返却値

自分自身を返す



625
626
# File 'lib/Miyako/API/sprite.rb', line 625

def render_rect_xy(rect,x,y)
end

#render_rect_xy_to(dst, rect, x, y) ⇒ Object

部分矩形の一部分を別のインスタンスの指定の位置にに描画する

画像の一部分(rect構造体で示した矩形)をスプライトのの位置を開始点として描画する このメソッドでは、あらかじめ持っている描画開始位置を無視して描画する visibleメソッドの値がfalseのときは描画されない。

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

rect

Rect構造体

x

描画開始位置(x座標)

y

描画開始位置(y座標)

返却値

自分自身を返す



637
638
# File 'lib/Miyako/API/sprite.rb', line 637

def render_rect_xy_to(dst,rect,x,y)
end

#render_to(dst) ⇒ Object

インスタンスの内容を別のインスタンスに描画する

転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。 画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。 ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る) (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。 visibleメソッドの値がfalseのときは描画されない。

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

自分自身を返す



556
557
# File 'lib/Miyako/API/sprite.rb', line 556

def render_to(dst)
end

#render_to_transform(dst, radian, xscale, yscale) ⇒ Object

インスタンスの内容を画面に描画する(回転/拡大/縮小/鏡像付き)

転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。回転の中心はsrc側(ox,oy)を起点に、src側(cx,cy)が中心になるように設定する。 画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、画面側SpriteUnitの(cx,cy)が中心になるように設定にする。 回転角度が正だと右回り、負だと左回りに回転する 変形の度合いは、src側SpriteUnitのxscale, yscaleを使用する(ともに実数で指定する)。それぞれ、x方向、y方向の度合いとなる 度合いが scale > 1.0 だと拡大、 0 < scale < 1.0 だと縮小、scale < 0.0 負だと鏡像の拡大・縮小になる(scale == -1.0 のときはミラー反転になる) また、変形元の幅・高さのいずれかが32768以上の時は回転・転送を行わない ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る) (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。 visibleメソッドの値がfalseのときは描画されない。

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

radian

回転角度。単位はラジアン。値の範囲は0<=radian<2pi

xscale

拡大率(x方向)

yscale

拡大率(y方向)

返却値

自分自身を返す



697
698
# File 'lib/Miyako/API/sprite.rb', line 697

def render_to_transform(dst, radian, xscale, yscale)
end

#render_transform(radian, xscale, yscale) ⇒ Object

インスタンスの内容を画面に描画する(回転/拡大/縮小/鏡像付き)

転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。回転の中心はsrc側(ox,oy)を起点に、src側(cx,cy)が中心になるように設定する。 画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、画面側SpriteUnitの(cx,cy)が中心になるように設定にする。 回転角度が正だと右回り、負だと左回りに回転する 変形の度合いは、src側SpriteUnitのxscale, yscaleを使用する(ともに実数で指定する)。それぞれ、x方向、y方向の度合いとなる 度合いが scale > 1.0 だと拡大、 0 < scale < 1.0 だと縮小、scale < 0.0 負だと鏡像の拡大・縮小になる(scale == -1.0 のときはミラー反転になる) また、変形元の幅・高さのいずれかが32768以上の時は回転・転送を行わない ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る) (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|インスタンスのSpriteUnit,画面のSpriteUnit|となる。 visibleメソッドの値がfalseのときは描画されない。

radian

回転角度。単位はラジアン。値の範囲は0<=radian<2pi

xscale

拡大率(x方向)

yscale

拡大率(y方向)

返却値

自分自身を返す



678
679
# File 'lib/Miyako/API/sprite.rb', line 678

def render_transform(radian, xscale, yscale)
end

#render_xy(x, y) ⇒ Object

インスタンスの内容を画面の指定の位置に描画する

画像を画面のの位置を開始点として描画する このメソッドでは、あらかじめ持っている描画開始位置を無視して描画する visibleメソッドの値がfalseのときは描画されない。

返却値

自分自身を返す



564
565
# File 'lib/Miyako/API/sprite.rb', line 564

def render_xy(x,y)
end

#render_xy_to(dst, x, y) ⇒ Object

インスタンスの内容を別のインスタンスの指定の位置に描画する

画像を大正の画像の位置を開始点として描画する このメソッドでは、あらかじめ持っている描画開始位置を無視して描画する visibleメソッドの値がfalseのときは描画されない。

dst

転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

自分自身を返す



573
574
# File 'lib/Miyako/API/sprite.rb', line 573

def render_xy_to(dst,x,y)
end

#saturation(saturation, &block) ⇒ Object

画像の彩度を変更する

ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

saturation

彩度の変更量。範囲は0.0〜1.0の実数

返却値

変更後の新しい画像インスタンス

Raises:



983
984
985
986
987
# File 'lib/Miyako/API/sprite.rb', line 983

def saturation(saturation, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  raise MiyakoValueError, "illegal range!" unless Bitmap.saturation(self, dst, saturation, &block)
  return dst
end

#saturation!(saturation, &block) ⇒ Object

画像の彩度を変更する

ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

saturation

彩度の変更量。範囲は0.0〜1.0の実数

返却値

変更後の自分自身を返す

Raises:



995
996
997
998
# File 'lib/Miyako/API/sprite.rb', line 995

def saturation!(saturation, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.saturation!(self, saturation, &block)
  return self
end

#subtraction(src, &block) ⇒ Object

2枚の画像の減算合成を行う

範囲は、src側の(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側の(x,y)を左上とする。 ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の新しい画像インスタンス

Raises:



934
935
936
937
938
939
# File 'lib/Miyako/API/sprite.rb', line 934

def subtraction(src, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  self.render_to(dst)
  raise MiyakoValueError, "illegal range!" unless Bitmap.subtraction(src, dst, &block)
  return dst
end

#subtraction!(src, &block) ⇒ Object

2枚の画像の減算合成を行う

範囲は、src側の(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側の(x,y)を左上とする。 ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の自分自身を返す

Raises:



948
949
950
951
# File 'lib/Miyako/API/sprite.rb', line 948

def subtraction!(src, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.subtraction(src, self, &block)
  return self
end

#to_sprite {|sprite| ... } ⇒ Object

インスタンスをスプライト化して返す

インスタンスの複製を行う(画像インスタンスも複製) 引数1個のブロックを渡せば、スプライトに補正をかけることが出来る 注意事項: 1.複製のため、呼び出していくとメモリ使用量が著しく上がる 2.レイアウト情報がリセットされる(snapの親子関係が解消される)

返却値

生成したインスタンスを返す

Yields:

  • (sprite)


501
502
503
504
505
506
507
508
509
510
# File 'lib/Miyako/API/sprite.rb', line 501

def to_sprite
  unit = @unit.dup
  unit.bitmap = Bitmap.create(unit.bitmap.w, unit.bitmap.h)
  sprite = Sprite.new(:size => [unit.bitmap.w, unit.bitmap.h], :type => :ac)
  Drawing.fill(sprite, [0,0,0])
  Bitmap.ck_to_ac!(sprite, [0,0,0])
  Bitmap.blit_aa(self, sprite, 0, 0)
  yield sprite if block_given?
  return sprite
end

#to_unitObject

インスタンスをSpriteUnit構造体に変換して取得する

新しいSpriteUnitを作成して返す

返却値

SpriteUnit化したスプライト



490
491
492
# File 'lib/Miyako/API/sprite.rb', line 490

def to_unit
  return @unit.dup
end

#unit=(unit) ⇒ Object

:nodoc:



203
204
205
# File 'lib/Miyako/API/sprite.rb', line 203

def unit=(unit) #:nodoc:
  @unit = unit
end

#update {|_self| ... } ⇒ Object

:nodoc:

Yields:

  • (_self)

Yield Parameters:



469
470
471
472
473
# File 'lib/Miyako/API/sprite.rb', line 469

def update  #:nodoc:
  @update.call(self) if @update
  yield self if block_given?
  return self
end

#update=(u) ⇒ Object

:nodoc:



475
476
477
# File 'lib/Miyako/API/sprite.rb', line 475

def update=(u) #:nodoc:
  @update = u
end

#update_layout_positionObject

:nodoc:



207
208
209
# File 'lib/Miyako/API/sprite.rb', line 207

def update_layout_position #:nodoc:
  @unit.move_to!(*@layout.pos)
end

#value(value, &block) ⇒ Object

画像の明度を変更する

ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

value

明度の変更量。範囲は0.0〜1.0の実数

返却値

変更後の新しい画像インスタンス

Raises:



1006
1007
1008
1009
1010
# File 'lib/Miyako/API/sprite.rb', line 1006

def value(value, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  raise MiyakoValueError, "illegal range!" unless Bitmap.value(self, dst, value, &block)
  return dst
end

#value!(value, &block) ⇒ Object

画像の明度を変更する

ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

value

明度の変更量。範囲は0.0〜1.0の実数

返却値

変更後の画像インスタンス

Raises:



1018
1019
1020
1021
# File 'lib/Miyako/API/sprite.rb', line 1018

def value!(value, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.value!(self, value, &block)
  return self
end

#wObject

画像の幅を取得する

返却値

画像の幅(ピクセル)



213
214
215
# File 'lib/Miyako/API/sprite.rb', line 213

def w
  return @unit.bitmap.w
end

#white_out(degree, &block) ⇒ Object

画像の色を一定の割合で白に近づける(ホワイトアウト)

赤・青・緑・αの各要素を一定の割合で上げ、白色に近づける。 degreeの値が1.0に近づけば近づくほど白色に近づく(値が0.0のときは変化なし、1.0のときは真っ白になる) αの値が0のときは変わらないことに注意! ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

degree

変化率。0.0<=degree<=1.0までの実数

返却値

変更後の新しい画像インスタンス

Raises:



858
859
860
861
862
# File 'lib/Miyako/API/sprite.rb', line 858

def white_out(degree, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  raise MiyakoValueError, "illegal range!" unless Bitmap.white_out(self, dst, degree, &block)
  return dst
end

#white_out!(degree, &block) ⇒ Object

画像の色を一定の割合で白に近づける(ホワイトアウト)

赤・青・緑・αの各要素を一定の割合で上げ、白色に近づける。 degreeの値が1.0に近づけば近づくほど白色に近づく(値が0.0のときは変化なし、1.0のときは真っ白になる) αの値が0のときは変わらないことに注意! ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

degree

変化率。0.0<=degree<=1.0までの実数

返却値

変更後の自分自身を返す

Raises:



873
874
875
876
# File 'lib/Miyako/API/sprite.rb', line 873

def white_out!(degree, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.white_out!(self, degree, &block)
  return self
end

#xor(src, &block) ⇒ Object

2つの画像のxorを取り、別の画像へ転送する

重ね合わせの式は、“src xor self -> dst”で表される。自分自身と転送先画像は同じ大きさとなる。 範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。 src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。 ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の新しい画像インスタンス

Raises:



769
770
771
772
773
774
# File 'lib/Miyako/API/sprite.rb', line 769

def xor(src, &block)
  dst = Sprite.new(:size=>self.size, :type=>:ac)
  self.render_to(dst)
  raise MiyakoValueError, "illegal range!" unless Bitmap.blit_xor(src, dst, &block)
  return dst
end

#xor!(src, &block) ⇒ Object

2つの画像のxorを破壊的に行う

重ね合わせの式は、“src xor self -> self”で表される。 範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。 src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。 ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る (ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない) ブロックの引数は、|SpriteUnit|となる。

src

転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)

返却値

変更後の自分自身を返す

Raises:



785
786
787
788
# File 'lib/Miyako/API/sprite.rb', line 785

def xor!(src, &block)
  raise MiyakoValueError, "illegal range!" unless Bitmap.blit_xor(src, self, &block)
  return self
end