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