|
|
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.3 root 38: virtual ~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.8 root 43: // テキストスクリーンを取得 (WXTextScreen を継承せずに更新する人のため)
44: TextScreen& GetScreen() { return screen; }
1.1.1.3 root 45:
1.1.1.7 root 46: // パディングサイズ変更
47: void SetPadding(int l, int t, int r, int b);
48: // パディングサイズ取得
49: int GetPaddingLeft() const { return pad_left; }
50: int GetPaddingTop() const { return pad_top; }
51: int GetPaddingRight() const { return pad_right; }
52: int GetPaddingBottom() const { return pad_bottom; }
53:
1.1.1.6 root 54: // 桁数、行数を取得する
1.1.1.8 root 55: int GetCol() const { return screen.GetCol(); }
56: int GetRow() const { return screen.GetRow(); }
1.1.1.3 root 57:
1.1.1.7 root 58: // クライアント座標 pos をテキスト座標(桁、行)に変換して返す
59: // (パディング領域では戻り値が負数になることに注意)
60: wxPoint GetTextPosition(const wxPoint& pos) const;
61:
1.1.1.3 root 62: // TextScreen のユーザデータ取得、設定
1.1.1.8 root 63: uint64 GetUserData() const { return screen.userdata; }
64: void SetUserData(uint64 value) { screen.userdata = value; }
1.1 root 65:
1.1.1.7 root 66: // コンテキストメニューイベントを解除
67: // (ここのコンテキストメニューを使いたくない人が呼ぶ)
68: void DisconnectContextMenu();
69:
1.1.1.8 root 70: protected:
71: TextScreen screen {};
72: std::vector<uint16> prevbuf {};
73:
1.1 root 74: private:
1.1.1.3 root 75: void OnSize(wxSizeEvent&);
1.1.1.7 root 76: void OnContextMenu(wxContextMenuEvent&);
77: void OnCopy(wxCommandEvent&);
1.1.1.3 root 78:
1.1.1.5 root 79: void Init(int col, int row);
1.1.1.7 root 80: void DoSize();
81: void InvalidateText();
82: void Draw() override;
1.1 root 83:
1.1.1.7 root 84: // コンテキストメニューを接続
85: void ConnectContextMenu();
1.1.1.5 root 86:
1.1.1.7 root 87: int pad_left {};
88: int pad_top {};
89: int pad_right {};
90: int pad_bottom {};
91:
1.1 root 92: wxDECLARE_EVENT_TABLE();
93: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.