Annotation of nono/wx/wxvideomonitor.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: 
1.1.1.7 ! root        7: //
        !             8: // ビデオ系モニターウィンドウ
        !             9: //
        !            10: 
1.1       root       11: #pragma once
                     12: 
                     13: #include "wxsubwindow.h"
1.1.1.7 ! root       14: #include "wxscrollbar.h"
        !            15: #include <array>
        !            16: 
        !            17: class LunaRenderer;
1.1       root       18: 
                     19: // LUNA ビットマップパネル
1.1.1.7 ! root       20: class WXLunaBitmapPanel : public WXBitmapPanel
1.1       root       21: {
1.1.1.7 ! root       22:        using inherited = WXBitmapPanel;
1.1       root       23:  public:
                     24:        WXLunaBitmapPanel(wxWindow *parent);
1.1.1.4   root       25:        virtual ~WXLunaBitmapPanel() override;
1.1       root       26: 
1.1.1.7 ! root       27:        bool Layout() override;
        !            28: 
        !            29:        void EnablePlane(int plane, bool value);
        !            30:        void EnablePalette(bool value);
        !            31: 
1.1       root       32:  private:
                     33:        void OnSize(wxSizeEvent& event);
1.1.1.7 ! root       34:        void OnScroll(wxScrollEvent& event);
        !            35:        void OnTimer(wxTimerEvent& event);
        !            36:        void OnPaletteChanged(wxCommandEvent& event);
        !            37: 
1.1       root       38:        void Draw();
1.1.1.7 ! root       39:        void GenPalette();
1.1       root       40: 
1.1.1.7 ! root       41:        LunaRenderer *renderer {};
        !            42:        std::array<Color, 256> pal {};
        !            43:        uint32 planemask {};
        !            44:        bool apply_palette {};
        !            45: 
        !            46:        Rect view {};   // ビュー矩形
1.1       root       47: 
                     48:        static const int virtual_width = 2048;  // 仮想画面幅 [pixel]
                     49:        static const int virtual_height = 1024; // 仮想画面高さ [pixel]
1.1.1.7 ! root       50: 
        !            51:        WXScrollBar *vscroll {};
        !            52:        WXScrollBar *hscroll {};
        !            53: 
        !            54:        // タイマー
        !            55:        wxTimer timer {};
1.1       root       56: 
                     57:        // イベントテーブル
                     58:        wxDECLARE_EVENT_TABLE();
                     59: };
                     60: 
                     61: // LUNA ビットマップウィンドウ
                     62: class WXLunaBitmapWindow : public WXSubWindow
                     63: {
1.1.1.2   root       64:        using inherited = WXSubWindow;
1.1.1.7 ! root       65: 
        !            66:  public:
        !            67:        // コントロールパネルに表示するプレーン数
        !            68:        static const int NPLANES = 4;
        !            69: 
1.1       root       70:  public:
1.1.1.6   root       71:        WXLunaBitmapWindow(wxWindow *parent, const wxString& name);
1.1.1.4   root       72:        virtual ~WXLunaBitmapWindow() override;
1.1       root       73: 
1.1.1.7 ! root       74:        void FontChanged() override;
        !            75: 
1.1       root       76:  private:
1.1.1.7 ! root       77:        void OnPlane(wxCommandEvent& event);
        !            78:        void DoPlane(int plane, bool value);
        !            79:        void OnApplyPalette(wxCommandEvent& event);
        !            80:        void DoApplyPalette(bool value);
        !            81: 
        !            82:        // コントロールパネル
        !            83:        std::array<wxCheckBox *, NPLANES> planesw {};
        !            84:        wxCheckBox *applysw {};
1.1       root       85: 
                     86:        // グラフィックパネル
1.1.1.7 ! root       87:        WXLunaBitmapPanel *viewpanel {};
1.1       root       88: 
                     89:        // イベントテーブル
                     90:        wxDECLARE_EVENT_TABLE();
1.1.1.7 ! root       91: 
        !            92:        // 状態の二次記憶域。
        !            93:        // サブウィンドウは今のところ開いてる時だけオブジェクトが存在している
        !            94:        // タイプだが、このウィンドウを閉じてまた開くとさっきの状態が継続して
        !            95:        // いてほしいので、ここでその状況を真似する。
        !            96:        // ただしこっちはあくまで補助用で、コントロールの値のほうが一次情報。
        !            97:        static std::array<bool, NPLANES> sticky_plane;
        !            98:        static bool sticky_apply;
        !            99: 
        !           100:        // sticky_used が false ならまだ一度も使われていない (次のコンストラクタ
        !           101:        // で初期化する)、true なら前回の値が入っている。
        !           102:        static bool sticky_used;
1.1       root      103: };

unix.superglobalmegacorp.com

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