PEBL 2.2
Psychology Experiment Building Language - Cross-platform psychological experiment development system
PEvent Class Reference

#include <PEvent.h>

Public Member Functions

 PEvent (PEBL_DEVICE_TYPE type, long unsigned int time, unsigned int windowID)
 
 PEvent (const PEvent &evt)
 
 ~PEvent ()
 
 operator Variant ()
 
PEBL_DEVICE_TYPE GetType () const
 
void SetKeyboardEvent (const PEBL_KeyboardEvent &evt)
 
void SetTextEditingEvent (const PEBL_TextEditingEvent &evt)
 
void SetTextInputEvent (const PEBL_TextInputEvent &evt)
 
void SetMouseWheelEvent (const PEBL_MouseWheelEvent &evt)
 
void SetMouseMovementEvent (const PEBL_MouseMovementEvent &evt)
 
void SetMouseButtonEvent (const PEBL_MouseButtonEvent &evt)
 
void SetPortEvent (const PEBL_PortEvent &evt)
 
void SetMovieRefreshEvent (const PEBL_MovieRefreshEvent &evt)
 
void SetMovieEndEvent (const PEBL_MovieEndEvent &evt)
 
void SetWindowEvent (const PEBL_WindowEvent &evt)
 
void SetDummyEvent (const PEBL_DummyEvent &evt)
 
int GetState (int iface) const
 
unsigned long int GetEventTime () const
 
PEBL_KeyboardEvent GetKeyboardEvent () const
 
PEBL_TextEditingEvent GetTextEditingEvent () const
 
PEBL_TextInputEvent GetTextInputEvent () const
 
PEBL_MouseMovementEvent GetMouseMovementEvent () const
 
PEBL_MouseButtonEvent GetMouseButtonEvent () const
 
PEBL_MouseWheelEvent GetMouseWheelEvent () const
 
PEBL_MouseButtonEvent GetPortEvent () const
 
PEBL_MovieRefreshEvent GetMovieRefreshEvent () const
 
PEBL_MovieEndEvent GetMovieEndEvent () const
 
PEBL_DummyEvent GetDummyEvent () const
 
PEBL_WindowEvent GetWindowEvent () const
 

Detailed Description

Definition at line 156 of file PEvent.h.

Constructor & Destructor Documentation

◆ PEvent() [1/2]

PEvent::PEvent ( PEBL_DEVICE_TYPE  type,
long unsigned int  time,
unsigned int  windowID = 0 
)

Definition at line 40 of file PEvent.cpp.

42 :
43 mType(type),
44 mEventTime(time)
45{
46}

◆ PEvent() [2/2]

PEvent::PEvent ( const PEvent evt)

Definition at line 48 of file PEvent.cpp.

50{
51
52 mEventTime=evt.GetEventTime();
53 mType = evt.GetType();
54 mWindowID = 0;
55
56 switch(mType)
57 {
58 case PDT_KEYBOARD:
59 {
61 mEvent.keyboardEvent = event;
62 }
63 break;
65 {
67 mEvent.textEditingEvent = event;
68 }
69 break;
70 case PDT_TEXT_INPUT:
71 {
73 mEvent.textInputEvent =event;
74 }
75
76 break;
78 {
80 mEvent.mouseMovementEvent = event;
81 }
82 break;
83
85 {
87 mEvent.mouseButtonEvent = event;
88 }
89 break;
90
91 case PDT_MOUSE_WHEEL:
92 {
94 mEvent.mouseWheelEvent = event;
95 }
96 break;
98 {
100 mEvent.movieRefreshEvent = event;
101 }
102 break;
103
104 case PDT_MOVIE_END:
105 {
107 mEvent.movieEndEvent = event;
108 }
109 break;
111 {
112 //do something here that will cause a redraw.
113 }
114 case PDT_TIMER:
115 case PDT_UNKNOWN:
116 default:
117 ;
118 }
119
120}
@ PDT_MOUSE_WHEEL
Definition PDevice.h:47
@ PDT_MOVIE_END
Definition PDevice.h:58
@ PDT_TEXT_INPUT
Definition PDevice.h:43
@ PDT_MOUSE_MOVEMENT
Definition PDevice.h:45
@ PDT_UNKNOWN
Definition PDevice.h:41
@ PDT_MOUSE_BUTTON
Definition PDevice.h:46
@ PDT_TEXT_EDITING
Definition PDevice.h:44
@ PDT_KEYBOARD
Definition PDevice.h:42
@ PDT_WINDOW_RESIZE
Definition PDevice.h:59
@ PDT_TIMER
Definition PDevice.h:48
@ PDT_MOVIE_REFRESH
Definition PDevice.h:57
PEBL_DEVICE_TYPE GetType() const
Definition PEvent.h:167
PEBL_MouseMovementEvent GetMouseMovementEvent() const
Definition PEvent.cpp:341
PEBL_TextInputEvent GetTextInputEvent() const
Definition PEvent.cpp:324
PEBL_MovieRefreshEvent GetMovieRefreshEvent() const
Definition PEvent.cpp:389
unsigned long int GetEventTime() const
Definition PEvent.h:183
PEBL_MouseButtonEvent GetMouseButtonEvent() const
Definition PEvent.cpp:357
PEBL_MouseWheelEvent GetMouseWheelEvent() const
Definition PEvent.cpp:372
PEBL_MovieEndEvent GetMovieEndEvent() const
Definition PEvent.cpp:401
PEBL_KeyboardEvent GetKeyboardEvent() const
Definition PEvent.cpp:294
PEBL_TextEditingEvent GetTextEditingEvent() const
Definition PEvent.cpp:312

References GetEventTime(), GetKeyboardEvent(), GetMouseButtonEvent(), GetMouseMovementEvent(), GetMouseWheelEvent(), GetMovieEndEvent(), GetMovieRefreshEvent(), GetTextEditingEvent(), GetTextInputEvent(), GetType(), PDT_KEYBOARD, PDT_MOUSE_BUTTON, PDT_MOUSE_MOVEMENT, PDT_MOUSE_WHEEL, PDT_MOVIE_END, PDT_MOVIE_REFRESH, PDT_TEXT_EDITING, PDT_TEXT_INPUT, PDT_TIMER, PDT_UNKNOWN, and PDT_WINDOW_RESIZE.

◆ ~PEvent()

PEvent::~PEvent ( )

Definition at line 188 of file PEvent.cpp.

189{
190
191 //These .text properties get cleaned up by SDL,
192 //as they are borrowed from the SDL event.
193 if(PDT_TEXT_INPUT==mType)
194 {
195
196 //free(mEvent.textInputEvent.text);
197 }else if(PDT_TEXT_EDITING==mType)
198 {
199 //free(mEvent.textEditingEvent.text);
200 }
201}

References PDT_TEXT_EDITING, and PDT_TEXT_INPUT.

Member Function Documentation

◆ GetDummyEvent()

◆ GetEventTime()

unsigned long int PEvent::GetEventTime ( ) const
inline

Definition at line 183 of file PEvent.h.

183{return mEventTime;};

Referenced by PEvent(), and PEBLEnvironment::WaitForAnyKeyPress().

◆ GetKeyboardEvent()

◆ GetMouseButtonEvent()

PEBL_MouseButtonEvent PEvent::GetMouseButtonEvent ( ) const

Definition at line 357 of file PEvent.cpp.

358{
359 if(PDT_MOUSE_BUTTON == mType )
360 return mEvent.mouseButtonEvent;
361 else
362 {
364 tmp.x = 0;
365 tmp.y = 0;
366 tmp.button = 0;
367 tmp.state = 0;
368 return tmp;
369 }
370}
unsigned int x
Definition PEvent.h:105
unsigned int y
Definition PEvent.h:105

References PEBL_MouseButtonEvent::button, PDT_MOUSE_BUTTON, PEBL_MouseButtonEvent::state, PEBL_MouseButtonEvent::x, and PEBL_MouseButtonEvent::y.

Referenced by PEBLEnvironment::GetInput0(), PEvent(), PEBLEnvironment::StartEventLoop(), PEBLEnvironment::WaitForMouseButton(), and PEBLEnvironment::WaitForMouseButtonWithTimeout().

◆ GetMouseMovementEvent()

PEBL_MouseMovementEvent PEvent::GetMouseMovementEvent ( ) const

Definition at line 341 of file PEvent.cpp.

342{
343 if(PDT_MOUSE_MOVEMENT == mType )
344 return mEvent.mouseMovementEvent;
345 else
346 {
348 tmp.x = 0;
349 tmp.y = 0;
350 tmp.relx = 0;
351 tmp.rely = 0;
352 return tmp;
353 }
354}
unsigned int y
Definition PEvent.h:97
unsigned int x
Definition PEvent.h:97

References PDT_MOUSE_MOVEMENT, PEBL_MouseMovementEvent::relx, PEBL_MouseMovementEvent::rely, PEBL_MouseMovementEvent::x, and PEBL_MouseMovementEvent::y.

Referenced by PEvent().

◆ GetMouseWheelEvent()

PEBL_MouseWheelEvent PEvent::GetMouseWheelEvent ( ) const

Definition at line 372 of file PEvent.cpp.

373{
374 if(PDT_MOUSE_WHEEL == mType)
375 return mEvent.mouseWheelEvent;
376
377 else{
379 tmp.x = 0;
380 tmp.y = 0;
381 tmp.deltax = 0;
382 tmp.deltay= 0;
383 tmp.direction = 1;
384 return tmp;
385 }
386}
long unsigned int x
Definition PEvent.h:115
long unsigned int y
Definition PEvent.h:115

References PEBL_MouseWheelEvent::deltax, PEBL_MouseWheelEvent::deltay, PEBL_MouseWheelEvent::direction, PDT_MOUSE_WHEEL, PEBL_MouseWheelEvent::x, and PEBL_MouseWheelEvent::y.

Referenced by PEvent(), PEBLEnvironment::StartEventLoop(), PEBLEnvironment::WaitForMouseButton(), and PEBLEnvironment::WaitForMouseButtonWithTimeout().

◆ GetMovieEndEvent()

PEBL_MovieEndEvent PEvent::GetMovieEndEvent ( ) const

Definition at line 401 of file PEvent.cpp.

402{
403 if(PDT_MOVIE_END == mType )
404 return mEvent.movieEndEvent;
405 else
406 {
408 tmp.value = true;
409 return tmp;
410 }
411}

References PDT_MOVIE_END, and PEBL_MovieEndEvent::value.

Referenced by PEvent().

◆ GetMovieRefreshEvent()

PEBL_MovieRefreshEvent PEvent::GetMovieRefreshEvent ( ) const

Definition at line 389 of file PEvent.cpp.

390{
391 if(PDT_MOVIE_REFRESH == mType )
392 return mEvent.movieRefreshEvent;
393 else
394 {
396 tmp.value = true;
397 return tmp;
398 }
399}

References PDT_MOVIE_REFRESH, and PEBL_MovieRefreshEvent::value.

Referenced by PEvent().

◆ GetPortEvent()

PEBL_MouseButtonEvent PEvent::GetPortEvent ( ) const

◆ GetState()

int PEvent::GetState ( int  iface) const

Definition at line 447 of file PEvent.cpp.

448{
449
450 //cout << "Getting state : " << iface << "on type " << mType << " mousetype is " << PDT_MOUSE_WHEEL << endl;
451
452 // This gets the 'state' described in an event.
453 switch(mType)
454 {
455
456 //For keyboard events, the interface is the key.
457 case PDT_KEYBOARD:
458
459 //If the interface is the "anykey", return the key state
461 {
462
463 return mEvent.keyboardEvent.state;
464 }
465
466
467 //Determine which key is being used.
468
469 if(mEvent.keyboardEvent.key == (PEBL_Keycode)iface)
470 {
471
472 return mEvent.keyboardEvent.state;
473 }
474 else
475 return 0;
476
477 break;
478
479 case PDT_TEXT_EDITING:
480 {
481 return 1;
482 //return mEvent.textInputEvent;
483 }
484 break;
485
486 case PDT_TEXT_INPUT:
487 {
488 return 1;
489 //return mEvent.textEditingEvent;
490 }
491 break;
492
493 case PDT_MOUSE_BUTTON:
494 {
495
496
497 //cout << "Getting button state in PEvent.cpp:"<<
498 //mEvent.mouseButtonEvent.button << "--" << iface << endl;
499 if(mEvent.mouseButtonEvent.button == iface)
500 {
501
502 return mEvent.mouseButtonEvent.state;
503 }else
504 {
505 return PEBL_UNKNOWN;
506 }
507
508
509 }
510 break;
511 case PDT_MOUSE_WHEEL:
512 {
513 //cout << "mouse wheel: " << iface <<"|" << mEvent.mouseWheelEvent.deltax<< "|" <<
514 //mEvent.mouseWheelEvent.deltay << endl;
515 if(iface==1)
516 {
517 return (int)(mEvent.mouseWheelEvent.deltax);
518 }
519 else if(iface==2)
520 {
521 return (int)(mEvent.mouseWheelEvent.deltay);
522 }
523 else
524 return PEBL_UNKNOWN;
525 }
526 break;
527
529 case PDT_TIMER:
531 case PDT_MOVIE_END:
532 case PDT_UNKNOWN:
533 return PEBL_UNKNOWN;
534
536 {
537 //Here, the state should describe the size of the window resize.
538 if(iface == PEBL_WINDOWWIDTH)
539 {
540 return mEvent.windowEvent.w;
541 }else
542 {
543 return mEvent.windowEvent.h;
544 }
545 break;
546 }
547 default:
548
549 cerr << mType << endl;
550 PError::SignalFatalError("Unhandled device type in PEvent::GetState\n");
551
552 break;
553 }
554
555
556 return PEBL_UNKNOWN;
557}
@ PEBL_WINDOWWIDTH
Definition PEvent.h:51
PEBL_Keycode
Definition PKeyboard.h:78
@ PEBL_KEYCODE_ANYKEY
Definition PKeyboard.h:329
void SignalFatalError(const std::string &message)

References PDT_KEYBOARD, PDT_MOUSE_BUTTON, PDT_MOUSE_MOVEMENT, PDT_MOUSE_WHEEL, PDT_MOVIE_END, PDT_MOVIE_REFRESH, PDT_TEXT_EDITING, PDT_TEXT_INPUT, PDT_TIMER, PDT_UNKNOWN, PDT_WINDOW_RESIZE, PEBL_KEYCODE_ANYKEY, PEBL_UNKNOWN, PEBL_WINDOWWIDTH, and PError::SignalFatalError().

◆ GetTextEditingEvent()

PEBL_TextEditingEvent PEvent::GetTextEditingEvent ( ) const

Definition at line 312 of file PEvent.cpp.

313{
314 if(PDT_TEXT_EDITING == mType )
315 return mEvent.textEditingEvent;
316 else
317 {
319 tmp.window =0;
320 tmp.text = (char*)""; //depracated warning send by this
321 return tmp;
322 }
323}
unsigned int window
Definition PEvent.h:76

References PDT_TEXT_EDITING, PEBL_TextEditingEvent::text, and PEBL_TextEditingEvent::window.

Referenced by PEvent().

◆ GetTextInputEvent()

PEBL_TextInputEvent PEvent::GetTextInputEvent ( ) const

Definition at line 324 of file PEvent.cpp.

325{
326 if(PDT_TEXT_INPUT== mType )
327 return mEvent.textInputEvent;
328 else
329 {
330
332 tmp.window =0;
333 tmp.text = (char*)"";
334 tmp.start=0;
335 tmp.length=0;
336
337 return tmp;
338 }
339}
unsigned int window
Definition PEvent.h:85
unsigned int length
Definition PEvent.h:88
unsigned int start
Definition PEvent.h:87

References PEBL_TextInputEvent::length, PDT_TEXT_INPUT, PEBL_TextInputEvent::start, PEBL_TextInputEvent::text, and PEBL_TextInputEvent::window.

Referenced by PEBLEnvironment::GetInput0(), and PEvent().

◆ GetType()

◆ GetWindowEvent()

PEBL_WindowEvent PEvent::GetWindowEvent ( ) const

Definition at line 432 of file PEvent.cpp.

433{
434 if(PDT_WINDOW_RESIZE == mType)
435 return mEvent.windowEvent;
436 else
437 {
439 tmp.w = 0;
440 tmp.h = 0;
441 return tmp;
442 }
443
444}

References PEBL_WindowEvent::h, PDT_WINDOW_RESIZE, and PEBL_WindowEvent::w.

◆ operator Variant()

PEvent::operator Variant ( )

Definition at line 208 of file PEvent.cpp.

209{
210
211 Variant ret;
212
213 //cout << "Changing to variant: " << GetType() << endl;
214 switch(GetType())
215 {
217 {
219 PList * newlist = new PList();
220 newlist->PushBack(Variant((int)mbe.x));
221 newlist->PushBack(Variant((int)mbe.y));
222 newlist->PushBack(Variant((int)mbe.relx));
223 newlist->PushBack(Variant((int)mbe.rely));
225 PComplexData * pcd = new PComplexData(newlist2);
226
227 ret = Variant(pcd);
228 }
229 break;
230
231
232 case PDT_MOUSE_BUTTON:
233 {
235 PList * newlist = new PList();
236 newlist->PushBack(Variant((int)mbe.x));
237 newlist->PushBack(Variant((int)mbe.y));
238 newlist->PushBack(Variant((int)mbe.button));
239 newlist->PushBack(Variant((int)mbe.state));
241 PComplexData * pcd = new PComplexData(newlist2);
242
243 ret = Variant(pcd);
244 }
245 break;
246
247 case PDT_MOUSE_WHEEL:
248 {
250 PList * newlist = new PList();
251
252 newlist->PushBack(Variant((int)mwe.x));
253 newlist->PushBack(Variant((int)mwe.y));
254 newlist->PushBack(Variant((int)mwe.deltax));
255 newlist->PushBack(Variant((int)mwe.deltay));
256 newlist->PushBack(Variant((int)mwe.direction));
258 PComplexData * pcd = new PComplexData(newlist2);
259
260 ret = Variant(pcd);
261 }
262 break;
263
264
265 case PDT_KEYBOARD:
266 {
269 }
270 break;
271 case PDT_TIMER:
272 ret = Variant("<timeout>");
273 break;
274
275 case PDT_TEXT_INPUT:
276 {
278 ret = Variant(ptie.text);
279 }
280 break;
281
282 default:
283 {
284 ret = Variant("<UNKNOWN_EVENT>");
285 }
286 }
287
288 ret.SetCreationTime(mEventTime);
289 return ret;
290
291}
Definition PList.h:45
void PushBack(const Variant &v)
Definition PList.cpp:149
void SetCreationTime(long unsigned int time)
Definition Variant.h:184
std::string TranslateKeycode(const PEBL_Keycode key, int modkeys)

References PEBL_MouseButtonEvent::button, PEBL_MouseWheelEvent::deltax, PEBL_MouseWheelEvent::deltay, PEBL_MouseWheelEvent::direction, PEBL_KeyboardEvent::key, PDT_KEYBOARD, PDT_MOUSE_BUTTON, PDT_MOUSE_MOVEMENT, PDT_MOUSE_WHEEL, PDT_TEXT_INPUT, PDT_TIMER, PList::PushBack(), PEBL_MouseMovementEvent::relx, PEBL_MouseMovementEvent::rely, Variant::SetCreationTime(), PEBL_MouseButtonEvent::state, PEBL_TextInputEvent::text, PEBLUtility::TranslateKeycode(), PEBL_MouseMovementEvent::x, PEBL_MouseButtonEvent::x, PEBL_MouseWheelEvent::x, PEBL_MouseMovementEvent::y, PEBL_MouseButtonEvent::y, and PEBL_MouseWheelEvent::y.

◆ SetDummyEvent()

void PEvent::SetDummyEvent ( const PEBL_DummyEvent evt)

Definition at line 183 of file PEvent.cpp.

184{
185 mEvent.dummyEvent = evt;
186}

Referenced by PEventLoop::Loop1().

◆ SetKeyboardEvent()

void PEvent::SetKeyboardEvent ( const PEBL_KeyboardEvent evt)

Definition at line 122 of file PEvent.cpp.

123{
124 mType = PDT_KEYBOARD;
125 mEvent.keyboardEvent = evt;
126}

References PDT_KEYBOARD.

Referenced by PlatformEventQueue::Prime().

◆ SetMouseButtonEvent()

void PEvent::SetMouseButtonEvent ( const PEBL_MouseButtonEvent evt)

Definition at line 149 of file PEvent.cpp.

150{
151 mType = PDT_MOUSE_BUTTON;
152 mEvent.mouseButtonEvent = evt;
153}

References PDT_MOUSE_BUTTON.

Referenced by PlatformEventQueue::Prime().

◆ SetMouseMovementEvent()

void PEvent::SetMouseMovementEvent ( const PEBL_MouseMovementEvent evt)

Definition at line 143 of file PEvent.cpp.

144{
145 mType = PDT_MOUSE_MOVEMENT;
146 mEvent.mouseMovementEvent = evt;
147}

References PDT_MOUSE_MOVEMENT.

Referenced by PlatformEventQueue::Prime().

◆ SetMouseWheelEvent()

void PEvent::SetMouseWheelEvent ( const PEBL_MouseWheelEvent evt)

Definition at line 157 of file PEvent.cpp.

158{
159 mType = PDT_MOUSE_WHEEL;
160 mEvent.mouseWheelEvent = evt;
161}

References PDT_MOUSE_WHEEL.

Referenced by PlatformEventQueue::Prime().

◆ SetMovieEndEvent()

void PEvent::SetMovieEndEvent ( const PEBL_MovieEndEvent evt)

Definition at line 169 of file PEvent.cpp.

170{
171 mType = PDT_MOVIE_END;
172 mEvent.movieEndEvent = evt;
173}

References PDT_MOVIE_END.

◆ SetMovieRefreshEvent()

void PEvent::SetMovieRefreshEvent ( const PEBL_MovieRefreshEvent evt)

Definition at line 163 of file PEvent.cpp.

164{
165 mType = PDT_MOVIE_REFRESH;
166 mEvent.movieRefreshEvent = evt;
167}

References PDT_MOVIE_REFRESH.

◆ SetPortEvent()

void PEvent::SetPortEvent ( const PEBL_PortEvent evt)

◆ SetTextEditingEvent()

void PEvent::SetTextEditingEvent ( const PEBL_TextEditingEvent evt)

Definition at line 130 of file PEvent.cpp.

131{
132 mType = PDT_TEXT_EDITING;
133 mEvent.textEditingEvent= evt;
134}

References PDT_TEXT_EDITING.

◆ SetTextInputEvent()

void PEvent::SetTextInputEvent ( const PEBL_TextInputEvent evt)

Definition at line 136 of file PEvent.cpp.

137{
138 mType = PDT_TEXT_INPUT;
139 mEvent.textInputEvent = evt;
140}

References PDT_TEXT_INPUT.

Referenced by PlatformEventQueue::Prime().

◆ SetWindowEvent()

void PEvent::SetWindowEvent ( const PEBL_WindowEvent evt)

Definition at line 175 of file PEvent.cpp.

176{
177
178 mType = PDT_WINDOW_RESIZE;
179 mEvent.windowEvent = evt;
180}

References PDT_WINDOW_RESIZE.

Referenced by PlatformEventQueue::Prime().

Member Data Documentation

◆ dummyEvent

PEBL_DummyEvent PEvent::dummyEvent

Definition at line 214 of file PEvent.h.

◆ keyboardEvent

PEBL_KeyboardEvent PEvent::keyboardEvent

Definition at line 204 of file PEvent.h.

◆ mouseButtonEvent

PEBL_MouseButtonEvent PEvent::mouseButtonEvent

Definition at line 208 of file PEvent.h.

◆ mouseMovementEvent

PEBL_MouseMovementEvent PEvent::mouseMovementEvent

Definition at line 207 of file PEvent.h.

◆ mouseWheelEvent

PEBL_MouseWheelEvent PEvent::mouseWheelEvent

Definition at line 209 of file PEvent.h.

◆ movieEndEvent

PEBL_MovieEndEvent PEvent::movieEndEvent

Definition at line 212 of file PEvent.h.

◆ movieRefreshEvent

PEBL_MovieRefreshEvent PEvent::movieRefreshEvent

Definition at line 211 of file PEvent.h.

◆ portEvent

PEBL_PortEvent PEvent::portEvent

Definition at line 210 of file PEvent.h.

◆ textEditingEvent

PEBL_TextEditingEvent PEvent::textEditingEvent

Definition at line 205 of file PEvent.h.

◆ textInputEvent

PEBL_TextInputEvent PEvent::textInputEvent

Definition at line 206 of file PEvent.h.

◆ windowEvent

PEBL_WindowEvent PEvent::windowEvent

Definition at line 213 of file PEvent.h.


The documentation for this class was generated from the following files: