ruby-miyako 2.1.19.0 → 2.1.20

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog.txt CHANGED
@@ -1712,3 +1712,32 @@ v2.1.19(2010.10.08)
1712
1712
  <インスタンスメソッド廃止>
1713
1713
  <ドキュメント>
1714
1714
  <その他>
1715
+
1716
+ v2.1.20(2010.12.20)
1717
+ <バグ修正>
1718
+ ・Windows上で、実行ディレクトリ(もしくはそのサブディレクトリ上)に日本語のファイル名があるとエラーが出たり、プログラムが正常に動作しない問題を修正
1719
+ <機能改善>
1720
+ <仕様変更>
1721
+ ・MacOSX上のシステムフォントパスのうち、日本語で使用しているディレクトリを削除
1722
+ ・システムフォントを梅明朝・梅ゴシックに制限
1723
+ <ファイル追加>
1724
+ <ファイル削除>
1725
+ <グローバル変数追加>
1726
+ <定数追加>
1727
+ <定数削除>
1728
+ <構造体追加>
1729
+ <クラス追加>
1730
+ <モジュール追加>
1731
+ <mixin>
1732
+ <クラス・モジュールメソッド追加>
1733
+ ・Screen.enable_render
1734
+ ・Screen.disnable_render
1735
+ ・Screen.render_attr
1736
+ ・Screen.render_attr=
1737
+ <クラス・モジュールメソッド廃止>
1738
+ <モジュール関数追加>
1739
+ <モジュール関数廃止>
1740
+ <インスタンスメソッド追加>
1741
+ <インスタンスメソッド廃止>
1742
+ <ドキュメント>
1743
+ <その他>
data/README CHANGED
@@ -1,8 +1,8 @@
1
1
  *******************************************************************************
2
2
  【 作者名 】 サイロス誠
3
3
  【 ソフト名 】 Interactive Media Authoring System "Miyako"
4
- 【 バージョン 】 2.1.19
5
- 【 作成日 】 2010/10/18
4
+ 【 バージョン 】 2.1.20
5
+ 【 作成日 】 2010/12/20
6
6
  【 種別 】 フリーウェア
7
7
  【 開発言語 】 Ruby 1.9.1
8
8
  【 ランタイム 】 Ruby 1.9.1~,Ruby/SDL 2.1~,SDL
@@ -15,7 +15,7 @@
15
15
 
16
16
  【 注意事項 】
17
17
 
18
- 本バージョンは、2.1.19公式リリース版です。
18
+ 本バージョンは、2.1.20公式リリース版です。
19
19
  本バージョンでは、ドキュメント・リファレンスは不十分ですが、「サイログ。」内や、サンプルプログラムの紹介等で随時ドキュメントを公開して行きます。
20
20
  (RDOC化を進めていますので、我こそはと思う方は是非・・・)
21
21
 
@@ -90,7 +90,7 @@ PAD : BUFFALO BGC-FC802
90
90
  Logicool G-UF13
91
91
  OS : Microsoft WindowsXp SP3
92
92
  Microsoft WindowsVista Ultimate(x64) SP1
93
- DEV : Notepad++ v5.3.1-6
93
+ DEV : xyzzy
94
94
  mingw32版Ruby 1.9.2-p0 + Ruby/SDL 2.1.1
95
95
  MinGW+MSYS(miyako_no_katanaビルド)
96
96
 
@@ -100,8 +100,8 @@ CPU : Core i5
100
100
  MEM : 4GB(2GBx2)
101
101
  PAD : SANWA SUPPLY JY-P1W
102
102
  OS : Microsoft Windows7 x64
103
- DEV : Notepad++ v5.3.1-6
104
- mswin32版Ruby 1.9.2-p0 + Ruby/SDL 2.1.1
103
+ DEV : xyzzy
104
+ mingw32版Ruby 1.9.2-p0 + Ruby/SDL 2.1.1
105
105
 
106
106
  【 動作確認環境 】
107
107
 
@@ -150,8 +150,13 @@ Windowsでは、以下のサイトにあるActiveRubyのインストールをお
150
150
  「COM Meets Ruby」
151
151
  http://arton.hp.infoseek.co.jp/indexj.html
152
152
 
153
+ 注)ActiveRubyをお使いの方は、Ruby1.9.1をご使用ください。
154
+ Ruby1.9.2では使用しているコンパイラに変更があった為、バイナリ版が動作しません!
155
+
153
156
  また、Windows用には、後述の「Ruby、SDL、Ruby/SDLパック」というものがあり、これをインストールすると、別途Ruby/SDLをインストールすることなく、RubyとRuby/SDLを利用することが出来ます(但し、Windowsの詳しい操作に慣れていない方には難しい作業が必要になる可能性があります。また、ベースとなっているRuby/SDLがv1.2ですので、MP3ファイルの再生はサポートされておりません)。
154
157
 
158
+ 他にも、拙作の「MiyakoPack」があり、これですと、Ruby1.9.2、Ruby/SDL、Miyako他、様々なライブラリが同梱されております。
159
+
155
160
  2.SDLのインストール
156
161
 
157
162
  Linuxでインストールされる場合は、まずSDLをインストールする必要があります。
@@ -1,4 +1,4 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
  =begin
3
3
  --
4
4
  Miyako v2.1
@@ -20,13 +20,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
20
  ++
21
21
  =end
22
22
 
23
- # フォント関連クラス(群)
24
23
  module Miyako
25
-
26
- =begin rdoc
27
- ==フォント管理クラス
28
- フォントは、等幅フォント奨励(プロポーショナルフォントを選ぶと、文字が正しく描画されない可能性あり)
29
- =end
30
24
  class Font
31
25
  include SpriteBase
32
26
  include Animation
@@ -51,41 +45,26 @@ module Miyako
51
45
  spec = searcher.find("miyako")
52
46
  gpath = spec.full_gem_path if spec
53
47
  if spec && gpath =~ /ruby\-miyako/
54
- gpath = gpath + "/lib/Miyako/fonts"
48
+ gpath = File.join(gpath,"lib","Miyako","fonts")
55
49
  base_pathes << gpath if File.exist?(gpath)
56
50
  end
57
51
 
58
52
  # check font directory in library(site_ruby) directory
59
- lpath = $LOAD_PATH.find{|path| File.exist?(path+"/Miyako/fonts") }
60
- base_pathes << (lpath+"/Miyako/fonts") if lpath
53
+ lpath = $LOAD_PATH.find{|path| File.exist?(File.join(path,"Miyako","fonts")) }
54
+ base_pathes << File.join(lpath,"Miyako","fonts") if lpath
61
55
 
62
56
  @@font_base_path = Hash.new
63
- @@font_base_path["win"] = base_pathes + (ENV['SystemRoot'] ? ["./", ENV['SystemRoot'].tr("\\", "/") + "/fonts/"] : ["./"])
57
+ @@font_base_path["win"] = base_pathes + (ENV['SystemRoot'] ? ["./", File.join(ENV['SystemRoot'], "fonts")] : ["./"])
64
58
  @@font_base_path["linux"] = base_pathes + ["./", "/usr/share/fonts/", "/usr/X11R6/lib/X11/fonts/"]
65
59
  @@font_base_path["mac_osx"] = base_pathes + ["./",
66
- "~/Library/Fonts/", "/Library/Fonts/", "/System/Library/Fonts/",
67
- "/ライブラリ/Fonts/", "/システム/ライブラリ/Fonts/"]
60
+ "~/Library/Fonts/", "/Library/Fonts/", "/System/Library/Fonts/"]
68
61
 
69
62
  @@font_base_name = Hash.new
70
- @@font_base_name["win"] = [{:serif=>"ume-tms3.ttf", :sans_serif=>"umeplus-gothic.ttf"},
71
- {:serif=>"msmincho.ttc", :sans_serif=>"msgothic.ttc"},
72
- {:serif=>"VL-Gothic-Regular.ttf", :sans_serif=>"VL-Gothic-Regular.ttf"},
73
- {:serif=>"msmincho.ttc", :sans_serif=>"meiryo.ttc"}]
74
- @@font_base_name["linux"] = [{:serif=>"ume-tms3.ttf", :sans_serif=>"umeplus-gothic.ttf"},
75
- {:serif=>"sazanami-mincho.ttf", :sans_serif=>"sazanami-gothic.ttf"},
76
- {:serif=>"VL-Gothic-Regular.ttf", :sans_serif=>"VL-Gothic-Regular.ttf"}]
77
- @@font_base_name["mac_osx"] = [{:serif=>"ume-tms3.ttf", :sans_serif=>"umeplus-gothic.ttf"},
78
- {:serif=>"Hiragino Mincho Pro W3.otf", :sans_serif=>"Hiragino Kaku Gothic Pro W3.otf"},
79
- {:serif=>"Hiragino Mincho Pro W6.otf", :sans_serif=>"Hiragino Kaku Gothic Pro W6.otf"},
80
- {:serif=>"ヒラギノ明朝 Pro W3.otf", :sans_serif=>"ヒラギノ角ゴ Pro W3.otf"},
81
- {:serif=>"ヒラキ゛ノ明朝 Pro W3.otf", :sans_serif=>"ヒラキ゛ノ角コ゛ Pro W3.otf"},
82
- {:serif=>"ヒラギノ明朝 Pro W6.otf", :sans_serif=>"ヒラギノ角ゴ Pro W6.otf"},
83
- {:serif=>"ヒラキ゛ノ明朝 Pro W6.otf", :sans_serif=>"ヒラキ゛ノ角コ゛ Pro W6.otf"},
84
- {:serif=>"VL-Gothic-Regular.ttf", :sans_serif=>"VL-Gothic-Regular.ttf"}]
63
+ @@font_base_name["win"] = [{:serif=>"ume-tms3.ttf", :sans_serif=>"umeplus-gothic.ttf"}]
64
+ @@font_base_name["linux"] = [{:serif=>"ume-tms3.ttf", :sans_serif=>"umeplus-gothic.ttf"}]
65
+ @@font_base_name["mac_osx"] = [{:serif=>"ume-tms3.ttf", :sans_serif=>"umeplus-gothic.ttf"}]
85
66
  @@initialized = false
86
67
 
87
- #===フォント関連の初期化処理
88
- #既に初期化済みの時はMiyakoErrorが発生する
89
68
  def Font.init
90
69
  raise MiyakoError, "Already initialized!" if @@initialized
91
70
  SDL::TTF.init
@@ -93,17 +72,21 @@ module Miyako
93
72
  @@initialized = true
94
73
  end
95
74
 
96
- #===フォント周辺の初期化がされた?
97
75
  def Font.initialized?
98
76
  @@initialized
99
77
  end
100
78
 
101
79
  def Font.search_font_path_file(hash, path) #:nodoc:
102
- Dir.glob(path+"*"){|d|
103
- hash = Font.search_font_path_file(hash, d+"/") if test(?d, d)
104
- d = d.encode(Encoding::UTF_8) if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため
105
- d = d.tr("\\", "\/")
106
- hash[$1] = d if (d =~ /\/([^\/\.]+\.tt[fc])\z/ || d =~ /\/([^\/\.]+\.otf)\z/) # MacOSX対応
80
+ Dir.glob(File.join(path,"*")){|d|
81
+ hash = Font.search_font_path_file(hash, d) if test(?d, d)
82
+ if Miyako.getOSName == "win" and RUBY_VERSION >= '1.9.0' and RUBY_VERSION < '1.9.2'
83
+ d.force_encoding(Encoding::WINDOWS_31J)
84
+ end
85
+ d = d.encode(Encoding::UTF_8)
86
+ fname = File.split(d)[1]
87
+ # puts fname
88
+ # puts fname.encoding
89
+ hash[fname] = d if (fname =~ /\.tt[fc]\z/ || fname =~ /\.otf\z/) # for MacOSX
107
90
  }
108
91
  return hash
109
92
  end
@@ -111,22 +94,22 @@ module Miyako
111
94
  def Font.create_font_path #:nodoc:
112
95
  osn = Miyako::getOSName
113
96
  @@font_base_path[osn].each{|path|
114
- path = path.encode(Encoding::UTF_8) if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため
115
- path = path.tr("\\", "\/")
116
97
  @@name_2_font_path = Font.search_font_path_file(@@name_2_font_path, path)
117
98
  }
118
99
  end
119
100
 
120
101
  def Font.findFontPath(fname) #:nodoc:
121
- fname = fname.encode(Encoding::UTF_8) if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため
102
+ fname = fname.encode(Encoding::UTF_8)
122
103
  return @@name_2_font_path.fetch(fname, nil)
123
104
  end
124
105
 
125
106
  def Font.get_font_inner(fname, fpath, size=16) #:nodoc:
126
- if Miyako.getOSName == "mac_osx" # MacOSXはパス名がUTF-8固定のため
127
- fname = fname.encode(Encoding::UTF_8)
128
- fpath = fpath.encode(Encoding::UTF_8)
107
+ if Miyako.getOSName == "win" and RUBY_VERSION >= '1.9.0' and RUBY_VERSION < '1.9.2'
108
+ fname.force_encoding(Encoding::WINDOWS_31J)
109
+ fpath.force_encoding(Encoding::WINDOWS_31J)
129
110
  end
111
+ fname = fname.encode(Encoding::UTF_8)
112
+ fpath = fpath.encode(Encoding::UTF_8)
130
113
  @@font_cache[fname] ||= {}
131
114
  @@font_cache[fname][size] ||= SDL::TTF.open(fpath, size)
132
115
  return @@font_cache[fname][size]
@@ -141,15 +124,6 @@ module Miyako
141
124
 
142
125
  private :init_height
143
126
 
144
- #===インスタンス生成
145
- #指定したフォントファイル名から、フォントインスタンスを生成する。
146
- #フォントファイルのパスは、Miyako2.0起動時にファイルパス(カレントディレクトリとシステムのフォントディレクトリ)を
147
- #再帰的に検索し、先に見つけた方を採用する(同一ファイル名がカレントディレクトリとシステムのディレクトリに両方
148
- #存在するときは、カレントディレクトリを優先する)
149
- #そのため、フォントファイル名は、パスを指定する必要がない(逆に言うと、パスを指定すると例外が発生する)。
150
- #_fname_:: フォントファイル名(フォントファミリー名不可)。パス指定不可
151
- #_size_:: フォントの大きさ。単位はピクセル。デフォルトは 16
152
- #返却値:: 生成されたインスタンスを返す
153
127
  def initialize(fname, size=16)
154
128
  init_layout
155
129
  @size = size
@@ -177,30 +151,22 @@ module Miyako
177
151
  @size = @size.dup
178
152
  @color = @color.dup
179
153
  @fname = @fname.dup
154
+ @fpath = @fpath.dup
180
155
  @shadow_color = @shadow_color.dup
181
156
  @shadow_margin = @shadow_margin.dup
182
157
  @unit = @unit.dup
183
158
  @text = @text.dup
184
159
  end
185
160
 
186
- #===描画可能・不可状態を返す
187
- #描画可能の時はtrue、不可能なときはfalseを返す
188
- #返却値:: true/falseを返す
189
161
  def visible
190
162
  return @visible
191
163
  end
192
164
 
193
- #===描画可能・不可状態を設定する
194
- #描画可能の時はtrue、不可能なときはfalseを渡す
195
- #返却値:: 自分自身を返す
196
165
  def visible=(v)
197
166
  @visible = v
198
167
  return self
199
168
  end
200
169
 
201
- #===描画する文字列を変更する
202
- #_str_:: 描画する文字列。文字列以外でも、to_sメソッドで文字列、endocdeメソッドでUTF-8に変換する
203
- #返却値:: 自分自身を返す
204
170
  def text=(str)
205
171
  @text = str.to_s
206
172
  @text = @text.encode(Encoding::UTF_8)
@@ -208,9 +174,6 @@ module Miyako
208
174
  return self
209
175
  end
210
176
 
211
- #===フォントの大きさを変更する
212
- #_sz_:: 変更するフォントの大きさ(単位:ピクセル)
213
- #返却値:: 変更されたフォントのインスタンス
214
177
  def size=(sz)
215
178
  @size = sz
216
179
  @font = Font.get_font_inner(@fname, @fpath, @size)
@@ -222,9 +185,6 @@ module Miyako
222
185
  return self
223
186
  end
224
187
 
225
- #===ブロック評価中のみ、フォントの大きさを変更する
226
- #_sz_:: 変更するフォントの大きさ(単位:ピクセル)
227
- #返却値:: 自分自身を返す
228
188
  def size_during(sz)
229
189
  raise MiyakoError, "not given block!" unless block_given?
230
190
  tsize = @size
@@ -234,9 +194,6 @@ module Miyako
234
194
  return self
235
195
  end
236
196
 
237
- #===ブロック評価中のみ、フォントの文字の色を変更する
238
- #_color_:: 変更する色([r,g,b]の3要素の配列(値:0~255))
239
- #返却値:: 自分自身を返す
240
197
  def color_during(color)
241
198
  raise MiyakoError, "not given block!" unless block_given?
242
199
  tcolor, self.color = @color, color
@@ -245,11 +202,6 @@ module Miyako
245
202
  return self
246
203
  end
247
204
 
248
- #===ブロック評価中のみ、影文字文字の色・マージンを変更する
249
- #また、ブロック評価中は影文字が強制的に有効になる
250
- #_color_:: 変更する色([r,g,b]の3要素の配列(値:0~255))、デフォルトはFont#shadow_colorメソッドの値([128,128,128])
251
- #_margin_:: 変更する色(2要素の整数の配列、デフォルトはFont#shadow_marginメソッドの値([2,2])
252
- #返却値:: 自分自身を返す
253
205
  def shadow_during(color = @shadow_color, margin = @shadow_margin)
254
206
  raise MiyakoError, "not given block!" unless block_given?
255
207
  tflag, @use_shadow = @use_shadow, true
@@ -262,30 +214,20 @@ module Miyako
262
214
  return self
263
215
  end
264
216
 
265
- #===指定したピクセル数のフォントが十分(欠けることなく)収まるピクセル数を取得する
266
- #_size_:: フォントの大きさ(単位:ピクセル)
267
- #返却値:: 算出されたピクセル数
268
217
  def get_fit_size(size)
269
218
  path = Font.findFontPath(@fname)
270
219
  font = SDL::TTF.open(path, size)
271
220
  return (size.to_f * (size.to_f / font.line_skip.to_f)).to_i
272
221
  end
273
222
 
274
- #===フォントサイズ(yやjなどの下にはみ出る箇所も算出)を取得する
275
- #返却値:: 算出されたフォントサイズ
276
223
  def line_height
277
224
  return @line_skip + @vspace + (@use_shadow ? @shadow_margin[1] : 0)
278
225
  end
279
226
 
280
- #===フォントインスタンスを解放する
281
227
  def dispose
282
228
  @font = nil
283
229
  end
284
230
 
285
- #===フォントの属性をbold(太文字)に設定する
286
- #ブロックを渡したときは、ブロック評価中のみ太字になる
287
- #文字が領域外にはみ出る場合があるので注意!
288
- #返却値:: 自分自身
289
231
  def bold
290
232
  if block_given?
291
233
  tbold, self.bold = self.bold?, true
@@ -297,14 +239,10 @@ module Miyako
297
239
  return self
298
240
  end
299
241
 
300
- #===フォントのbold属性の有無を返す
301
- #返却値:: bold属性かどうか(true/false)
302
242
  def bold?
303
243
  return @bold
304
244
  end
305
245
 
306
- #===フォントのbold属性を設定する
307
- #_f_:: bold属性かどうか(true/false)
308
246
  def bold=(f)
309
247
  @bold = f
310
248
  @font.style |= SDL::TTF::STYLE_BOLD
@@ -312,10 +250,6 @@ module Miyako
312
250
  return self
313
251
  end
314
252
 
315
- #===フォントの属性をitalic(斜め)に設定する
316
- #ブロックを渡したときは、ブロック評価中のみ斜体文字になる
317
- #文字が領域外にはみ出る場合があるので注意!
318
- #返却値:: 自分自身
319
253
  def italic
320
254
  if block_given?
321
255
  titalic, self.italic = self.italic?, true
@@ -327,14 +261,10 @@ module Miyako
327
261
  return self
328
262
  end
329
263
 
330
- #===フォントのitalic属性の有無を返す
331
- #返却値:: italic属性かどうか(true/false)
332
264
  def italic?
333
265
  return @italic
334
266
  end
335
267
 
336
- #===フォントのitalic属性を設定する
337
- #_f_:: italic属性かどうか(true/false)
338
268
  def italic=(f)
339
269
  @italic = f
340
270
  @font.style |= SDL::TTF::STYLE_ITALIC
@@ -342,9 +272,6 @@ module Miyako
342
272
  return self
343
273
  end
344
274
 
345
- #===フォントの属性をunder_line(下線)に設定する
346
- #ブロックを渡したときは、ブロック評価中のみ下線付き文字になる
347
- #返却値:: 自分自身
348
275
  def under_line
349
276
  if block_given?
350
277
  tunder_line, self.under_line = self.under_line?, true
@@ -356,14 +283,10 @@ module Miyako
356
283
  return self
357
284
  end
358
285
 
359
- #===フォントのunder_line属性の有無を返す
360
- #返却値:: under_line属性かどうか(true/false)
361
286
  def under_line?
362
287
  return @under_line
363
288
  end
364
289
 
365
- #===フォントのunder_line属性を設定する
366
- #_f_:: under_line属性かどうか(true/false)
367
290
  def under_line=(f)
368
291
  @under_line = f
369
292
  @font.style |= SDL::TTF::STYLE_UNDERLINE
@@ -371,19 +294,11 @@ module Miyako
371
294
  return self
372
295
  end
373
296
 
374
- #===フォントの属性をすべてクリアする
375
- #_f_:: 自分自身
376
297
  def normal
377
298
  @font.style = 0
378
299
  return self
379
300
  end
380
301
 
381
- #===文字列を描画する
382
- #対象のスプライトに文字列を描画する
383
- #_dst_:: 描画先スプライト
384
- #_str_:: 描画する文字列
385
- #_x_:: 描画位置x軸
386
- #_y_:: 描画位置Y軸
387
302
  def draw_text(dst, str, x, y)
388
303
  str = str.encode(Encoding::UTF_8)
389
304
  str.chars{|c|
@@ -408,79 +323,48 @@ module Miyako
408
323
  return x
409
324
  end
410
325
 
411
- #===文字列を画面に描画する
412
- #返却値:: 自分自身を返す
413
326
  def render
414
327
  return self unless @visible
415
328
  draw_text(Screen, @text, @layout[:pos][0], @layout[:pos][1])
416
329
  return self
417
330
  end
418
331
 
419
- #===文字列をスプライトに描画する
420
- #_dst_:: 描画先スプライト
421
- #返却値:: 自分自身を返す
422
332
  def render_to(dst)
423
333
  return self unless @visible
424
334
  draw_text(dst, @text, @layout[:pos][0], @layout[:pos][1])
425
335
  return self
426
336
  end
427
337
 
428
- #===文字列を画面の指定の位置に描画する
429
- #_x_:: x方向位置
430
- #_y_:: y方向位置
431
- #返却値:: 自分自身を返す
432
338
  def render_xy(x, y)
433
339
  return self unless @visible
434
340
  draw_text(Screen, @text, x, y)
435
341
  return self
436
342
  end
437
343
 
438
- #===文字列をスプライトの指定の位置に描画する
439
- #_dst_:: 描画先スプライト
440
- #_x_:: x方向位置
441
- #_y_:: y方向位置
442
- #返却値:: 自分自身を返す
443
344
  def render_xy_to(dst, x, y)
444
345
  return self unless @visible
445
346
  draw_text(dst, @text, x, y)
446
347
  return self
447
348
  end
448
349
 
449
- #===文字列を画面に描画する
450
- #引数textは、内部でto_sメソッドを呼び出して文字列化している
451
- #_text_:: 描画対象の文字列
452
- #返却値:: 自分自身を返す
453
350
  def render_str(text)
454
351
  return self unless @visible
455
352
  draw_text(Screen, text.to_s, @layout[:pos][0], @layout[:pos][1])
456
353
  return self
457
354
  end
458
355
 
459
- #===文字列をスプライトに描画する
460
- #引数textは、内部でto_sメソッドを呼び出して文字列化している
461
- #_dst_:: 描画先スプライト
462
- #_text_:: 描画対象の文字列
463
- #返却値:: 自分自身を返す
464
356
  def render_str_to(dst, text)
465
357
  return self unless @visible
466
358
  draw_text(dst, text.to_s, @layout[:pos][0], @layout[:pos][1])
467
359
  return self
468
360
  end
469
361
 
470
- #===文字列描画したときの大きさを取得する
471
- #現在のフォントの設定で指定の文字列を描画したとき、予想される描画サイズを返す。実際に描画は行われない。
472
- #_txt_:: 算出したい文字列
473
- #返却値:: 文字列を描画したときの大きさ([w,h]の配列)
474
362
  def chr_size_inner(char)
475
363
  return (char.bytesize == 1 ? @size >> 1 : @size) + (@use_shadow ? @shadow_margin[0] : 0) + @hspace
476
364
  end
477
365
 
478
366
  private :chr_size_inner
479
367
 
480
- #===文字列描画したときの大きさを取得する
481
- #現在のフォントの設定で指定の文字列を描画したとき、予想される描画サイズを返す。実際に描画は行われない。
482
- #_txt_:: 算出したい文字列
483
- #返却値:: 文字列を描画したときの大きさ([w,h]の配列)
484
368
  def text_size(txt)
485
369
  width = txt.chars.inject(0){|r, c|
486
370
  r += (c.bytesize == 1 ? @size >> 1 : @size) } +
@@ -488,16 +372,6 @@ module Miyako
488
372
  return [width, self.line_height]
489
373
  end
490
374
 
491
- #===指定した高さで描画する際のマージンを求める
492
- #現在のフォントの設定で指定の文字列を描画したとき、予想される描画サイズを返す。実際に描画は行われない。
493
- #第1引数に渡す"align"は、以下の3種類のシンボルのどれかを渡す
494
- #:top:: 上側に描画(マージンはゼロ)
495
- #:middle:: 中間に描画
496
- #:bottom:: 下部に描画
497
- #
498
- #_align_:: 描画位置
499
- #_height_:: 描画する高さ
500
- #返却値:: マージンの値
501
375
  def margin_height(align, height)
502
376
  case align
503
377
  when :top
@@ -511,19 +385,11 @@ module Miyako
511
385
  raise MiyakoError, "Illegal margin_height align! : #{align}"
512
386
  end
513
387
 
514
- #===Serifフォント(明朝フォント)を取得する
515
- #マルチプラットフォームのソフトを作る際、OS間の差異を吸収するため、
516
- #共通の名称でフォントインスタンスを取得するときに使う(主に明朝フォント)
517
- #返却値:: OSごとに設定されたフォントイン寸タンス(フォントサイズは16)
518
388
  def Font::serif
519
389
  filename = @@font_base_name[Miyako::getOSName].detect{|base| Font.findFontPath(base[:serif]) }[:serif]
520
390
  return Font.new(filename)
521
391
  end
522
392
 
523
- #===Sans Serifフォント(ゴシックフォント)を取得する
524
- #マルチプラットフォームのソフトを作る際、OS間の差異を吸収するため、
525
- #共通の名称でフォントインスタンスを取得するときに使う(主にゴシックフォント)
526
- #返却値:: OSごとに設定されたフォントイン寸タンス(フォントサイズは16)
527
393
  def Font::sans_serif
528
394
  filename = @@font_base_name[Miyako::getOSName].
529
395
  detect{|base|
@@ -1,4 +1,4 @@
1
- # -*- encoding: utf-8 -*-
1
+ # -*- encoding: utf-8 -*-
2
2
  =begin
3
3
  --
4
4
  Miyako v2.1
@@ -62,6 +62,7 @@ module Miyako
62
62
  @@in_the_scene = false
63
63
  @@screen = nil
64
64
  @@viewport = nil
65
+ @render_attr = true
65
66
 
66
67
  @@pre_render_array = SpriteList.new
67
68
  @@auto_render_array = SpriteList.new
@@ -169,7 +170,7 @@ module Miyako
169
170
  end
170
171
 
171
172
  #===画面の左上位置を取得する
172
- #位置は必ず[0,0]を返す
173
+ #位置は必ず[0,0]を返す
173
174
  #返却値:: Size構造体
174
175
  def Screen::pos
175
176
  return @@pos.dup
@@ -344,5 +345,21 @@ module Miyako
344
345
  #返却値:: 自分自身を返す
345
346
  def Screen::render_screen(src)
346
347
  end
348
+
349
+ def Screen::render_attr
350
+ @render_attr
351
+ end
352
+
353
+ def Screen::render_attr=(value)
354
+ @render_attr = value ? true : false
355
+ end
356
+
357
+ def Screen::enable_render
358
+ @render_attr = true
359
+ end
360
+
361
+ def Screen::disable_render
362
+ @render_attr = false
363
+ end
347
364
  end
348
365
  end
data/lib/Miyako/miyako.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  #=コンテンツ作成ライブラリMiyako2.1
4
4
  #
5
5
  #Authors:: サイロス誠
6
- #Version:: 2.1.19
6
+ #Version:: 2.1.20
7
7
  #Copyright:: 2007-2010 Cyross Makoto
8
8
  #License:: LGPL2.1
9
9
  #
@@ -63,7 +63,7 @@ Thread.abort_on_exception = true
63
63
 
64
64
  #==Miyako基幹モジュール
65
65
  module Miyako
66
- VERSION = "2.1.19"
66
+ VERSION = "2.1.20"
67
67
 
68
68
  #===アプリケーション実行中に演奏する音楽のサンプリングレートを指定する
69
69
  #単位はHz(周波数)
data/miyako_no_katana.c CHANGED
@@ -712,6 +712,9 @@ void _miyako_screen_pre_render()
712
712
  */
713
713
  static VALUE screen_render(VALUE self)
714
714
  {
715
+ VALUE flag = rb_iv_get(mScreen, "@render_attr");
716
+ if(flag == Qfalse){ return Qnil; }
717
+
715
718
  VALUE dst = rb_iv_get(mScreen, "@@unit");
716
719
  SDL_Surface *pdst = GetSurface(*(RSTRUCT_PTR(dst)))->surface;
717
720
  VALUE fps_view = rb_iv_get(mScreen, "@@fpsView");
Binary file
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-miyako
3
3
  version: !ruby/object:Gem::Version
4
- hash: 43
4
+ hash: 35
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 1
9
- - 19
10
- - 0
11
- version: 2.1.19.0
9
+ - 20
10
+ version: 2.1.20
12
11
  platform: ruby
13
12
  authors:
14
13
  - Cyross Makoto
@@ -16,7 +15,7 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2010-11-07 00:00:00 +09:00
18
+ date: 2010-12-20 00:00:00 +09:00
20
19
  default_executable:
21
20
  dependencies: []
22
21