--- nono/wx/wxtextpanel.h 2026/04/29 17:04:37 1.1.1.2 +++ nono/wx/wxtextpanel.h 2026/04/29 17:04:39 1.1.1.3 @@ -16,7 +16,7 @@ // ↓ // WXTextPanel テキストフォントを管理するクラス // ↓ -// WXTextScreen テキストフォントを使ったテキストスクリーン +// WXTextScreen テキストスクリーンを表示するパネル // class WXTextPanel : public wxPanel @@ -24,23 +24,35 @@ class WXTextPanel : public wxPanel using inherited = wxPanel; public: WXTextPanel(wxWindow *parent); - virtual ~WXTextPanel(); + virtual ~WXTextPanel() override; - // フォントサイズ(指定値) + // フォント種別(指定値) // この値を元に各コントロールに指示を出す - static fontsize_t global_fontsize; + static FontId global_fontid; + + // フォントサイズ変更 (派生クラスで用意する) + virtual void SetFontSize(FontId) = 0; + + // (外部から)フォントサイズを取得。 + // このクラス内および継承クラス内からなら簡便のため、これを呼ばずに + // 直接 font_width, font_height を使ってよい。 + const wxSize& GetFontSize() const { return fontsize; } protected: // このコントロールの現在のフォントサイズ - // (一瞬の過渡期以外は基本的に global_fontsize と同じ値のはず) - fontsize_t fontsize = FONT_NONE; + // (一瞬の過渡期以外は基本的に global_fontid と同じ値のはず) + FontId fontid = FontId::None; // フォントの幅と高さ(ピクセル) - int font_width = 0; - int font_height = 0; + // wxSize.{x, y} はマニュアルには載ってなくて、ヘッダにも + // 直接使うな (互換性のために public にしてある) と書いてあるけど、 + // 参照出来て便利なので使っちゃえ。 + wxSize fontsize {}; + int& font_width = fontsize.x; + int& font_height = fontsize.y; // フォント関連の内部情報を更新する - void UpdateFont(fontsize_t fontsize); + void UpdateFont(FontId fontid); // グリフを切り替える。 // 0x5c は false: 円記号 true: バックスラッシュ @@ -82,8 +94,8 @@ class WXTextPanel : public wxPanel // 漢字ビットマップを生成 wxBitmap *KanjiBitmap(uint16, uint attr); - static void AllocFont(fontsize_t fontsize); - static void FreeFont(fontsize_t fontsize); + static void AllocFont(FontId fontid); + static void FreeFont(FontId fontid); // 現在のフォントでのフォントデータ wxBitmap **ascii_glyph = NULL; @@ -96,9 +108,9 @@ class WXTextPanel : public wxPanel static std::mutex global_font_mutex; // 以下の3つを書き換える時は global_font_mutex を取ること - static u_int font_refcnt[FONT_MAX]; - static wxBitmap *ascii_glyph_table[FONT_MAX][0x83]; - static wxBitmap *bold_glyph_table[FONT_MAX][0x83]; + static u_int font_refcnt[FontId::Max]; + static wxBitmap *ascii_glyph_table[FontId::Max][0x83]; + static wxBitmap *bold_glyph_table[FontId::Max][0x83]; // 色 wxColour text_fgcolor; // 前景色