|
|
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: ! 13: #include "wxbitmappanel.h" ! 14: ! 15: wxDECLARE_EVENT(NONO_EVT_SCROLL, wxScrollEvent); ! 16: ! 17: class WXScrollBar : public WXBitmapPanel ! 18: { ! 19: using inherited = WXBitmapPanel; ! 20: ! 21: public: ! 22: WXScrollBar(wxWindow *parent, wxWindowID id, long style); ! 23: ~WXScrollBar() override; ! 24: ! 25: void SetScrollParam(int pos_, int thumbsize_, int range_, int pagesize_); ! 26: ! 27: void SetThumbPosition(int pos_); ! 28: ! 29: int GetThumbPosition() const { return thumbpos; } ! 30: int GetThumbSize() const { return thumbsize; } ! 31: int GetRange() const { return range; } ! 32: ! 33: void Draw() override; ! 34: ! 35: private: ! 36: void OnSize(wxSizeEvent& event); ! 37: void OnMouse(wxMouseEvent& event); ! 38: ! 39: // つまみの位置を計算して再描画 ! 40: void RefreshThumb(); ! 41: ! 42: // つまみの位置を変更する (内部用) ! 43: void MoveThumb(int pos_); ! 44: ! 45: int PosCmp(const wxPoint& pt) const; ! 46: ! 47: bool is_vertical {}; ! 48: ! 49: int thumbpos {}; // つまみの上(左)位置 ! 50: int thumbsize {}; // つまみのサイズ ! 51: int range {}; // スクロール領域の高さ(幅) ! 52: int pagesize {}; // ページアップ、ダウンの移動量 ! 53: ! 54: int p1 {}; // つまみの上(左)ピクセル座標 ! 55: int p2 {}; // つまみの下(右)ピクセル座標(開区間) ! 56: int range_px {}; // スクロール領域の高さ(幅)ピクセル ! 57: ! 58: int start_thumb; // ドラッグ開始時のつまみの位置 ! 59: int start_px {}; // ドラッグ開始時のピクセル座標 ! 60: ! 61: wxDECLARE_EVENT_TABLE(); ! 62: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.