|
|
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; }
1.1.1.13! root 55: int GetPaddingX() const { return GetPaddingLeft() + GetPaddingRight(); }
! 56: int GetPaddingY() const { return GetPaddingTop() + GetPaddingBottom(); }
1.1.1.7 root 57:
1.1.1.6 root 58: // 桁数、行数を取得する
1.1.1.8 root 59: int GetCol() const { return screen.GetCol(); }
60: int GetRow() const { return screen.GetRow(); }
1.1.1.3 root 61:
1.1.1.12 root 62: // 指定の桁数行数の時のピクセル数を取得する
63: int GetScreenWidth(int col_) const;
64: int GetScreenHeight(int row_) const;
1.1.1.10 root 65:
1.1.1.7 root 66: // クライアント座標 pos をテキスト座標(桁、行)に変換して返す
67: // (パディング領域では戻り値が負数になることに注意)
68: wxPoint GetTextPosition(const wxPoint& pos) const;
69:
1.1.1.3 root 70: // TextScreen のユーザデータ取得、設定
1.1.1.8 root 71: uint64 GetUserData() const { return screen.userdata; }
72: void SetUserData(uint64 value) { screen.userdata = value; }
1.1 root 73:
1.1.1.7 root 74: // コンテキストメニューイベントを解除
75: // (ここのコンテキストメニューを使いたくない人が呼ぶ)
76: void DisconnectContextMenu();
77:
1.1.1.8 root 78: protected:
79: TextScreen screen {};
80: std::vector<uint16> prevbuf {};
81:
1.1 root 82: private:
1.1.1.3 root 83: void OnSize(wxSizeEvent&);
1.1.1.7 root 84: void OnContextMenu(wxContextMenuEvent&);
85: void OnCopy(wxCommandEvent&);
1.1.1.3 root 86:
1.1.1.5 root 87: void Init(int col, int row);
1.1.1.12 root 88: void ResetFit();
1.1.1.7 root 89: void InvalidateText();
90: void Draw() override;
1.1 root 91:
1.1.1.7 root 92: // コンテキストメニューを接続
93: void ConnectContextMenu();
1.1.1.5 root 94:
1.1.1.7 root 95: int pad_left {};
96: int pad_top {};
97: int pad_right {};
98: int pad_bottom {};
99:
1.1.1.13! root 100: // 余白を塗りつぶす場合は true
! 101: bool draw_padding {};
! 102:
1.1 root 103: wxDECLARE_EVENT_TABLE();
104: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.