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

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

unix.superglobalmegacorp.com

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