OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef _PWL_SCROLLBAR_H_ | 7 #ifndef _PWL_SCROLLBAR_H_ |
8 #define _PWL_SCROLLBAR_H_ | 8 #define _PWL_SCROLLBAR_H_ |
9 | 9 |
10 class CPWL_SBButton; | 10 class CPWL_SBButton; |
11 class CPWL_ScrollBar; | 11 class CPWL_ScrollBar; |
12 | 12 |
13 struct PWL_SCROLL_INFO | 13 struct PWL_SCROLL_INFO { |
14 { | 14 public: |
15 public: | 15 PWL_SCROLL_INFO() |
16 » PWL_SCROLL_INFO() : fContentMin(0.0f), fContentMax(0.0f), fPlateWidth(0.
0f), fBigStep(0.0f), fSmallStep(0.0f) | 16 : fContentMin(0.0f), |
17 » { | 17 fContentMax(0.0f), |
18 » } | 18 fPlateWidth(0.0f), |
19 » FX_FLOAT» » » » » fContentMin; | 19 fBigStep(0.0f), |
20 » FX_FLOAT» » » » » fContentMax;» | 20 fSmallStep(0.0f) {} |
21 » FX_FLOAT» » » » » fPlateWidth;» | 21 FX_FLOAT fContentMin; |
22 » FX_FLOAT» » » » » fBigStep; | 22 FX_FLOAT fContentMax; |
23 » FX_FLOAT» » » » » fSmallStep; | 23 FX_FLOAT fPlateWidth; |
| 24 FX_FLOAT fBigStep; |
| 25 FX_FLOAT fSmallStep; |
24 }; | 26 }; |
25 | 27 |
26 enum PWL_SCROLLBAR_TYPE | 28 enum PWL_SCROLLBAR_TYPE { SBT_HSCROLL, SBT_VSCROLL }; |
27 { | 29 |
28 » SBT_HSCROLL, | 30 enum PWL_SBBUTTON_TYPE { PSBT_MIN, PSBT_MAX, PSBT_POS }; |
29 » SBT_VSCROLL | 31 |
| 32 class CPWL_SBButton : public CPWL_Wnd { |
| 33 public: |
| 34 CPWL_SBButton(PWL_SCROLLBAR_TYPE eScrollBarType, |
| 35 PWL_SBBUTTON_TYPE eButtonType); |
| 36 virtual ~CPWL_SBButton(); |
| 37 |
| 38 public: |
| 39 virtual CFX_ByteString GetClassName() const; |
| 40 virtual void OnCreate(PWL_CREATEPARAM& cp); |
| 41 virtual void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream); |
| 42 virtual void DrawThisAppearance(CFX_RenderDevice* pDevice, |
| 43 CPDF_Matrix* pUser2Device); |
| 44 virtual FX_BOOL OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag); |
| 45 virtual FX_BOOL OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag); |
| 46 virtual FX_BOOL OnMouseMove(const CPDF_Point& point, FX_DWORD nFlag); |
| 47 |
| 48 protected: |
| 49 PWL_SCROLLBAR_TYPE m_eScrollBarType; |
| 50 PWL_SBBUTTON_TYPE m_eSBButtonType; |
| 51 |
| 52 FX_BOOL m_bMouseDown; |
30 }; | 53 }; |
31 | 54 |
32 enum PWL_SBBUTTON_TYPE | 55 struct PWL_FLOATRANGE { |
33 { | 56 public: |
34 » PSBT_MIN, | 57 PWL_FLOATRANGE(); |
35 » PSBT_MAX, | 58 PWL_FLOATRANGE(FX_FLOAT min, FX_FLOAT max); |
36 » PSBT_POS | 59 void Default(); |
| 60 void Set(FX_FLOAT min, FX_FLOAT max); |
| 61 FX_BOOL In(FX_FLOAT x) const; |
| 62 FX_FLOAT GetWidth() const; |
| 63 |
| 64 FX_FLOAT fMin, fMax; |
37 }; | 65 }; |
38 | 66 |
39 class CPWL_SBButton : public CPWL_Wnd | 67 struct PWL_SCROLL_PRIVATEDATA { |
40 { | 68 public: |
41 public: | 69 PWL_SCROLL_PRIVATEDATA(); |
42 » CPWL_SBButton(PWL_SCROLLBAR_TYPE eScrollBarType,PWL_SBBUTTON_TYPE eButto
nType); | |
43 » virtual ~CPWL_SBButton(); | |
44 | 70 |
45 public: | 71 void Default(); |
46 » virtual CFX_ByteString» » GetClassName() const; | 72 void SetScrollRange(FX_FLOAT min, FX_FLOAT max); |
47 » virtual void» » » » OnCreate(PWL_CREATEPARAM & cp); | 73 void SetClientWidth(FX_FLOAT width); |
48 » virtual void» » » » GetThisAppearanceStream(CFX_Byte
TextBuf & sAppStream); | 74 void SetSmallStep(FX_FLOAT step); |
49 » virtual void» » » » DrawThisAppearance(CFX_RenderDev
ice* pDevice, CPDF_Matrix* pUser2Device); | 75 void SetBigStep(FX_FLOAT step); |
50 » virtual FX_BOOL»» » » OnLButtonDown(const CPDF_Point &
point, FX_DWORD nFlag); | 76 FX_BOOL SetPos(FX_FLOAT pos); |
51 » virtual FX_BOOL»» » » OnLButtonUp(const CPDF_Point & p
oint, FX_DWORD nFlag); | |
52 » virtual FX_BOOL»» » » OnMouseMove(const CPDF_Point & p
oint, FX_DWORD nFlag); | |
53 | 77 |
54 protected: | 78 void AddSmall(); |
55 » PWL_SCROLLBAR_TYPE» » » m_eScrollBarType; | 79 void SubSmall(); |
56 » PWL_SBBUTTON_TYPE» » » m_eSBButtonType; | 80 void AddBig(); |
| 81 void SubBig(); |
57 | 82 |
58 » FX_BOOL»» » » » » m_bMouseDown; | 83 PWL_FLOATRANGE ScrollRange; |
| 84 FX_FLOAT fClientWidth; |
| 85 FX_FLOAT fScrollPos; |
| 86 FX_FLOAT fBigStep; |
| 87 FX_FLOAT fSmallStep; |
59 }; | 88 }; |
60 | 89 |
61 struct PWL_FLOATRANGE | 90 class CPWL_ScrollBar : public CPWL_Wnd { |
62 { | 91 public: |
63 public: | 92 CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType = SBT_HSCROLL); |
64 » PWL_FLOATRANGE(); | 93 virtual ~CPWL_ScrollBar(); |
65 » PWL_FLOATRANGE(FX_FLOAT min,FX_FLOAT max); | |
66 » void Default(); | |
67 » void Set(FX_FLOAT min,FX_FLOAT max); | |
68 » FX_BOOL»In(FX_FLOAT x) const; | |
69 » FX_FLOAT GetWidth() const; | |
70 | 94 |
71 » FX_FLOAT fMin,fMax; | 95 public: |
| 96 virtual CFX_ByteString GetClassName() const; |
| 97 virtual void OnCreate(PWL_CREATEPARAM& cp); |
| 98 virtual void RePosChildWnd(); |
| 99 virtual void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream); |
| 100 virtual void DrawThisAppearance(CFX_RenderDevice* pDevice, |
| 101 CPDF_Matrix* pUser2Device); |
| 102 |
| 103 virtual FX_BOOL OnLButtonDown(const CPDF_Point& point, FX_DWORD nFlag); |
| 104 virtual FX_BOOL OnLButtonUp(const CPDF_Point& point, FX_DWORD nFlag); |
| 105 virtual void OnNotify(CPWL_Wnd* pWnd, |
| 106 FX_DWORD msg, |
| 107 FX_INTPTR wParam = 0, |
| 108 FX_INTPTR lParam = 0); |
| 109 |
| 110 virtual void CreateChildWnd(const PWL_CREATEPARAM& cp); |
| 111 |
| 112 FX_FLOAT GetScrollBarWidth() const; |
| 113 PWL_SCROLLBAR_TYPE GetScrollBarType() const { return m_sbType; }; |
| 114 |
| 115 void SetNotifyForever(FX_BOOL bForever) { m_bNotifyForever = bForever; } |
| 116 |
| 117 protected: |
| 118 void SetScrollRange(FX_FLOAT fMin, FX_FLOAT fMax, FX_FLOAT fClientWidth); |
| 119 void SetScrollPos(FX_FLOAT fPos); |
| 120 void MovePosButton(FX_BOOL bRefresh); |
| 121 void SetScrollStep(FX_FLOAT fBigStep, FX_FLOAT fSmallStep); |
| 122 void NotifyScrollWindow(); |
| 123 CPDF_Rect GetScrollArea() const; |
| 124 |
| 125 private: |
| 126 void CreateButtons(const PWL_CREATEPARAM& cp); |
| 127 |
| 128 void OnMinButtonLBDown(const CPDF_Point& point); |
| 129 void OnMinButtonLBUp(const CPDF_Point& point); |
| 130 void OnMinButtonMouseMove(const CPDF_Point& point); |
| 131 |
| 132 void OnMaxButtonLBDown(const CPDF_Point& point); |
| 133 void OnMaxButtonLBUp(const CPDF_Point& point); |
| 134 void OnMaxButtonMouseMove(const CPDF_Point& point); |
| 135 |
| 136 void OnPosButtonLBDown(const CPDF_Point& point); |
| 137 void OnPosButtonLBUp(const CPDF_Point& point); |
| 138 void OnPosButtonMouseMove(const CPDF_Point& point); |
| 139 |
| 140 FX_FLOAT TrueToFace(FX_FLOAT); |
| 141 FX_FLOAT FaceToTrue(FX_FLOAT); |
| 142 |
| 143 virtual void TimerProc(); |
| 144 |
| 145 private: |
| 146 PWL_SCROLLBAR_TYPE m_sbType; |
| 147 PWL_SCROLL_INFO m_OriginInfo; |
| 148 CPWL_SBButton* m_pMinButton; |
| 149 CPWL_SBButton* m_pMaxButton; |
| 150 CPWL_SBButton* m_pPosButton; |
| 151 PWL_SCROLL_PRIVATEDATA m_sData; |
| 152 FX_BOOL m_bMouseDown; |
| 153 FX_BOOL m_bMinOrMax; |
| 154 FX_BOOL m_bNotifyForever; |
| 155 FX_FLOAT m_nOldPos; |
| 156 FX_FLOAT m_fOldPosButton; |
72 }; | 157 }; |
73 | 158 |
74 struct PWL_SCROLL_PRIVATEDATA | 159 #endif // !defined(AFX_PWL_SCROLLBAR_H__DCFEC082_2651_48A4_B8F3_63F1B3CC5E10__I
NCLUDED_) |
75 { | |
76 public: | |
77 » PWL_SCROLL_PRIVATEDATA(); | |
78 | |
79 » void Default(); | |
80 » void SetScrollRange(FX_FLOAT min,FX_FLOAT max); | |
81 » void SetClientWidth(FX_FLOAT width); | |
82 » void SetSmallStep(FX_FLOAT step); | |
83 » void SetBigStep(FX_FLOAT step); | |
84 » FX_BOOL SetPos(FX_FLOAT pos); | |
85 | |
86 » void AddSmall(); | |
87 » void SubSmall(); | |
88 » void AddBig(); | |
89 » void SubBig(); | |
90 | |
91 » PWL_FLOATRANGE» » » » ScrollRange; | |
92 » FX_FLOAT» » » » » fClientWidth; | |
93 » FX_FLOAT» » » » » fScrollPos; | |
94 » FX_FLOAT» » » » » fBigStep; | |
95 » FX_FLOAT» » » » » fSmallStep; | |
96 }; | |
97 | |
98 class CPWL_ScrollBar : public CPWL_Wnd | |
99 { | |
100 public: | |
101 » CPWL_ScrollBar(PWL_SCROLLBAR_TYPE sbType = SBT_HSCROLL); | |
102 » virtual ~CPWL_ScrollBar(); | |
103 | |
104 public: | |
105 » virtual CFX_ByteString» » GetClassName() const; | |
106 » virtual void» » » » OnCreate(PWL_CREATEPARAM & cp); | |
107 » virtual void» » » » RePosChildWnd(); | |
108 » virtual void» » » » GetThisAppearanceStream(CFX_Byte
TextBuf & sAppStream); | |
109 » virtual void» » » » DrawThisAppearance(CFX_RenderDev
ice* pDevice, CPDF_Matrix* pUser2Device); | |
110 | |
111 » virtual FX_BOOL»» » » OnLButtonDown(const CPDF_Point &
point, FX_DWORD nFlag); | |
112 » virtual FX_BOOL»» » » OnLButtonUp(const CPDF_Point & p
oint, FX_DWORD nFlag); | |
113 » virtual void» » » » OnNotify(CPWL_Wnd* pWnd, FX_DWOR
D msg, FX_INTPTR wParam = 0, FX_INTPTR lParam = 0); | |
114 | |
115 » virtual void» » » » CreateChildWnd(const PWL_CREATEP
ARAM & cp); | |
116 » | |
117 » FX_FLOAT» » » » » GetScrollBarWidth() cons
t;» | |
118 » PWL_SCROLLBAR_TYPE» » » GetScrollBarType() const {return
m_sbType;}; | |
119 | |
120 » void» » » » » » SetNotifyForever(FX_BOOL
bForever) {m_bNotifyForever = bForever;} | |
121 | |
122 protected:» » » | |
123 » void» » » » » » SetScrollRange(FX_FLOAT
fMin,FX_FLOAT fMax,FX_FLOAT fClientWidth); | |
124 » void» » » » » » SetScrollPos(FX_FLOAT fP
os); | |
125 » void» » » » » » MovePosButton(FX_BOOL bR
efresh); | |
126 » void» » » » » » SetScrollStep(FX_FLOAT f
BigStep,FX_FLOAT fSmallStep); | |
127 » void» » » » » » NotifyScrollWindow(); | |
128 » CPDF_Rect» » » » » GetScrollArea() const; | |
129 | |
130 private: | |
131 » void» » » » » » CreateButtons(const PWL_
CREATEPARAM & cp); | |
132 | |
133 » void» » » » » » OnMinButtonLBDown(const
CPDF_Point & point); | |
134 » void» » » » » » OnMinButtonLBUp(const CP
DF_Point & point); | |
135 » void» » » » » » OnMinButtonMouseMove(con
st CPDF_Point & point); | |
136 | |
137 » void» » » » » » OnMaxButtonLBDown(const
CPDF_Point & point); | |
138 » void» » » » » » OnMaxButtonLBUp(const CP
DF_Point & point); | |
139 » void» » » » » » OnMaxButtonMouseMove(con
st CPDF_Point & point); | |
140 | |
141 » void» » » » » » OnPosButtonLBDown(const
CPDF_Point & point); | |
142 » void» » » » » » OnPosButtonLBUp(const CP
DF_Point & point); | |
143 » void» » » » » » OnPosButtonMouseMove(con
st CPDF_Point & point); | |
144 | |
145 » FX_FLOAT» » » » » TrueToFace(FX_FLOAT); | |
146 » FX_FLOAT» » » » » FaceToTrue(FX_FLOAT); | |
147 | |
148 » virtual»void» » » » TimerProc(); | |
149 | |
150 private: | |
151 » PWL_SCROLLBAR_TYPE» » » m_sbType; | |
152 » PWL_SCROLL_INFO»» » » m_OriginInfo; | |
153 » CPWL_SBButton*» » » » m_pMinButton; | |
154 » CPWL_SBButton*» » » » m_pMaxButton; | |
155 » CPWL_SBButton*» » » » m_pPosButton; | |
156 » PWL_SCROLL_PRIVATEDATA» » m_sData; | |
157 » FX_BOOL»» » » » » m_bMouseDown;» | |
158 » FX_BOOL»» » » » » m_bMinOrMax; | |
159 » FX_BOOL»» » » » » m_bNotifyForever; | |
160 » FX_FLOAT» » » » » m_nOldPos; | |
161 » FX_FLOAT» » » » » m_fOldPosButton; | |
162 }; | |
163 | |
164 #endif // !defined(AFX_PWL_SCROLLBAR_H__DCFEC082_2651_48A4_B8F3_63F1B3CC5E10__IN
CLUDED_) | |
165 | |
166 | |
OLD | NEW |