source: eviacam/trunk/fuentes/src/pointeraction.h @ 29

Last change on this file since 29 was 29, checked in by mabarracus, 4 years ago

added eviacam content

  • Property svn:executable set to *
File size: 5.7 KB
Line 
1/////////////////////////////////////////////////////////////////////////////
2// Name:        pointeraction.h
3// Purpose:
4// Author:      Cesar Mauri Loba (cesar at crea-si dot com)
5// Modified by:
6// Created:
7// Copyright:   (C) 2008-11 Cesar Mauri Loba - CREA Software Systems
8//
9//  This program is free software: you can redistribute it and/or modify
10//  it under the terms of the GNU General Public License as published by
11//  the Free Software Foundation, either version 3 of the License, or
12//  (at your option) any later version.
13//
14//  This program is distributed in the hope that it will be useful,
15//  but WITHOUT ANY WARRANTY; without even the implied warranty of
16//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17//  GNU General Public License for more details.
18//
19//  You should have received a copy of the GNU General Public License
20//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
21/////////////////////////////////////////////////////////////////////////////
22#ifndef POINTERACTION_H
23#define POINTERACTION_H
24
25#include "mousecontrol.h"
26#include "configbase.h"
27#include <math.h>
28
29class wxSound;
30class wxWindow;
31class CMouseControl;
32class CDwellClick;
33class CGestureClick;
34
35class CPointerAction : public CConfigBase
36{
37public:
38        CPointerAction ();
39        ~CPointerAction ();
40
41        // Call from machine vision tracker
42        void ProcessMotion (float dxSensor, float dySensor);
43
44        // Enable/disable processing motion and generating actions
45        bool GetEnabled() const { return m_enabled; }
46        void SetEnabled(bool value);
47
48        // Allows to choose among diferent types of click generation modes
49        enum EClickMode { NONE, DWELL, GESTURE };
50        EClickMode GetClickMode() const { return m_clickMode; }
51        bool SetClickMode(EClickMode mode, bool silent= true, wxWindow* parent= NULL);
52
53        unsigned int GetXSpeed() const { return  m_xSpeed; }
54        void SetXSpeed(unsigned int value) {
55                if (value >= 0 && value <= 30)
56                {
57                        m_xSpeed= value;
58                        m_pMouseControl->SetRelFactorX (GetSpeedFactor(m_xSpeed));
59                }
60        }
61
62        unsigned int GetYSpeed() const { return m_ySpeed; }
63        void SetYSpeed(unsigned int value) {
64                if (value >= 0 && value <= 30)
65                {
66                        m_ySpeed= value;
67                        m_pMouseControl->SetRelFactorY (GetSpeedFactor(m_ySpeed));
68                }
69        }
70
71        unsigned int GetAcceleration() const {
72                return m_acceleration;
73        }
74        void SetAcceleration(unsigned int acceleration);
75
76        unsigned int GetSmoothness() const {
77                return (unsigned int) (powf (10.0f, m_pMouseControl->GetLowPassFilterWeight ()) + 0.5f) - 1;
78        }
79        void SetSmoothness (unsigned int smoothness) {
80                if (smoothness> 8) smoothness= 8;
81                m_pMouseControl->SetLowPassFilterWeight (log10f((float) smoothness + 1));
82        }
83
84        unsigned int GetEasyStopValue() const { 
85                return (unsigned int) m_pMouseControl->GetRelDeltaThreshold (); 
86        }
87        void SetEasyStopValue (unsigned int value) {
88                if (value> 10) value= 10;
89                m_pMouseControl->SetRelDeltaThreshold ( (float) value);
90        }
91
92        bool GetBeepOnClick() const { return m_beepOnClick; }
93        void SetBeepOnClick(bool value) { m_beepOnClick = value; }
94       
95        // Common for dwell and gesture click
96        bool GetVisualAlerts() const;
97        void SetVisualAlerts(bool value);
98
99        // Common for dwell and gesture click
100        unsigned int GetDwellTime() const;
101        void SetDwellTime (unsigned int ds);
102
103        // Common for dwell and gesture click
104        unsigned int GetDwellToleranceArea() const;
105        void SetDwellToleranceArea(unsigned int value);
106
107        void SetRestrictedWorkingArea (bool value) { 
108                m_pMouseControl->SetRestrictedWorkingArea(value); 
109        }
110        bool GetRestrictedWorkingArea() const { 
111                return m_pMouseControl->GetRestrictedWorkingArea();
112        }
113
114        unsigned int GetTopWorkspace() const { 
115                return (unsigned int) ((1.0f - m_pMouseControl->GetTopPercent()) * 50.0f + 0.5f);
116        }
117        void SetTopWorkspace(unsigned int value) {
118            if (value > 50) value = 50;
119            m_pMouseControl->SetTopPercent((float) (50 - value) / 50.0f);
120        }
121
122        unsigned int GetLeftWorkspace() const { 
123                return (unsigned int) ((1.0f - m_pMouseControl->GetLeftPercent()) * 50.0f + 0.5f);
124        }
125        void SetLeftWorkspace(unsigned int value) {
126                if (value > 50) value = 50;
127                m_pMouseControl->SetLeftPercent((float) (50 - value) / 50.0f);
128        }
129       
130        unsigned int GetRightWorkspace() const { 
131                return (unsigned int) ((1.0f - m_pMouseControl->GetRightPercent()) * 50.0f + 0.5f);
132        }
133        void SetRightWorkspace(unsigned int value) {
134                if (value > 50) value = 50;
135                m_pMouseControl->SetRightPercent((float) (50 - value) / 50.0f);
136        }
137
138        unsigned int GetBottomWorkspace() {
139                return (unsigned int) ((1.0f - m_pMouseControl->GetBottomPercent()) * 50.0f + 0.5f);
140        }
141        void SetBottomWorkspace(unsigned int value) {
142                if (value > 50) value = 50;
143                m_pMouseControl->SetBottomPercent((float) (50 - value) / 50.0f);
144        }
145       
146        void SetWrapPointer (bool value) { 
147                m_pMouseControl->SetWrapPointer(value); 
148        }
149        bool GetWrapPointer() const { 
150                return m_pMouseControl->GetWrapPointer();
151        }
152
153        void SetSendActionWait(unsigned int ms) {
154                if (ms> 50) ms= 50;
155                m_pMouseControl->SetSendActionWait(ms);
156        }
157        unsigned int GetSendActionWait() const { return m_pMouseControl->GetSendActionWait(); }
158
159        void ResetCounters();
160
161        //
162        void CenterPointer () { m_pMouseControl->CenterPointer(); };
163        CDwellClick& GetDwellClick() { assert (m_pDwellClick); return *m_pDwellClick; }
164        CGestureClick& GetGestureClick() { assert (m_pGestureClick); return *m_pGestureClick; }
165
166    // Configuration methods
167        virtual void InitDefaults();
168        virtual void WriteProfileData(wxConfigBase* pConfObj);
169        virtual void ReadProfileData(wxConfigBase* pConfObj);
170
171private:
172        float GetSpeedFactor(unsigned int speed) const;
173       
174        bool m_enabled;
175        unsigned int m_xSpeed, m_ySpeed;
176        unsigned int m_acceleration;
177        EClickMode m_clickMode;
178        bool m_beepOnClick;
179        wxSound* m_pClickSound;
180        wxSound* m_pLeftUpClickSound;
181        CMouseControl* m_pMouseControl;
182        CDwellClick* m_pDwellClick;
183        CGestureClick* m_pGestureClick;
184};
185
186#endif
Note: See TracBrowser for help on using the repository browser.