|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2021 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: //
8: // 独自スクロールバー
9: //
10:
11: #pragma once
12:
1.1.1.3 root 13: #include "wxtextpanel.h"
1.1 root 14:
15: wxDECLARE_EVENT(NONO_EVT_SCROLL, wxScrollEvent);
16:
1.1.1.3 root 17: class WXScrollBar : public WXTextPanel
1.1 root 18: {
1.1.1.3 root 19: using inherited = WXTextPanel;
1.1 root 20:
21: public:
22: WXScrollBar(wxWindow *parent, wxWindowID id, long style);
23: ~WXScrollBar() override;
24:
1.1.1.3 root 25: void FontChanged() override;
1.1.1.4 root 26: void Fit() override;
1.1.1.3 root 27:
1.1.1.5 ! root 28: void SetScrollParam(int thumbsize_, int range_, int pagesize_) {
! 29: SetScrollParam(GetThumbPosition(), thumbsize_, range_, pagesize_);
! 30: }
1.1 root 31: void SetScrollParam(int pos_, int thumbsize_, int range_, int pagesize_);
32:
1.1.1.3 root 33: bool SetThumbPosition(int pos_);
1.1 root 34:
35: int GetThumbPosition() const { return thumbpos; }
36: int GetThumbSize() const { return thumbsize; }
37: int GetRange() const { return range; }
38:
39: void Draw() override;
40:
41: private:
42: void OnSize(wxSizeEvent& event);
43: void OnMouse(wxMouseEvent& event);
1.1.1.2 root 44: void OnTimer(wxTimerEvent& event);
1.1 root 45:
46: // つまみの位置を変更する (内部用)
47: void MoveThumb(int pos_);
48:
1.1.1.2 root 49: int PosCmp() const;
1.1 root 50:
51: bool is_vertical {};
1.1.1.4 root 52: // スクロール領域の太さというか従方向の長さ。
53: // 縦スクロールバーなら横幅、横スクロールバーなら高さ。
54: int subpx {};
1.1 root 55:
56: int thumbpos {}; // つまみの上(左)位置
57: int thumbsize {}; // つまみのサイズ
1.1.1.3 root 58: int thumbmin {}; // つまみの最小サイズ
1.1 root 59: int range {}; // スクロール領域の高さ(幅)
60: int pagesize {}; // ページアップ、ダウンの移動量
61:
62: int p1 {}; // つまみの上(左)ピクセル座標
63: int p2 {}; // つまみの下(右)ピクセル座標(開区間)
64: int range_px {}; // スクロール領域の高さ(幅)ピクセル
65:
66: int start_thumb; // ドラッグ開始時のつまみの位置
67: int start_px {}; // ドラッグ開始時のピクセル座標
68:
1.1.1.2 root 69: int mouse_px {}; // 直近のマウスカーソルのピクセル座標
70: bool left_click {}; // 左クリック継続中か
71:
72: wxTimer timer {};
73:
1.1 root 74: wxDECLARE_EVENT_TABLE();
75: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.