My Project
|
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 #pragma once 00029 #include "Define.h" 00030 00031 #include "Control.h" 00032 #include <list> 00033 #include <set> 00034 00035 namespace SallyAPI 00036 { 00037 namespace GUI 00038 { 00044 00045 enum ScrollType {SCROLL_TYPE_NONE, SCROLL_TYPE_NORMAL, SCROLL_TYPE_SMOOTH}; 00046 00055 00056 class DLL_API_SALLY CForm : 00057 public SallyAPI::GUI::CControl 00058 { 00059 protected: 00060 std::list<SallyAPI::GUI::CControl*> m_GUIControlList; 00061 00062 float m_fStartSendMessage; 00063 float m_fStartMouseDown; 00064 int m_iSetMessage; 00065 ScrollType m_eScrollType; 00066 int m_iScrollSmoothMouseOldX; 00067 int m_iScrollSmoothMouseOldY; 00068 std::vector<int> m_vScrollSmoothLastX; 00069 std::vector<int> m_vScrollSmoothLastY; 00070 std::vector<float> m_vScrollSmoothLastTime; 00071 bool m_bHandleInputIfItIsChildHandled; 00072 bool m_bAlwaysHandleInput; 00073 bool m_bStopOnFirstSuccess; 00074 bool m_bScrolling; 00075 00076 bool MoveX(int x); 00077 bool MoveY(int y); 00078 virtual void RenderControl(); 00079 virtual void UpdateControl(); 00080 virtual void TimerScrollNormal(); 00081 virtual bool ScrollTypeNormal(int x, int y); 00082 virtual bool ScrollTypeSmooth(int x, int y); 00083 00084 virtual bool ProcessMouseDown(int x, int y); 00085 virtual bool ProcessMouseUp(int x, int y); 00086 virtual bool ProcessMouseMove(int x, int y); 00087 virtual bool ProcessMouseDoubleClick(int x, int y); 00088 public: 00089 CForm(SallyAPI::GUI::CGUIBaseObject* parent, int x, int y, int width, int height, int controlId = 0); 00090 virtual ~CForm(); 00091 00092 virtual void SendMessageToChilds(SallyAPI::GUI::CGUIBaseObject* reporter, int reporterId, int messageId, SallyAPI::GUI::SendMessage::CParameterBase* messageParameter = NULL); 00093 virtual void SendMessageToParent(CGUIBaseObject* reporter, int reporterId, int messageId, SallyAPI::GUI::SendMessage::CParameterBase* messageParameter = NULL); 00094 virtual void Timer(float timeDelta); 00095 virtual void SetAlphaBlending(int alphaBlending); 00096 virtual void Render(); 00097 virtual void Update(); 00098 00099 virtual void AddChild(SallyAPI::GUI::CControl* control); 00100 void RemoveChild(std::list<CControl*>::iterator iter); 00101 00102 void SetScrollType(SallyAPI::GUI::ScrollType scrollType); 00103 void SetHandleInputIfItIsChildHandled(bool handleInputIfItIsChildHandled); 00104 void SetAlwaysHandleInput(bool alwaysHandleInput); 00105 void SetStopHandleInputOnFirstSuccess(bool stopOnFirstSuccess); 00106 bool IsScrolling(); 00107 }; 00108 } 00109 }