+---------------------------------------------------------- | | mod_picmes.as | | Ver 7.0 | | (※注意※) | | ・複数のフォント画像に対応できるように、Ver 7.0からファイル名が下記のように変わりました。 | ・"mod_picmes.png" → "picmes_0.png" に変わりました。 | ・"mod_picmes.ini" → "picmes_0.ini" に変わりました。 | | ・事前に「hsp3dish.as」をインクルードしてください。 | ・使用するフォントを変更する場合は、同梱の「mod_picmes-Editor」のVer 3.0以降で出力されたものを使用してください。 | | +---------------------------------------------------------- | | HSP3Dish (スマートフォン(Android/iOS)/WindowsOS) 用 | | 画像文字(英字/数字/記号/カタカナ/ひらがな/漢字)を表示するモジュール | | By. しまくろねこ | +---------------------------------------------------------- (0). Ver 6.6以前をご使用の方へ Ver 7.0からpngファイルとiniファイルのファイル名が変わりました。 しかしファイルの中身は変わっていませんので、ファイル名を mod_pismes.png → picmes_0.png mod_picmes.ini → picmes_0.ini に変更してもらえれば引き続き使用できます。 (1). 当モジュールの概要 スマートフォン(HSP3Dish)/WindowsOS上で画像ファイルで用意されている文字(英字/数字/記号/カタカナ/ひらがな/漢字)を表示します。 HSP3Dishβ5以降では標準のmes命令から日本語表示が出来るようになりましたので、当モジュールは必要ないかもしれませんが、 HSP3Dish上でのmes命令による日本語表示は速度面で遅いため、それよりは若干早い当モジュールはそういう意味では使い道があるかもしれません。 (2). 当モジュールのしくみ 文字が画像として格納されている "picmes_" + フォントID + ".png" を仮想画面(buffer)に読み込ませて、その画像内から表示させたい文字を切り出して表示します。 (3). HSPソース上で利用できる文字について ・JIS X 0213(JIS2000)の情報を元にしております。 ・第1水準、第2水準の漢字を表示可能です。 ・カタカナはHSPソース内で半角を指定してもAndroid上では自動的に全角になります。(Windows上はそのまま半角になります) ・改行文字「\n」を表示文字列に加えると、その位置から1行下に改行します。 ・picmes命令で表示後は、カレント位置(pos命令)がpicmes命令で最後に表示された行の下になります。 (4). "picmes_" + フォントID + ".png"について "picmes_" + フォントID + ".png" の画像ファイル内に、利用する文字が描画されています。 画像内に使われているフォントは、デフォルトで「MS ゴシック」が使われています。 他のフォントを利用して"picmes_" + フォントID + ".png" を作成したい場合は、「mod_picmes-Editor」を使用してください。 複数のフォント使用する場合は、一番最初のフォントIDは「0」にして連番にしてください。 「mod_picmes-Editor」は、当zipファイル内にある「tool\mod_picmes-Editor.exe」になります。 また、このツールから文字画像に使用する文字を限定して指定することも可能です。 HSP3Dish Helperにて、Android実機で動作可能なAPK(AAB)ファイルをビルドする際には、"picmes_" + フォントID + ".png" をDPMファイルに含ませてください。 もしくはプロジェクトフォルダの [assets] フォルダにファイルをコピーしてください。 (!!)DPMファイルに含ませてAndroid実機でプログラムが落ちてしまう場合は、[assets] フォルダに入れてください。 (5). "picmes_" + フォントID + ".ini" について "picmes_" + フォントID + ".png" を利用するにあたり必要なファイルとなります。 複数のフォント使用する場合は、一番最初のフォントIDは「0」にして連番にしてください。 HSP3Dish Helperにて、Android実機で動作可能なAPK(AAB)ファイルをビルドする際には、"picmes_" + フォントID + ".ini" をDPMファイルに含ませてください。 もしくはプロジェクトフォルダの [assets] フォルダにファイルをコピーしてください。 (!!)DPMファイルに含ませてAndroid実機でプログラムが落ちてしまう場合は、[assets] フォルダに入れてください。 (6). 当モジュール(mod_picmes.as)のファイル配置フォルダ 現在作成しているソースが保存されているフォルダに "mod_picmes.as" をコピーしてください。  もしくは HSP3の[common]フォルダに "mod_picmes.as" をコピーしてください。 (7). 当モジュールで使用している画像文字ファイル("picmes_" + フォントID + ".png")のファイル配置フォルダ 現在作成しているソースが保存されているフォルダに "picmes_" + フォントID + ".png" をコピーしてください。 (8). 当モジュールで使用している画像文字ファイル情報("picmes_" + フォントID + ".ini")のファイル配置フォルダ 現在作成しているソースが保存されているフォルダに "picmes_" + フォントID + ".ini" をコピーしてください。 (9). 当モジュールのHSP3上での使用準備 まず最初に、#includeで "mod_picmes.as" を必ず呼び出します。 次に、当モジュールで使用するフォントの最大数を指定するため、プログラムの先頭などで "picmes_fontmax" 命令を一度呼び出してください。 次に、当モジュールを初期化するために、プログラムの先頭などで "picmes_init" 命令を使用するフォントの数だけ呼び出してください。 これで当モジュールを使用する準備が整いました。 (10). 文字の色を変更する場合 表示する文字の色を変更する場合には、「gmulcolor」命令を使用してください。 (11). あらかじめ「mod_picmes-Editor」で複数の文字画像を用意して、使用するフォントを変更する場合 picmes_font命令を使用してください。 (12). 命令/関数 ■命令 ============================================= ■picmes_fontmax p1 ・概要 当モジュールのフォントPNGファイルを使用するフォントの最大数を指定します。 必ず一番最初に呼び出してください。 ・引数 p1 (int) : 使用する最大フォントIDの数。("picmes_0.png" 1つだけの場合、[1]と指定してください) 省略すると[1]が指定されます。 ■picmes_init p1, p2 ・概要 当モジュールの初期化処理を行ないます。 必ず picmes_fontmax 命令の次に呼び出してください。 ・引数 p1 (int) : 画像文字ファイル(mod_picmes.png)を読み込むウィンドウID。省略可能。 省略された、もしくは[0]を指定された場合は、空いているウィンドウIDに読み込まれます。 またその場合、戻り値としてシステム変数(stat)にウィンドウIDが返ります。 (※buffer命令で指定のウィンドウID(仮想画面)を用意しておく必要はありません) p2 (int) : 初期化するフォントID 省略すると[0]が指定されます。 ・戻り値 システム変数(stat)に読み込まれたウィンドウIDが返ります。 ・使用例 picmes_init 5, 0 re_buff = stat picmes "ウィンドウID=" + re_buff + "に読み込みました。" ■picmes_font p1 ・概要 picmes命令, picmes_mode命令, picmes_info関数 の対象となるフォントIDを指定します。 ・引数 p1 (int) : 対象とするフォントID ■picmes "p1", p2 ・概要 画像文字を表示。表示座標はHSP標準命令の「pos」を使用してください。 表示する文字列変数内に、"\n"(改行文字)を含めると、"\n"の位置にて表示位置を改行します。 事前に picmes_font 命令で表示する対象のフォントIDを指定することができます。 ・引数 "p1" (str) : 表示する文字。または変数 p2 (int) : 最後に改行する/しない(0 = 改行する, 1 = しない) ・戻り値 なし ・使用例 picmes_fontmax 1 picmes_init 0, 0 picmes_font 0 picmes "こんにちわ。\n今日も天気が良いですね。" ・注意 ※ Ver1.2までは、引数のp1,p2にて表示する座標を指定しましたが、Ver1.3からは表示座標はHSP標準命令の「pos」にて指定されたカレントポジションが 表示座標となります。 ※ 「picmes」命令内部で「gmode 3」が使用されていますので、「picmes」処理終了後に画面コピーモードを変更する必要がある場合 は、HSP標準命令の「gmode」で画面コピーモードを変更してください。 ■picmes_mode p1, p2, p3, p4, p5, p6 ・概要 picmes命令で文字を表示するときのオプションを指定します。 事前に picmes_font 命令で設定する対象のフォントIDを指定することができます。 ・引数 p1 (double) : 表示する文字の横ドット数(ズーム)。省略時は、"picmes_" + フォントID + ".ini"で定義されている大きさになります。実数での値も可能です。 p2 (double) : 表示する文字の縦ドット数(ズーム)。省略時は、"picmes_" + フォントID + ".ini"で定義されている大きさになります。実数での値も可能です。 p3 (int) : 半透明のブレンド率(0 = (透明) 〜 255 = (不透明))。省略時は255になります。 p4 (int) : 文字と文字の横の間隔(ピクセル)。省略時は(0ピクセル) p5 (int) : 文字と文字の縦の間隔(ピクセル)。省略時は(0ピクセル) p6 (int) : 表示する文字の角度(360度指定)。値が大きいほど右回転となります。1文字1文字が回転します。 ・戻り値 なし ・使用例 picmes_fontmax 1 picmes_init 0, 0 picmes_font 0 picmes_mode 12, 10, 100 picmes "こんにちわ。\n今日も天気が良いですね。" ■関数 ============================================= ■picmes_info(p1) ・概要 画像文字に関する情報を取得します。 事前に picmes_font 命令で取得する対象のフォントIDを指定することができます。 ・引数 p1(int) : 取得する情報 0 = 画像文字ファイル "picmes_" + フォントID + ".png" を読み込んだウィンドウID 1 = 画像文字ファイル "picmes_" + フォントID + ".png" 自体の横サイズ。("picmes_" + フォントID + ".ini" の1バイト目から5バイト目の整数値が返ります) 2 = 画像文字ファイル "picmes_" + フォントID + ".png" 自体の縦サイズ。("picmes_" + フォントID + ".ini" の6バイト目から10バイト目の整数値が返ります) 3 = 画像文字ファイル1文字の横サイズ。("picmes_" + フォントID + ".ini" の11バイト目から13バイト目の実数値が返ります) 4 = 画像文字ファイル1文字の縦サイズ。("picmes_" + フォントID + ".ini" の14バイト目から16バイト目の実数値が返ります); 10 = 最後に表示された文字の1文字右横のX座標 11 = 最後に表示された文字のY座標 ・戻り値 引数にセットした取得する情報の値が返ります。 ・使用例 picmes_init 5 picmes "画像文字ファイルのウィンドウID=" + picmes_info(0) picmes "画像文字ファイルの横サイズ =" + picmes_info(1) picmes "画像文字ファイルの縦サイズ =" + picmes_info(2) picmes "画像文字の1文字の横サイズ =" + picmes_info(3) picmes "画像文字の1文字の縦サイズ =" + picmes_info(4) picmes "最後に表示された文字の1文字右横のX座標=" + picmes_info(10) picmes "最後に表示された文字のY座標 =" + picmes_info(11) (結果・・・) "画像文字ファイルのウィンドウID=5" "画像文字ファイルの横サイズ =1400" "画像文字ファイルの縦サイズ =936" "画像文字の1文字の横サイズ =14.000000" "画像文字の1文字の縦サイズ =12.000000" "最後に表示された文字の1文字右横のX座標=196" "最後に表示された文字のY座標 =60" (13). 実際の使用方法(例) #include "mod_picmes.as" picmes_fontmax 1 picmes_init 0, 0 picmes_font 0 redraw 0 pos 0, 0 picmes "ABC" redraw 1 stop (14). "picmes_0.png"内のデフォルトでセットされている画像文字について フォント名 : MS ゴシック フォントサイズ : 9ポイント = (横)14ドット x (縦)14ドット (※文字の外周にアウトラインを描画しているので、横縦ともに+2ドットされています) (15). 配布等について 当モジュールはフリー(商用可)です。 使う人がいるか不明ですが、もし使われる場合は配布用ReadMe等に当モジュールを使用している旨を記載する必要はありません。 もし使われる際は、メール(simakuroneko@gmail.com)もしくは、 掲示板(http://simakuroneko.bbs.fc2.com/)に使用するとだけ一言書いてもらえると作者が喜びます。 再配布もOKですが、その場合事後で結構ですのでE-Mail( simakuroneko@gmail.com )までご連絡ください。 また、書籍等に掲載する場合も自由に掲載していただいてOKです。 その場合も事後で結構ですのでE-Mail( simakuroneko@gmail.com )までご連絡頂けると嬉しいです。 (16). 動作確認OS ・Windows 11 ・Windows 10 ・Windows 8.1 ・Windows VISTA ・Windows XP ・Android(HSP3Dishを利用) (17). 履歴 2022/09/26 (Ver7.0) ・複数のフォントに対応するため、picmes_fontmax命令、picmes_font命令を追加。 ・複数のフォントに対応するため、picmes_init命令にパラメータp2を追加。 ・複数のフォントに対応するため、『mod_picmes.png』、『mod_picmes.ini』のファイル名を『picmes_ + フォントID + .png』、『picmes_ + フォントID + .ini』に変更。 ・コードを少し簡略化する。 2022/03/10 (Ver6.6) ・色々と修正。 2022/02/21 (Ver6.2) ・picmes_modeのp5とp6を入れ替える。 ・Ver6.1でデフォルトで文字が表示できない不具合を修正。 2022/02/16 (Ver6.1) ・picmes_modeのp3の半透明のブレンド率(0 = (不透明), 1 = (透明) 〜 255 = (不透明)) を 半透明のブレンド率(0 = (透明) 〜 255 = (不透明))に変更 2020/07/11 (Ver6.0) ・『mod_picmesj.ini』『mod_picmesu.ini』を『mod_picmes.ini』に統合。 2020/07/09 (Ver5.9) ・全体の文字間のX表示位置が1ドットずれていたのを修正。 ・デフォルトのフォントを「MS ゴシック」に変更。 2020/07/08 (Ver5.8) ・HSP3.6β3のmes命令に合わせて、picmes命令に改行する/しないのパラメータP2を追加。 2020/07/05 (Ver5.7) ・表示倍率を実数で表示した場合、picmes_info(3)の情報がずれる不具合を修正。 ・表示倍率を実数で表示した場合、picmes_info(11)の情報がずれる不具合を修正。 ・pos命令を使用しないでpicmes命令を連続して使用された場合、描画開始X座標を揃えるように修正。 2020/07/04 (Ver5.5) ・表示倍率を実数で表示した場合、表示位置がずれる不具合を修正。 2020/07/03 (Ver5.4) ・表示倍率を1以外で半角全角同時表示した場合に半角文字がずれる不具合を修正。 2020/07/02 (Ver5.3) ・プロポーショナルフォントにも対応。(1文字の横サイズ情報を記録した "mod_picmesj.ini", "mod_picmesu.ini" ファイルを追加) 2019/09/18 (Ver5.2) ・picmes_modeにP6を追加。(文字と文字の縦の間隔) 2019/07/14 (Ver5.12) ・picmesmを削除 2018/10/28 (Ver5.11) ・Windows, Android, iOS以外のOSでも(多分)動くように追加。 2017/12/15 (Ver5.1) : 少しでも処理速度を稼ぐために必要がなかった行をコメントアウト。 サンプルソースに文字の色を変更する「gmulcolor」命令を追加する。 2017/11/02 (Ver5.0) : 文字の拡大時に隣の文字が少し欠けたものが表示されてしまう仕様を改善。 そのため文字画像のPNGファイルが少し大きくなる。 2016/05/05 (Ver4.1) : 63区点以降の文字がWindows上では文字化けして正しく表示されていなかったため修正。 2016/01/05 (Ver4.0) : ソース内で大量の文字コードを定義していたが、設定ファイル『mod_picmes.ini』内の情報をバイナリ化したことにより初期化処理を高速化。 また、ソース内を大幅サイズダウンしたことにより、DishHelper上からのビルド時間が大幅に短縮される。 読み込みモードを廃止。 Ver3.45以前の設定ファイル『mod_picmes.ini』は構成が異なるため、引き続き使用する場合はVer4.0以降の設定ファイルに置き換える必要がある。 2014/12/11 (Ver3.45): DPMファイルに『mod_picmes.png』,『mod_picmes.ini』を含めてビルドするとAndroid実機で「picmes_init」使用時にファイルが存在しないことになってしまい落ちてしまう現象があるため、ファイルが存在しない場合メッセージを表示してプログラムを終了するように修正。 2014/11/03 (Ver3.44): Ver3.42で起きていた、「HSP3.4β5以降で『mod_picmes.as』がビルド不可」の要因を極力減らし、デフォルトで『mod_picmes.ini』の読み込みモードを【Location(None)】でビルドできるようにした。 ビルド時間もVer3.43と同じくらいになり、またAndroid上でも「picmes_init」使用時にVer3.42と同じくらいの速さになるように修正。 2014/11/03 (Ver3.43): picmes_mode命令の引数[p1, p2](表示する大きさ)に実数を指定できるように修正。 それに伴い、picmes_info関数での(3)もしくは(4)で返ってくる値を実数にして返すように修正。 2014/06/29 (Ver3.421):HSP3.4β5で『mod_picmes.as』がビルド不可になる原因が、『mod_picmes.as』内で大量の行数で配列変数に文字コードをソース内でセットしている箇所があるが、これが原因でDishHelperにてビルド時にエラーとなってしまう。 そのため、ソース内で大量の行数を使用して配列変数に文字コードをセットする処理を削除し、デフォルトで『mod_picmes.ini』の読み込みモードを【Location(celput)】で読み込むようにしたが、「picmes_init」使用時に読み込み時間が長くなるデメリットがある。 逆にメリットはDishHelperにてビルド時にビルド終了時間が大幅に早くなる。 とりあえずHSP3.4β5では【Location(None)】は使用不可。 2013/10/25 (Ver3.42): 各命令、関数の引数(パラメーター)を省略するとスマートフォン実機で強制終了してしまう現象を出ないようにする。 『ReadMe.txt』からpicmes_strmid関数, picmes_strlen関数, picmes_strrep関数を削除。 (機能自体は残しましたが『mod_dstr.as』を利用してください。) 2013/08/24 (Ver3.41): mod_picmes.iniの1行目に情報が抜けて、文字が表示されない不具合を修正。 2013/08/17 (Ver3.4) : picmes_info(10)の値がずれている不具合を修正。 2013/08/14 (Ver3.3) : 『mod_picmes-Editor.exe』で作成されたiniファイルの【Location(celput)】の情報を読み込んで使用できるようにする。 2013/08/09 (Ver3.2) : picmes_info関数に取得できる情報を追加。(1文字の横縦サイズを取得する場合、引数の値を横/縦「0/1」から「3/4」に変更) picmes_strmid関数を少し最適化。 2013/08/05 (Ver3.1) : スマートフォン実機上で一部の文字が別の文字に表示されてしまう不具合を修正。 2013/08/04 (Ver3.0) : mod_picmes.asの仕様変更によりソースを一から書き直す。 英字/数字/記号/カタカナ/ひらがな/漢字(JIS X 0213(JIS2000))第1水準、第2水準を表示可能。 picmes命令にて、引数[p2]以降を削除。代わりに新たに追加したpicmes_mode命令に引数を移行させる。 引数で表示するドット数にマイナス値をセットしても上下左右に文字を反転する機能を一時凍結。(ソースを書き直したのでそのうち機能を使えるようにします) 起動に必要なファイルとして「mod_picmes.ini」を追加。 picmes_mode, picmes_strrep命令, picmes_info関数を追加。 好きなフォントを選んで画像文字ファイルを作成するためのアプリケーションツール(mod_picmes-Editor.exe)を追加。 2013/07/15 (Ver2.1) : picmes命令, picmes_strlen関数, picmes_strmid関数の第1引数("p1")に、変数だけでなく文字列を直接指定できるように修正。 2013/06/11 (Ver2.0) : HSP3.4β2以降が動作対象。 「mod_picmes.as」内部でhsp3dish専用の「getreq」命令により、内部でWindows/Android/iOSごとに処理を切り分けるようにする。 そのためVer2.0からは完全にhsp3dish用のモジュールとなる。 2013/06/11 (Ver1.95): HSP3.4β1以降が動作対象。 picmes命令で改行文字の「\n」を使用すると、改行後のX軸が「0」になってしまう不具合を修正。 2013/05/11 (Ver1.9) : picmes命令に文字を回転させると左上を基準に回転しているのを、中央位置(一字ごと)で回転するように修正。 文字表示に「cel」系の命令から「grotate」に置き換える。 文字画像ファイル「mod_picmes.png」をVer1.7に置き換え。 2013/05/06 (Ver1.81): 表示する文字の種類を大きい(16ドット)にして、拡大するとpos命令の位置からずれてしまう不具合を修正。 2013/05/05 (Ver1.8) : picmes命令に文字を回転させるための引数[p8]を追加。 文字を表示するのに内部で「gcopy」や「gzoom」を使用していたが、文字を回転させるために「cel」系の命令に置き換える。 そのため「celput」に対応させるため、文字画像ファイル「mod_picmes.png」を修正。 2013/05/01 (Ver1.7) : picmes命令の引数[p3,p4]にマイナス値を指定すると上下左右に文字を反転できるように修正。 2013/04/03 (Ver1.6) : 「ダ」の、UTF8のキャラクターコードを間違っていたため「ダ」だけが表示できなかった不具合を修正。 2013/04/01 (Ver1.5) : picmes_init命令にて、画像文字ファイル(mod_picmes.png)を読み込むウィンドウIDを指定した場合は、 あらかじめbuffer命令にて仮想画面を用意しておく必要がないように修正。 2013/03/21 (Ver1.4) : picmes_strlen, picmes_strmid関数を追加。 picmes命令で表示する文字列変数内に"\n"(改行文字)が含まれている場合、その位置から文字を改行して表示するように機能を追加。 2013/03/05 (Ver1.3) : picmes命令の引数の数が多すぎるため、表示位置の引数[p1,p2]を削除。表示位置の指定は標準の「pos」命令にて指定するように変更。 また、引数[p7]の濁点/半濁点の表示(Ver1.2 : 0=別に表示/1=重ねて表示)の値を逆にする。(Ver1.3 : 0=重ねて表示/1=別に表示) 2013/03/04 (Ver1.2) : picmes命令に引数[p9]を追加。(濁点/半濁点を別もしくは重ねて表示させるかを選択可能) そのため重ねて表示する用の濁点/半濁点を画像に追加。 2013/02/24 (Ver1.1) : 英字/数字/記号/カタカナ/ひらがなを表示可能。 表示する文字の種類を7ドットから8ドット、14ドットから16ドットに変更。 2013/02/16 (Ver1.0) : 初版。英字/数字/記号/カタカナを表示可能。 (18). 作者情報 ハンドルネーム : しまくろねこ Webページ : https://sites.google.com/site/simakuroneko/ E-Mail : simakuroneko@gmail.com 掲示板(BBS) : http://simakuroneko.bbs.fc2.com/