--- nono/wx/wxtextpanel.h 2026/04/29 17:04:37 1.1.1.2 +++ nono/wx/wxtextpanel.h 2026/04/29 17:04:43 1.1.1.4 @@ -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,26 +94,26 @@ 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; - wxBitmap **bold_glyph = NULL; + wxBitmap **ascii_glyph {}; + wxBitmap **bold_glyph {}; // 現在のグリフ - bool glyph_5c = false; - bool glyph_7c = false; - bool glyph_7e = false; + bool glyph_5c {}; + bool glyph_7c {}; + bool glyph_7e {}; 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; // 前景色 - wxColour text_bgcolor; // 背景色 - wxColour text_disable_color; // Disable 属性時の前景色 + wxColour text_fgcolor {}; // 前景色 + wxColour text_bgcolor {}; // 背景色 + wxColour text_disable_color {}; // Disable 属性時の前景色 };