|
|
1.1 root 1: //
2: // nono
1.1.1.2 root 3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
1.1 root 5: //
6:
7: //
1.1.1.7 ! root 8: // テキストスクリーンを描画するパネル
1.1 root 9: //
1.1.1.7 ! root 10:
1.1 root 11: // wxPanel
12: // ↓
1.1.1.7 ! root 13: // WXTextPanel テキストフォントを描画するクラス
1.1 root 14: // ↓
1.1.1.3 root 15: // WXTextScreen テキストスクリーンを表示するパネル
1.1.1.7 ! root 16:
! 17: #pragma once
! 18:
! 19: #include "wxtextpanel.h"
! 20: #include "monitor.h"
! 21:
1.1 root 22: class WXTextScreen : public WXTextPanel
23: {
1.1.1.2 root 24: using inherited = WXTextPanel;
1.1 root 25:
1.1.1.7 ! root 26: // テキストスクリーンは本来単純なキャラクタビットマップ構造のため、
! 27: // クライアント領域の端の1ピクセルまでふんだんに使用している。
! 28: // ウィンドウマネージャ側でこのウィンドウに枠などをつけてくれる場合は
! 29: // あまり問題にならないが、枠などを一切つけないタイプのウィンドウ
! 30: // マネージャでこのウィンドウを表示するとウィンドウの縁に接する文字の
! 31: // 視認性が(文字とウィンドウ外の背景の組み合わせによっては)すこぶる
! 32: // 悪くなる。そのため、テキストスクリーンの周囲に余白をもたせる。
! 33: static const int DefaultPadding = 3;
! 34:
1.1 root 35: public:
1.1.1.6 root 36: WXTextScreen(wxWindow *parent, Monitor& monitor);
1.1.1.3 root 37: virtual ~WXTextScreen() override;
1.1 root 38:
1.1.1.6 root 39: // 画面を更新して再描画する。
40: void DoRefresh();
1.1 root 41:
42: // フォントサイズ変更
1.1.1.7 ! root 43: void FontChanged() override;
1.1.1.3 root 44:
45: // 更新頻度設定
46: void SetRate(int hz);
47:
1.1.1.7 ! root 48: // パディングサイズ変更
! 49: void SetPadding(int l, int t, int r, int b);
! 50: // パディングサイズ取得
! 51: int GetPaddingLeft() const { return pad_left; }
! 52: int GetPaddingTop() const { return pad_top; }
! 53: int GetPaddingRight() const { return pad_right; }
! 54: int GetPaddingBottom() const { return pad_bottom; }
! 55:
1.1.1.6 root 56: // 桁数、行数を取得する
57: int GetCol() const { return ts.GetCol(); }
58: int GetRow() const { return ts.GetRow(); }
1.1.1.3 root 59:
1.1.1.7 ! root 60: // クライアント座標 pos をテキスト座標(桁、行)に変換して返す
! 61: // (パディング領域では戻り値が負数になることに注意)
! 62: wxPoint GetTextPosition(const wxPoint& pos) const;
! 63:
1.1.1.3 root 64: // TextScreen のユーザデータ取得、設定
65: uint64 GetUserData() const { return ts.userdata; }
66: void SetUserData(uint64 value) { ts.userdata = value; }
1.1 root 67:
1.1.1.7 ! root 68: // コンテキストメニューイベントを解除
! 69: // (ここのコンテキストメニューを使いたくない人が呼ぶ)
! 70: void DisconnectContextMenu();
! 71:
1.1 root 72: private:
1.1.1.3 root 73: void OnSize(wxSizeEvent&);
74: void OnTimer(wxTimerEvent&);
1.1.1.7 ! root 75: void OnContextMenu(wxContextMenuEvent&);
! 76: void OnCopy(wxCommandEvent&);
1.1.1.3 root 77:
1.1.1.5 root 78: void Init(int col, int row);
1.1.1.7 ! root 79: void DoSize();
! 80: void InvalidateText();
! 81: void Draw() override;
1.1 root 82:
1.1.1.7 ! root 83: // コンテキストメニューを接続
! 84: void ConnectContextMenu();
1.1.1.5 root 85:
86: std::vector<uint16> prevbuf {};
1.1 root 87:
1.1.1.6 root 88: Monitor& monitor;
1.1.1.4 root 89: TextScreen ts {};
1.1 root 90:
1.1.1.7 ! root 91: int pad_left {};
! 92: int pad_top {};
! 93: int pad_right {};
! 94: int pad_bottom {};
! 95:
1.1.1.3 root 96: wxTimer timer {};
97:
1.1 root 98: wxDECLARE_EVENT_TABLE();
99: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.