| 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 |