Annotation of nono/wx/wxtextscreen.h, revision 1.1.1.7

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: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.