ruby-miyako 2.1.19.0 → 2.1.20
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/ChangeLog.txt +29 -0
- data/README +11 -6
- data/lib/Miyako/API/font.rb +26 -160
- data/lib/Miyako/API/screen.rb +19 -2
- data/lib/Miyako/miyako.rb +2 -2
- data/miyako_no_katana.c +3 -0
- data/win/miyako_no_katana.so +0 -0
- metadata +4 -5
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.
|
5
|
-
【 作成日 】 2010/
|
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.
|
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 :
|
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 :
|
104
|
-
|
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をインストールする必要があります。
|
data/lib/Miyako/API/font.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
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
|
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
|
60
|
-
base_pathes << (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']
|
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
|
-
|
72
|
-
|
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
|
103
|
-
hash = Font.search_font_path_file(hash, d
|
104
|
-
|
105
|
-
|
106
|
-
|
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)
|
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 == "
|
127
|
-
fname
|
128
|
-
fpath
|
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|
|
data/lib/Miyako/API/screen.rb
CHANGED
@@ -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.
|
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.
|
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");
|
data/win/miyako_no_katana.so
CHANGED
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:
|
4
|
+
hash: 35
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
|
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-
|
18
|
+
date: 2010-12-20 00:00:00 +09:00
|
20
19
|
default_executable:
|
21
20
|
dependencies: []
|
22
21
|
|