トップ «前の日記(2016/04/14) 最新 次の日記(2016/04/16)» 編集

SikabaneWorksが関係するコンテンツ(主に*band系ローグライク)の開発近況・補足から全く個人的な雑記まで。

[WEB:屍の見える丘公園]| [RSS]

Angband | Badiashimshe | C# | CRAUZEL | D'angband/小説草稿 | D'angband/開発 | DarkSouls | Demon'sSouls | DungeonCrawl | ElvenUteruses | Haskell | Hengband | J9シリーズ | LEGO | LineDrawing | MISC | MTG | Mac | Math | Moria | R-18 | Roguelike | Rough | RoughSketch | Ruby | SDL | UNIX | VMware | WarHammer | Zangband | アタシラヂョウヲウ | イラスト | ガジェット | ゲーム | ゲーム紹介 | ゲーム製作技術 | ゲーム論 | スケッチ | ツクール | テクノロジー | ニコニコ動画 | ファルコム | ファンタジー | マリオ | ヴィーヤウトゥムノ | 別記事追加予定 | 変愚蛮怒 | 変愚蛮怒/スポイラー | 変愚蛮怒/元ネタ探訪 | 変愚蛮怒/攻略 | 変愚蛮怒/開発 | 宗教 | 情報 | 政治 | 文字コード | 日ペ昔話 | 東方 | 東方ワンドロ | 東方外法漢女 | 歴史 | 漫画製作 | 版権絵 | 画像処理 | 翻訳 | 自然言語 | 艦隊これくしょん | 落書き | 言語解析 | 読書 | 超人ロック | 追記予定 | 通信 | 鉄獄旅慕情 | 阿片窟 | 馬鹿馬鹿蛮怒/開発 | 魔法少女まどか☆マギカ | 魚類版深夜の真剣お絵描き60分一本勝負


2016/04/15

[変愚蛮怒/開発]変愚蛮怒中のフォント変更処理に関する備忘1

変愚蛮怒をデバッグトレースして得た処理の流れ

  • Windows標準のメニューバーの定義は、srcフォルダ中のangband.rc(日本語版)及びang_eng.rc(英語版)で行われている。
    • メインウィンドウからサブウィンドウ1~7のフォント変更処理のIDは210~217。これらはmain-win.c中でもdefineされている。
  • メニューバーのハンドラ処理は、AngbandWndProcが受け取り、uMsgがIDM_WINDOW_FONT_[0-7]ならば、term_change_font()に処理を回す。
    • term_change_font()中でWindows標準ダイアログのChooseFontを開きterm_change_font()のローカル変数であるCHOOSEFONT cf;に変更フォント情報を収める。
    • ChooseFontがtrueを返したならばさらに以下の処理を行う。
      • 各ウィンドウの情報を収めたterm_data構造体をterm_force_font()関数に渡して、フォントファイルからCreateFontIndirect()でフォント情報を読み込み直す。その際フォントの標準的な縦横サイズを受け取って、term_data構造体のfont_wid,font_hgtに収める。
      • tile_wid, tile_hgtに先程収めたfont_wid,font_hgtを代入。
      • term_getsize()とterm_window_resize()を通じて、現在のコンソールの行、列の数を維持したまま、フォントサイズの変更に伴ってウィンドウサイズをリサイズする。

1

英語版*bandからの変更

  • 英語版*bandは基本的にttfに対応せず、fon形式のみ用いている(変愚蛮怒のプリプロセッサ分岐でグレーアウトさせられている箇所、及びほぼ最新のAngband4.0.4でも現状を確認)
    • フォントファイルの指定方法も、ChooseFont()でなくGetOpenFileName()を使っている。
    • Angband4.0.4はフォントサイズ変更に伴う、1マスあたりのサイズ変更や、ウィンドウサイズの変更は未実装である。

0