--- nono/wx/wxsoftkey.h 2026/04/29 17:05:07 1.1.1.10 +++ nono/wx/wxsoftkey.h 2026/04/29 17:05:08 1.1.1.11 @@ -4,9 +4,12 @@ // Licensed under nono-license.txt // +// +// ソフトウェアキーボード +// + #pragma once -#include "wxbitmapbuf.h" #include "wxsubwindow.h" #include "wxtextpanel.h" #include "keyboard.h" @@ -50,13 +53,13 @@ class WXSoftKeyPanel : public WXTextPane protected: // 色の集合(パレット) struct ColorPalette { - wxColour Background; // 背景というかガワの部分の色 - wxColour Text; // 文字色 - wxColour Keytop[2][10]; // キートップ色。 - // [2]=0:通常色、1:(あれば)濃色 - // [10]=押され具合。0は押されていないとき - wxColour Border; // LED 点灯時の枠の色 - wxColour LED[2]; // LED。色は各機種定義 (今のところ0:赤 1:緑) + Color Background; // 背景というかガワの部分の色 + Color Text; // 文字色 + Color Keytop[2][10]; // キートップ色。 + // [2]=0:通常色、1:(あれば)濃色 + // [10]=押され具合。0は押されていないとき + Color Border; // LED 点灯時の枠の色 + Color LED[2]; // LED。色は各機種定義 (今のところ0:赤 1:緑) }; // 修飾キーの状態 @@ -72,20 +75,20 @@ class WXSoftKeyPanel : public WXTextPane virtual ~WXSoftKeyPanel() override; // フォントサイズ変更 - void SetFontSize(FontId fontid) override; + void FontChanged() override; protected: + void UpdateTitle(); + void InitColorKeytop(int num); - void DoSize(); - void OnPaint(wxPaintEvent& event); void OnKeyChanged(wxCommandEvent& event); void OnTimer(wxTimerEvent& event); - void Draw(wxDC& dc); - void DrawKey(wxDC& dc, const keydata_t& key); - void DrawEnterKey(wxDC& dc); - void DrawEnterMark(wxDC& dc, const wxPoint& basep); - virtual int DrawLED(wxDC& dc, const keydata_t& key) = 0; + void Draw() override; + void DrawKey(const keydata_t& key); + void DrawEnterKey(); + void DrawEnterMark(int x, int y); + virtual int DrawLED(const keydata_t& key) = 0; const keydata_t& FindKeydata(uint) const; void OnLeftDown(wxMouseEvent& event); @@ -116,12 +119,15 @@ class WXSoftKeyPanel : public WXTextPane int u_width {}; int u_height {}; - // コントロール全域のビットマップ - WXBitmapBuf bitmap {}; + // 初期タイトル + wxString title {}; + + // キーボードの接続状態 + bool connected {}; - // エンター記号の周囲の点集合 - std::vector enter_points {}; - wxRegion enter_region {}; + // エンターキーの矩形 + Rect enter_top {}; + Rect enter_btm {}; // 色 ColorPalette color {}; @@ -159,7 +165,7 @@ class WXLunaSoftKeyPanel : public WXSoft virtual ~WXLunaSoftKeyPanel() override; private: - int DrawLED(wxDC& dc, const keydata_t& key) override; + int DrawLED(const keydata_t& key) override; // キー描画データ static std::vector keydata; @@ -174,7 +180,7 @@ class WXX68kSoftKeyPanel : public WXSoft virtual ~WXX68kSoftKeyPanel() override; private: - int DrawLED(wxDC& dc, const keydata_t& key) override; + int DrawLED(const keydata_t& key) override; // キー描画データ static std::vector keydata;