cyross-ruby-miyako 2.0.0 → 2.0.5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +106 -154
- data/defines.h +144 -0
- data/{miyako_no_katana/extconf.rb → extconf.rb} +10 -0
- data/extern.h +29 -0
- data/install_miyako.rb +26 -14
- data/lib/Miyako/API/audio.rb +2 -2
- data/lib/Miyako/API/basic_data.rb +183 -41
- data/lib/Miyako/API/bitmap.rb +474 -2
- data/lib/Miyako/API/choices.rb +215 -48
- data/lib/Miyako/API/collision.rb +267 -251
- data/lib/Miyako/API/diagram.rb +58 -70
- data/lib/Miyako/API/drawing.rb +93 -52
- data/lib/Miyako/API/fixedmap.rb +233 -120
- data/lib/Miyako/API/font.rb +59 -40
- data/lib/Miyako/API/input.rb +34 -27
- data/lib/Miyako/API/layout.rb +154 -172
- data/lib/Miyako/API/map.rb +285 -159
- data/lib/Miyako/API/map_event.rb +4 -4
- data/lib/Miyako/API/modules.rb +1 -1
- data/lib/Miyako/API/movie.rb +8 -5
- data/lib/Miyako/API/parts.rb +44 -9
- data/lib/Miyako/API/plane.rb +37 -2
- data/lib/Miyako/API/screen.rb +90 -22
- data/lib/Miyako/API/shape.rb +118 -37
- data/lib/Miyako/API/sprite.rb +475 -61
- data/lib/Miyako/API/sprite_animation.rb +83 -63
- data/lib/Miyako/API/spriteunit.rb +47 -13
- data/lib/Miyako/API/story.rb +123 -47
- data/lib/Miyako/API/textbox.rb +361 -132
- data/lib/Miyako/API/utility.rb +388 -0
- data/lib/Miyako/API/viewport.rb +54 -349
- data/lib/Miyako/API/yuki.rb +570 -353
- data/lib/Miyako/EXT/miyako_cairo.rb +5 -3
- data/lib/Miyako/EXT/slides.rb +22 -1
- data/lib/Miyako/miyako.rb +12 -13
- data/logo/EGSR_logo.png +0 -0
- data/logo/EGSR_logo_bg.png +0 -0
- data/logo/EGSR_logo_fg.png +0 -0
- data/logo/EGSR_title_banner.png +0 -0
- data/logo/EGSR_title_logo.png +0 -0
- data/logo/miyako.png +0 -0
- data/logo/miyako_banner.png +0 -0
- data/logo/space.png +0 -0
- data/miyako_basicdata.c +590 -0
- data/miyako_bitmap.c +1225 -0
- data/miyako_collision.c +403 -0
- data/miyako_drawing.c +187 -0
- data/miyako_font.c +334 -0
- data/miyako_hsv.c +830 -0
- data/miyako_layout.c +191 -0
- data/miyako_no_katana.c +1074 -0
- data/miyako_transform.c +438 -0
- data/miyako_utility.c +288 -0
- data/sample/Animation1/m1ku.rb +10 -31
- data/sample/Animation1/readme.txt +6 -6
- data/sample/Animation2/lex.rb +1 -0
- data/sample/Animation2/readme.txt +6 -6
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +152 -48
- data/sample/Diagram_sample/readme.txt +9 -6
- data/sample/Room3/blue.rb +234 -187
- data/sample/Room3/ending.rb +68 -63
- data/sample/Room3/green.rb +159 -124
- data/sample/Room3/main.rb +50 -32
- data/sample/Room3/main_component.rb +3 -2
- data/sample/Room3/readme.txt +6 -6
- data/sample/Room3/red.rb +161 -134
- data/sample/Room3/room3.rb +1 -0
- data/sample/Room3/title.rb +75 -62
- data/sample/ball_action_sample.rb +204 -0
- data/sample/blit_rop.rb +70 -0
- data/sample/cairo_sample.rb +25 -0
- data/sample/circle_collision_test.rb +66 -0
- data/sample/collision_test.rb +33 -0
- data/sample/collision_test2.rb +108 -0
- data/sample/fixed_map_test/fixed_map_sample.rb +23 -32
- data/sample/fixed_map_test/readme.txt +38 -38
- data/sample/map_test/chara.rb +17 -9
- data/sample/map_test/main_parts.rb +30 -9
- data/sample/map_test/main_scene.rb +57 -41
- data/sample/map_test/map_manager.rb +13 -30
- data/sample/map_test/map_test.rb +2 -2
- data/sample/map_test/oasis.rb +17 -11
- data/sample/map_test/readme.txt +50 -48
- data/sample/map_test/route.rb +46 -33
- data/sample/map_test/town.rb +19 -13
- data/sample/polygon_test.rb +35 -0
- data/sample/rasterscroll.rb +25 -0
- data/sample/takahashi.rb +42 -0
- data/sample/text.png +0 -0
- data/sample/textbox_sample.rb +190 -0
- data/sample/transform.rb +54 -0
- data/sample/utility_test.rb +73 -0
- data/sample/utility_test2.rb +61 -0
- data/sample/utility_test3.rb +64 -0
- data/sample/utility_test4.rb +73 -0
- data/uninstall_miyako.rb +19 -0
- data/win/miyako_no_katana.so +0 -0
- metadata +165 -148
- data/miyako.png +0 -0
- data/miyako_banner.png +0 -0
- data/miyako_no_katana/miyako_no_katana.c +0 -3301
- data/sample/fixed_map_test/map_sample.rb +0 -121
data/lib/Miyako/API/diagram.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
=begin
|
3
3
|
--
|
4
4
|
Miyako v2.0
|
5
|
-
Copyright (C) 2007-
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
6
6
|
|
7
7
|
This library is free software; you can redistribute it and/or
|
8
8
|
modify it under the terms of the GNU Lesser General Public
|
@@ -20,8 +20,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
20
20
|
++
|
21
21
|
=end
|
22
22
|
|
23
|
-
require 'thread'
|
24
|
-
|
25
23
|
module Miyako
|
26
24
|
#==遷移図モジュール群
|
27
25
|
module Diagram
|
@@ -67,12 +65,14 @@ module Miyako
|
|
67
65
|
#===ノードでの入力デバイス処理を実装する
|
68
66
|
#入力デバイス処理が必要ないときは、本メソッドを実装する必要はない
|
69
67
|
#Processor#update_input メソッドが呼ばれたときの処理を実装する
|
70
|
-
|
68
|
+
#_params_:: Processor::update_inputメソッドが呼ばれた時のパラメータ群。オーバーライドするときに省略可能
|
69
|
+
def update_input(*params)
|
71
70
|
end
|
72
71
|
|
73
72
|
#===ノードでの更新処理を実装する
|
74
73
|
#Processor#update メソッドが呼ばれたときの処理を実装する
|
75
|
-
|
74
|
+
#_params_:: Processor::updateメソッドが呼ばれた時のパラメータ群。オーバーライドするときに省略可能
|
75
|
+
def update(*params)
|
76
76
|
end
|
77
77
|
|
78
78
|
#===ノードでの入力デバイス処理の後始末を実装する
|
@@ -188,9 +188,9 @@ module Miyako
|
|
188
188
|
end
|
189
189
|
|
190
190
|
#==遷移図クラス本体
|
191
|
-
#但し、実質的にメソッドを呼び出すのは
|
191
|
+
#但し、実質的にメソッドを呼び出すのはManagerクラスから呼び出す
|
192
192
|
class DiagramBody
|
193
|
-
attr_reader :name #:nodoc:
|
193
|
+
attr_reader :name, :node #:nodoc:
|
194
194
|
TRIGGER_TYPES=[:immediate, :next]
|
195
195
|
|
196
196
|
def initialize(name, body, trigger = nil) #:nodoc:
|
@@ -223,13 +223,13 @@ module Miyako
|
|
223
223
|
@node.resume
|
224
224
|
end
|
225
225
|
|
226
|
-
def update_input #:nodoc:
|
227
|
-
@node.update_input
|
226
|
+
def update_input(*params) #:nodoc:
|
227
|
+
@node.update_input(*params)
|
228
228
|
end
|
229
229
|
|
230
|
-
def update #:nodoc:
|
230
|
+
def update(*params) #:nodoc:
|
231
231
|
if @trigger.update?
|
232
|
-
@node.update
|
232
|
+
@node.update(*params)
|
233
233
|
@trigger.post_update
|
234
234
|
@node.reset_input
|
235
235
|
if @next_trigger
|
@@ -301,6 +301,8 @@ module Miyako
|
|
301
301
|
end
|
302
302
|
|
303
303
|
#===遷移図にノードを追加する
|
304
|
+
#状態遷移図のノードに対応するオブジェクト(NodeBaseモジュールをmixinしたクラス)を登録する
|
305
|
+
#名前が重複している場合は、後に登録したノードが採用される。
|
304
306
|
#_name_:: ノード名。文字列かシンボルを使用
|
305
307
|
#_body_:: ノード本体。DiagramNodeBase モジュールを mixin したクラスのインスタンス
|
306
308
|
#_trigger_:: NodeTriggerBase モジュールを mixin したクラスのインスタンス。デフォルトは NpdeTrogger クラスのインスタンス
|
@@ -312,8 +314,15 @@ module Miyako
|
|
312
314
|
end
|
313
315
|
|
314
316
|
#===ノード間移動のアローを追加する
|
315
|
-
|
316
|
-
#
|
317
|
+
#移動元ノードと移動先ノードの名前を指定し、条件にかなえばノードを移動する矢印を設定する。
|
318
|
+
#Processor#updateメソッドを呼び出した時、移動条件を確認して移動するかどうかを判断する。
|
319
|
+
#デフォルトでは、ノードのfinish?メソッドがtrueのときにto_nameで示したノードへ移動する。
|
320
|
+
#結果がfalse のときは、from_nameで示したノードを継続して使用する(stopメソッドは呼ばれない)。
|
321
|
+
#また、引数が一つのブロックを渡すことができる。
|
322
|
+
#引数には、現在評価中のノード(from_nameで示したノードのインスタンス)が渡される。
|
323
|
+
#評価の結果、true のときは、to_name で示したノードへ移動する。
|
324
|
+
#結果がfalse のときは、from_nameで示したノードを継続して使用する(stopメソッドは呼ばれない)。
|
325
|
+
#同じ移動元のアローが複数登録されているときは、先に登録したノードの移動条件を確認する。
|
317
326
|
#_from_name_:: 移動元ノード名。文字列かシンボルを使用
|
318
327
|
#_to_name_:: 移動先ノード名。文字列かシンボルを使用
|
319
328
|
#_trigger_:: ノード間移動するかどうかを返すブロック。ブロックは引数を一つ取る(from_name で示したノードのインスタンス)
|
@@ -347,14 +356,18 @@ module Miyako
|
|
347
356
|
@ptr = @first
|
348
357
|
end
|
349
358
|
|
350
|
-
def now #:nodoc
|
359
|
+
def now #:nodoc:
|
351
360
|
return @ptr ? @ptr.name : nil
|
352
361
|
end
|
353
362
|
|
354
|
-
def now_node #:nodoc
|
355
|
-
return @ptr
|
363
|
+
def now_node #:nodoc:
|
364
|
+
return @ptr ? @ptr.node : nil
|
356
365
|
end
|
357
366
|
|
367
|
+
def nodes
|
368
|
+
return @name2idx.keys
|
369
|
+
end
|
370
|
+
|
358
371
|
def start #:nodoc:
|
359
372
|
@ptr = @first unless @ptr
|
360
373
|
return unless @ptr
|
@@ -376,13 +389,13 @@ module Miyako
|
|
376
389
|
@ptr.resume if @ptr
|
377
390
|
end
|
378
391
|
|
379
|
-
def update_input #:nodoc:
|
380
|
-
@ptr.update_input if @ptr
|
392
|
+
def update_input(*params) #:nodoc:
|
393
|
+
@ptr.update_input(*params) if @ptr
|
381
394
|
end
|
382
395
|
|
383
|
-
def update #:nodoc:
|
396
|
+
def update(*params) #:nodoc:
|
384
397
|
return unless @ptr
|
385
|
-
@ptr.update
|
398
|
+
@ptr.update(*params)
|
386
399
|
nxt = @ptr.go_next
|
387
400
|
unless @ptr.equal?(nxt)
|
388
401
|
@ptr.stop
|
@@ -411,13 +424,18 @@ module Miyako
|
|
411
424
|
#Processor#render メソッドのみを呼び出せる
|
412
425
|
#インスタンス生成は、Processor#renderer メソッドを呼び出して行う
|
413
426
|
class Renderer
|
427
|
+
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
428
|
+
|
414
429
|
def initialize(obj) #:nodoc:
|
415
430
|
@renderer = obj
|
431
|
+
@visible = true
|
416
432
|
end
|
417
433
|
|
418
434
|
#===レンダリングを行う
|
419
435
|
#Processor#render メソッドを呼び出す
|
436
|
+
#visibleメソッドの値がfalseのときは描画されない。
|
420
437
|
def render
|
438
|
+
return unless @visible
|
421
439
|
@renderer.call
|
422
440
|
end
|
423
441
|
end
|
@@ -427,94 +445,72 @@ module Miyako
|
|
427
445
|
class Processor
|
428
446
|
#遷移図本体。Manager クラスのインスタンス
|
429
447
|
attr_reader :diagram
|
448
|
+
attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
|
430
449
|
|
431
450
|
#===インスタンスを生成する
|
432
451
|
#遷移図形式のインスタンス群を生成する
|
433
452
|
#ブロックを必ず取り(取らないとエラー)、ブロック内では、遷移図の構成を実装する
|
434
453
|
#(Manager#add, Manager#add_arrow の各メソッドを参照)
|
435
|
-
#_sync_:: 同期実行かどうかを示すフラグ。同期実行(明示的にupdateメソッドを呼び出す)のときは true 、非同期実行の場合は false を渡す(デフォルトは false )
|
436
454
|
#返却値:: 生成されたインスタンス
|
437
|
-
def initialize
|
455
|
+
def initialize
|
438
456
|
@loop = self.method(:main_loop)
|
439
457
|
@states = {:execute => false, :pause => false, :type1 => false }
|
440
|
-
@thread = nil
|
441
|
-
@mutex = Mutex.new
|
442
458
|
@diagram = Miyako::Diagram::Manager.new
|
443
|
-
|
459
|
+
@visible = true
|
444
460
|
yield @diagram if block_given?
|
445
461
|
end
|
446
462
|
|
447
|
-
#===同期実行かどうかの問い合わせメソッド
|
448
|
-
#返却値: 同期実行のときはtrue
|
449
|
-
def sync?
|
450
|
-
return @sync
|
451
|
-
end
|
452
|
-
|
453
463
|
#===遷移図形式の処理を開始する
|
454
464
|
def start
|
455
465
|
return if @states[:execute]
|
456
|
-
@
|
466
|
+
@diagram.start
|
457
467
|
@states[:execute] = true
|
458
|
-
unless @sync
|
459
|
-
@mutex.unlock
|
460
|
-
@thread = Thread.new{ @loop.call }
|
461
|
-
end
|
462
468
|
end
|
463
469
|
|
464
470
|
#===実行中の処理を中断させる
|
465
471
|
def stop
|
466
472
|
return unless @states[:execute]
|
467
|
-
@
|
473
|
+
@diagram.stop
|
468
474
|
@states[:execute] = false
|
469
|
-
unless @sync
|
470
|
-
@mutex.unlock
|
471
|
-
@thread.join
|
472
|
-
@thread = nil
|
473
|
-
end
|
474
475
|
end
|
475
476
|
|
476
477
|
#===実行中の処理を停止させる
|
477
478
|
#resume メソッドが呼び出されるまで停止は復帰されない
|
478
479
|
def pause
|
479
480
|
return unless @states[:execute]
|
480
|
-
@mutex.lock unless @sync
|
481
481
|
@states[:pause] = true
|
482
|
-
@mutex.unlock unless @sync
|
483
482
|
end
|
484
483
|
|
485
484
|
#===停止状態から復帰する
|
486
485
|
#このメソッドを呼び出すまで停止状態を保つ
|
487
486
|
def resume
|
488
487
|
return unless @states[:execute]
|
489
|
-
@mutex.lock unless @sync
|
490
488
|
@states[:pause] = false
|
491
|
-
@mutex.unlock unless @sync
|
492
489
|
end
|
493
490
|
|
494
491
|
#===入力デバイスに関わる処理を行う
|
495
|
-
|
496
|
-
|
492
|
+
#現在処理中のノードのupdate_inputメソッドを呼び出す。
|
493
|
+
#_params_:: パラメータ群。省略可能
|
494
|
+
def update_input(*params)
|
497
495
|
return if @states[:pause]
|
498
|
-
@diagram.update_input
|
496
|
+
@diagram.update_input(*params)
|
499
497
|
end
|
500
498
|
|
501
499
|
#===処理の更新を行う
|
502
|
-
|
503
|
-
|
500
|
+
#現在処理中のノードupdateメソッドを呼び出す。
|
501
|
+
#_params_:: パラメータ群。省略可能
|
502
|
+
def update(*params)
|
504
503
|
return if @states[:pause]
|
505
|
-
@diagram.update
|
504
|
+
@diagram.update(*params)
|
506
505
|
@states[:execute] = false if @diagram.finish?
|
507
506
|
end
|
508
507
|
|
509
508
|
#===レンダリング処理を行う
|
510
|
-
|
509
|
+
#現在処理中のノードのrenderメソッドを呼び出す。
|
510
|
+
#visibleメソッドの値がfalseのときは描画されない。
|
511
511
|
def render
|
512
|
-
|
512
|
+
return unless @visible
|
513
513
|
@diagram.render
|
514
|
-
unless @sync
|
515
|
-
@mutex.unlock
|
516
|
-
Thread.pass
|
517
|
-
end
|
518
514
|
end
|
519
515
|
|
520
516
|
#===遷移図形式の処理が終了しているかどうかを取得する
|
@@ -555,18 +551,10 @@ module Miyako
|
|
555
551
|
return @diagram.now_node
|
556
552
|
end
|
557
553
|
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
@mutex.lock
|
563
|
-
@diagram.update
|
564
|
-
@mutex.unlock
|
565
|
-
end
|
566
|
-
Thread.pass
|
567
|
-
@states[:execute] = false if @diagram.finish?
|
568
|
-
end
|
569
|
-
@diagram.stop
|
554
|
+
#===登録しているノード名のリストを取得する
|
555
|
+
#返却値:: ノード名リスト
|
556
|
+
def nodes
|
557
|
+
return @diagram.nodes
|
570
558
|
end
|
571
559
|
end
|
572
560
|
end
|
data/lib/Miyako/API/drawing.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
=begin
|
3
3
|
--
|
4
4
|
Miyako v2.0
|
5
|
-
Copyright (C) 2007-
|
5
|
+
Copyright (C) 2007-2009 Cyross Makoto
|
6
6
|
|
7
7
|
This library is free software; you can redistribute it and/or
|
8
8
|
modify it under the terms of the GNU Lesser General Public
|
@@ -24,87 +24,128 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
24
24
|
module Miyako
|
25
25
|
#==線形描画モジュール
|
26
26
|
module Drawing
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
:anti_aliasing => lambda{|b, l| b.draw_aa_line(*l)}}},
|
31
|
-
:rect => {:normal => {:solid => lambda{|b, l| b.draw_rect(*l)},
|
32
|
-
:anti_aliasing => lambda{|b, l| b.draw_rect(*l)}},
|
33
|
-
:fill => {:solid => lambda{|b, l| b.fill_rect(*l)},
|
34
|
-
:anti_aliasing => lambda{|b, l| b.fill_rect(*l)}}},
|
35
|
-
:circle => {:normal => {:solid => lambda{|b, l| b.draw_circle(*l)},
|
36
|
-
:anti_aliasing => lambda{|b, l| b.draw_aa_circle(*l)}},
|
37
|
-
:fill => {:solid => lambda{|b, l| b.draw_filled_circle(*l)},
|
38
|
-
:anti_aliasing => lambda{|b, l| b.draw_aa_filled_circle(*l)}}},
|
39
|
-
:ellipse => {:normal => {:solid => lambda{|b, l| b.draw_ellipse(*l)},
|
40
|
-
:anti_aliasing => lambda{|b, l| b.draw_aa_ellipse(*l)}},
|
41
|
-
:fill => {:solid => lambda{|b, l| b.draw_filled_ellipse(*l)},
|
42
|
-
:anti_aliasing => lambda{|b, l| b.drawAAFilledEllipse(*l)}}}}
|
43
|
-
|
44
|
-
#===画像全体を指定の色で塗りつぶす
|
45
|
-
#_bitmap_:: 描画対象のビットマップ(Sprite.bitmapやSpriteUnit#bitmapの返り値など)
|
27
|
+
#===画像全体を指定の色で塗りつぶす
|
28
|
+
#引数spriteにto_unitもしくはbitmapメソッドが定義されていない場合は例外が発生する。
|
29
|
+
#_sprite_:: 描画対象のスプライト(to_unitもしくはbitmapメソッドを持つインスタンス)
|
46
30
|
#_color_:: 塗りつぶす色。Color.to_rgbメソッドのパラメータでの指定が可能
|
47
31
|
#返却値:: 自分自身を返す
|
48
|
-
def Drawing.fill(
|
49
|
-
|
32
|
+
def Drawing.fill(sprite, color)
|
33
|
+
color = Color.to_rgb(color)
|
34
|
+
methods = sprite.methods
|
35
|
+
raise MiyakoError,
|
36
|
+
"this method needs sprite have to_method or bitmap method!" if !methods.include?(:to_unit) && !methods.include?(:bitmap)
|
37
|
+
bitmap = methods.include?(:to_unit) ? sprite.to_unit.bitmap : methods.include?(:bitmap) ? sprite.bitmap : sprite
|
38
|
+
bitmap.draw_rect(0,0, bitmap.w, bitmap.h, color, true, color[3]==255 ? nil : color[3])
|
39
|
+
return self
|
40
|
+
end
|
41
|
+
|
42
|
+
#===画像内に点を描画する
|
43
|
+
#引数spriteにto_unitもしくはbitmapメソッドが定義されていない場合は例外が発生する。
|
44
|
+
#_sprite_:: 描画対象のスプライト(to_unitもしくはbitmapメソッドを持つインスタンス)
|
45
|
+
#_rect_:: 描画する矩形。画像の左上を[0,0]とする。4要素の整数の配列かRect構造体を使用
|
46
|
+
#_color_:: 描画色。Color.to_rgbメソッドのパラメータでの指定が可能
|
47
|
+
#_aa_:: アンチエイリアスの指定。trueでオン。デフォルトはfalse
|
48
|
+
#返却値:: 自分自身を返す
|
49
|
+
def Drawing.pset(sprite, point, color)
|
50
|
+
methods = sprite.methods
|
51
|
+
raise MiyakoError,
|
52
|
+
"this method needs sprite have to_method or bitmap method!" if !methods.include?(:to_unit) && !methods.include?(:bitmap)
|
53
|
+
bitmap = sprite.methods.include?(:to_unit) ? sprite.to_unit.bitmap : sprite.bitmap
|
54
|
+
bitmap[point[0], point[1]] = Color.to_rgb(color)
|
50
55
|
return self
|
51
56
|
end
|
52
57
|
|
53
58
|
#===画像内に直線を引く
|
54
|
-
|
59
|
+
#引数spriteにto_unitもしくはbitmapメソッドが定義されていない場合は例外が発生する。
|
60
|
+
#_sprite_:: 描画対象のスプライト(to_unitもしくはbitmapメソッドを持つインスタンス)
|
55
61
|
#_rect_:: 描画する矩形。画像の左上を[0,0]とする。4要素の整数の配列かRect構造体を使用
|
56
62
|
#_color_:: 描画色。Color.to_rgbメソッドのパラメータでの指定が可能
|
57
|
-
#
|
58
|
-
#_aa_:: アンチエイリアスの指定。:solidでオフ、:anti_aliasingでオン
|
63
|
+
#_aa_:: アンチエイリアスの指定。trueでオン。デフォルトはfalse
|
59
64
|
#返却値:: 自分自身を返す
|
60
|
-
def Drawing.line(
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
+
def Drawing.line(sprite, rect, color, aa = false)
|
66
|
+
color = Color.to_rgb(color)
|
67
|
+
methods = sprite.methods
|
68
|
+
raise MiyakoError,
|
69
|
+
"this method needs sprite have to_method or bitmap method!" if !methods.include?(:to_unit) && !methods.include?(:bitmap)
|
70
|
+
bitmap = sprite.methods.include?(:to_unit) ? sprite.to_unit.bitmap : sprite.bitmap
|
71
|
+
bitmap.draw_line(
|
72
|
+
rect[0], rect[1], rect[0]+rect[2]-1, rect[1]+rect[3]-1,
|
73
|
+
color, aa, color[3]==255 ? nil : color[3]
|
74
|
+
)
|
65
75
|
return self
|
66
76
|
end
|
67
77
|
|
68
78
|
#===画像内に矩形を描画する
|
69
|
-
|
79
|
+
#引数spriteにto_unitもしくはbitmapメソッドが定義されていない場合は例外が発生する。
|
80
|
+
#_sprite_:: 描画対象のスプライト(to_unitもしくはbitmapメソッドを持つインスタンス)
|
70
81
|
#_rect_:: 描画する矩形。画像の左上を[0,0]とする。4要素の整数の配列かRect構造体を使用
|
71
82
|
#_color_:: 描画色。Color.to_rgbメソッドのパラメータでの指定が可能
|
72
|
-
#
|
73
|
-
#_aa_:: アンチエイリアスの指定。:solidでオフ、:anti_aliasingでオン
|
83
|
+
#_fill_:: 描画の属性。falseで縁のみ描画、trueで内部も塗りつぶす。デフォルトはfalse
|
74
84
|
#返却値:: 自分自身を返す
|
75
|
-
def Drawing.rect(
|
76
|
-
|
77
|
-
|
78
|
-
|
85
|
+
def Drawing.rect(sprite, rect, color, fill = false)
|
86
|
+
color = Color.to_rgb(color)
|
87
|
+
methods = sprite.methods
|
88
|
+
raise MiyakoError,
|
89
|
+
"this method needs sprite have to_method or bitmap method!" if !methods.include?(:to_unit) && !methods.include?(:bitmap)
|
90
|
+
bitmap = sprite.methods.include?(:to_unit) ? sprite.to_unit.bitmap : sprite.bitmap
|
91
|
+
bitmap.draw_rect(
|
92
|
+
rect[0], rect[1], rect[2]-1, rect[3]-1,
|
93
|
+
color, fill, color[3]==255 ? nil : color[3]
|
94
|
+
)
|
79
95
|
return self
|
80
96
|
end
|
81
97
|
|
82
98
|
#===画像内に円を描画する
|
83
|
-
|
99
|
+
#引数spriteにto_unitもしくはbitmapメソッドが定義されていない場合は例外が発生する。
|
100
|
+
#_sprite_:: 描画対象のスプライト(to_unitもしくはbitmapメソッドを持つインスタンス)
|
84
101
|
#_point_:: 中心の位置。2要素の整数の配列、もしくはPoint構造体を使用可能
|
85
102
|
#_r_:: 円の半径。整数を使用可能。
|
86
103
|
#_color_:: 描画色。Color.to_rgbメソッドのパラメータでの指定が可能
|
87
|
-
#
|
88
|
-
#_aa_::
|
104
|
+
#_fill_:: 描画の属性。falseで縁のみ描画、trueで内部も塗りつぶす。デフォルトはfalse
|
105
|
+
#_aa_:: アンチエイリアスの指定。trueでオン。デフォルトはfalse
|
89
106
|
#返却値:: 自分自身を返す
|
90
|
-
def Drawing.circle(
|
91
|
-
|
92
|
-
|
93
|
-
|
107
|
+
def Drawing.circle(sprite, point, r, color, fill = false, aa = false)
|
108
|
+
color = Color.to_rgb(color)
|
109
|
+
methods = sprite.methods
|
110
|
+
raise MiyakoError,
|
111
|
+
"this method needs sprite have to_method or bitmap method!" if !methods.include?(:to_unit) && !methods.include?(:bitmap)
|
112
|
+
bitmap = sprite.methods.include?(:to_unit) ? sprite.to_unit.bitmap : sprite.bitmap
|
113
|
+
bitmap.draw_circle(*point.to_a[0..1], r, color, fill, aa, color[3]==255 ? nil : color[3])
|
94
114
|
return self
|
95
115
|
end
|
96
116
|
|
97
117
|
#===画像内に楕円を描画する
|
98
|
-
|
99
|
-
#
|
118
|
+
#引数spriteにto_unitもしくはbitmapメソッドが定義されていない場合は例外が発生する。
|
119
|
+
#_sprite_:: 描画対象のスプライト(to_unitもしくはbitmapメソッドを持つインスタンス)
|
120
|
+
#_point_:: 楕円の中心位置。2要素の整数の配列かPoint構造体を使用
|
121
|
+
#_rx_:: x方向半径。1以上の整数
|
122
|
+
#_ry_:: y方向半径。1以上の整数
|
123
|
+
#_color_:: 描画色。Color.to_rgbメソッドのパラメータでの指定が可能
|
124
|
+
#_fill_:: 描画の属性。falseで縁のみ描画、trueで内部も塗りつぶす。デフォルトはfalse
|
125
|
+
#_aa_:: アンチエイリアスの指定。trueでオン。デフォルトはfalse
|
126
|
+
#返却値:: 自分自身を返す
|
127
|
+
def Drawing.ellipse(sprite, point, rx, ry, color, fill = false, aa = false)
|
128
|
+
color = Color.to_rgb(color)
|
129
|
+
methods = sprite.methods
|
130
|
+
raise MiyakoError,
|
131
|
+
"this method needs sprite have to_method or bitmap method!" if !methods.include?(:to_unit) && !methods.include?(:bitmap)
|
132
|
+
bitmap = sprite.methods.include?(:to_unit) ? sprite.to_unit.bitmap : sprite.bitmap
|
133
|
+
bitmap.draw_ellipse(
|
134
|
+
point[0], point[1], rx, ry,
|
135
|
+
color, fill, aa, color[3]==255 ? nil : color[3]
|
136
|
+
)
|
137
|
+
end
|
138
|
+
|
139
|
+
#===画像内に多角形を描画する
|
140
|
+
#多角形を描画するとき、頂点のリストは、[x,y]で示した配列のリスト(配列)を渡す。
|
141
|
+
#引数spriteにto_unitもしくはbitmapメソッドが定義されていない場合は例外が発生する。
|
142
|
+
#_sprite_:: 描画対象のスプライト(to_unitもしくはbitmapメソッドを持つインスタンス)
|
143
|
+
#_points_:: 座標の配列。2要素の整数の配列かPoint構造体を使用
|
100
144
|
#_color_:: 描画色。Color.to_rgbメソッドのパラメータでの指定が可能
|
101
|
-
#
|
102
|
-
#_aa_::
|
145
|
+
#_fill_:: 描画の属性。falseで縁のみ描画、trueで内部も塗りつぶす。デフォルトはfalse
|
146
|
+
#_aa_:: アンチエイリアスの指定。trueでオン。デフォルトはfalse
|
103
147
|
#返却値:: 自分自身を返す
|
104
|
-
def Drawing.
|
105
|
-
raise MiyakoError, "not have Drawing attribute! #{attribute}" unless @@draw_list[:line].has_key?(attribute)
|
106
|
-
raise MiyakoError, "not have Drawing aaa! #{aa}" unless @@draw_list[:line][:attribute].has_key?(aa)
|
107
|
-
@@draw_list[:ellipse][attribute][aa].call(bitmap, rect.to_a << Color.to_rgb(color))
|
148
|
+
def Drawing.polygon(sprite, points, color, fill = false, aa = false)
|
108
149
|
end
|
109
150
|
end
|
110
151
|
end
|