|
|
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"
1.1.1.8 root 20: #include "geometric.h"
1.1.1.7 root 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.9 root 26: public:
1.1.1.7 root 27: // テキストスクリーンは本来単純なキャラクタビットマップ構造のため、
28: // クライアント領域の端の1ピクセルまでふんだんに使用している。
29: // ウィンドウマネージャ側でこのウィンドウに枠などをつけてくれる場合は
30: // あまり問題にならないが、枠などを一切つけないタイプのウィンドウ
31: // マネージャでこのウィンドウを表示するとウィンドウの縁に接する文字の
32: // 視認性が(文字とウィンドウ外の背景の組み合わせによっては)すこぶる
33: // 悪くなる。そのため、テキストスクリーンの周囲に余白をもたせる。
34: static const int DefaultPadding = 3;
35:
1.1 root 36: public:
1.1.1.8 root 37: WXTextScreen(wxWindow *parent, const nnSize& screensize);
1.1.1.11 root 38: ~WXTextScreen() override;
1.1 root 39:
40: // フォントサイズ変更
1.1.1.7 root 41: void FontChanged() override;
1.1.1.3 root 42:
1.1.1.12! root 43: void Fit() override;
! 44:
1.1.1.8 root 45: // テキストスクリーンを取得 (WXTextScreen を継承せずに更新する人のため)
46: TextScreen& GetScreen() { return screen; }
1.1.1.3 root 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: // 桁数、行数を取得する
1.1.1.8 root 57: int GetCol() const { return screen.GetCol(); }
58: int GetRow() const { return screen.GetRow(); }
1.1.1.3 root 59:
1.1.1.12! root 60: // 指定の桁数行数の時のピクセル数を取得する
! 61: int GetScreenWidth(int col_) const;
! 62: int GetScreenHeight(int row_) const;
1.1.1.10 root 63:
1.1.1.7 root 64: // クライアント座標 pos をテキスト座標(桁、行)に変換して返す
65: // (パディング領域では戻り値が負数になることに注意)
66: wxPoint GetTextPosition(const wxPoint& pos) const;
67:
1.1.1.3 root 68: // TextScreen のユーザデータ取得、設定
1.1.1.8 root 69: uint64 GetUserData() const { return screen.userdata; }
70: void SetUserData(uint64 value) { screen.userdata = value; }
1.1 root 71:
1.1.1.7 root 72: // コンテキストメニューイベントを解除
73: // (ここのコンテキストメニューを使いたくない人が呼ぶ)
74: void DisconnectContextMenu();
75:
1.1.1.8 root 76: protected:
77: TextScreen screen {};
78: std::vector<uint16> prevbuf {};
79:
1.1 root 80: private:
1.1.1.3 root 81: void OnSize(wxSizeEvent&);
1.1.1.7 root 82: void OnContextMenu(wxContextMenuEvent&);
83: void OnCopy(wxCommandEvent&);
1.1.1.3 root 84:
1.1.1.5 root 85: void Init(int col, int row);
1.1.1.12! root 86: void ResetFit();
1.1.1.7 root 87: void InvalidateText();
88: void Draw() override;
1.1 root 89:
1.1.1.7 root 90: // コンテキストメニューを接続
91: void ConnectContextMenu();
1.1.1.5 root 92:
1.1.1.7 root 93: int pad_left {};
94: int pad_top {};
95: int pad_right {};
96: int pad_bottom {};
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.