![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Chapter003_TRobot
Dependencies: F746_GUI Array_Matrix TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG SDFileSystem_Warning_Fixed FrequencyResponseDrawer F746_SAI_IO
Diff: MyClasses_Functions/TouchPanelDetectorX.hpp
- Revision:
- 0:04b43b777fae
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyClasses_Functions/TouchPanelDetectorX.hpp Tue Apr 19 09:46:11 2016 +0000 @@ -0,0 +1,46 @@ +//------------------------------------------------------ +// Touch panel detector for x axis class +// +// 2016/03/31, Copyright (c) 2016 MIKAMI, Naoki +//------------------------------------------------------ + +#ifndef F746_TOUCH_PANELDETECTORX_HPP +#define F746_TOUCH_PANELDETECTORX_HPP + +#include "GuiBase.hpp" + +namespace Mikami +{ + class TouchPanelDetectorX : public GuiBase + { + public: + // Constructor + TouchPanelDetectorX(uint16_t x1, uint16_t x2, + uint16_t y1, uint16_t y2) + : X1_(x1), X2_(x2), Y1_(y1), Y2_(y2) {} + + bool IsTouched(uint16_t xIn, uint16_t &xOut) + { + GetTsState(); + + if (!state_.touchDetected) return false; + + uint16_t x = state_.touchX[0]; + uint16_t y = state_.touchY[0]; + + if ( (x < X1_) || (x > X2_) || (y < Y1_) || (y > Y2_) ) + return false; + + const int WD = 8; + if ( (x < xIn-WD) || (x > xIn+WD) ) return false; + + xOut = (x >= X1_) ? x : X1_; + xOut = (x <= X2_) ? x : X2_; + return true; + } + + private: + const uint16_t X1_, X2_, Y1_, Y2_; + }; +} +#endif // F746_TOUCH_PANELDETECTORX_HPP