00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 INLINE bool MouseWatcher::
00023 has_mouse() const {
00024 return _has_mouse;
00025 }
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 INLINE bool MouseWatcher::
00036 is_mouse_open() const {
00037 return _has_mouse && (_internal_suppress & MouseWatcherRegion::SF_mouse_position) == 0;
00038 }
00039
00040
00041
00042
00043
00044
00045
00046
00047 INLINE const LPoint2 &MouseWatcher::
00048 get_mouse() const {
00049 #ifndef NDEBUG
00050 static LPoint2 bogus_mouse(0.0f, 0.0f);
00051 nassertr(_has_mouse, bogus_mouse);
00052 #endif
00053 return _mouse;
00054 }
00055
00056
00057
00058
00059
00060
00061
00062
00063 INLINE PN_stdfloat MouseWatcher::
00064 get_mouse_x() const {
00065 nassertr(_has_mouse, 0.0f);
00066 return _mouse[0];
00067 }
00068
00069
00070
00071
00072
00073
00074
00075
00076 INLINE PN_stdfloat MouseWatcher::
00077 get_mouse_y() const {
00078 nassertr(_has_mouse, 0.0f);
00079 return _mouse[1];
00080 }
00081
00082
00083
00084
00085
00086
00087
00088 INLINE void MouseWatcher::
00089 set_frame(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top) {
00090 set_frame(LVecBase4(left, right, bottom, top));
00091 }
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 INLINE void MouseWatcher::
00110 set_frame(const LVecBase4 &frame) {
00111 _frame = frame;
00112 }
00113
00114
00115
00116
00117
00118
00119
00120 INLINE const LVecBase4 &MouseWatcher::
00121 get_frame() const {
00122 return _frame;
00123 }
00124
00125
00126
00127
00128
00129
00130
00131 INLINE bool MouseWatcher::
00132 is_over_region() const {
00133 return get_over_region() != (MouseWatcherRegion *)NULL;
00134 }
00135
00136
00137
00138
00139
00140
00141
00142 INLINE bool MouseWatcher::
00143 is_over_region(PN_stdfloat x, PN_stdfloat y) const {
00144 return get_over_region(x, y) != (MouseWatcherRegion *)NULL;
00145 }
00146
00147
00148
00149
00150
00151
00152
00153 INLINE bool MouseWatcher::
00154 is_over_region(const LPoint2 &pos) const {
00155 return get_over_region(pos) != (MouseWatcherRegion *)NULL;
00156 }
00157
00158
00159
00160
00161
00162
00163
00164 INLINE MouseWatcherRegion *MouseWatcher::
00165 get_over_region() const {
00166 return _preferred_region;
00167 }
00168
00169
00170
00171
00172
00173
00174
00175 INLINE MouseWatcherRegion *MouseWatcher::
00176 get_over_region(PN_stdfloat x, PN_stdfloat y) const {
00177 return get_over_region(LPoint2(x, y));
00178 }
00179
00180
00181
00182
00183
00184
00185
00186 INLINE bool MouseWatcher::
00187 is_button_down(ButtonHandle button) const {
00188 return _inactivity_state != IS_inactive && _current_buttons_down.get_bit(button.get_index());
00189 }
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205 INLINE void MouseWatcher::
00206 set_button_down_pattern(const string &pattern) {
00207 _button_down_pattern = pattern;
00208 }
00209
00210
00211
00212
00213
00214
00215
00216
00217 INLINE const string &MouseWatcher::
00218 get_button_down_pattern() const {
00219 return _button_down_pattern;
00220 }
00221
00222
00223
00224
00225
00226
00227
00228
00229 INLINE void MouseWatcher::
00230 set_button_up_pattern(const string &pattern) {
00231 _button_up_pattern = pattern;
00232 }
00233
00234
00235
00236
00237
00238
00239
00240
00241 INLINE const string &MouseWatcher::
00242 get_button_up_pattern() const {
00243 return _button_up_pattern;
00244 }
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261 INLINE void MouseWatcher::
00262 set_button_repeat_pattern(const string &pattern) {
00263 _button_repeat_pattern = pattern;
00264 }
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274 INLINE const string &MouseWatcher::
00275 get_button_repeat_pattern() const {
00276 return _button_repeat_pattern;
00277 }
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289 INLINE void MouseWatcher::
00290 set_enter_pattern(const string &pattern) {
00291 _enter_pattern = pattern;
00292 }
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303 INLINE const string &MouseWatcher::
00304 get_enter_pattern() const {
00305 return _enter_pattern;
00306 }
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318 INLINE void MouseWatcher::
00319 set_leave_pattern(const string &pattern) {
00320 _leave_pattern = pattern;
00321 }
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332 INLINE const string &MouseWatcher::
00333 get_leave_pattern() const {
00334 return _leave_pattern;
00335 }
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347 INLINE void MouseWatcher::
00348 set_within_pattern(const string &pattern) {
00349 _within_pattern = pattern;
00350 }
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361 INLINE const string &MouseWatcher::
00362 get_within_pattern() const {
00363 return _within_pattern;
00364 }
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376 INLINE void MouseWatcher::
00377 set_without_pattern(const string &pattern) {
00378 _without_pattern = pattern;
00379 }
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391 INLINE const string &MouseWatcher::
00392 get_without_pattern() const {
00393 return _without_pattern;
00394 }
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405 INLINE void MouseWatcher::
00406 set_geometry(PandaNode *node) {
00407 _geometry = node;
00408 }
00409
00410
00411
00412
00413
00414
00415
00416
00417 INLINE bool MouseWatcher::
00418 has_geometry() const {
00419 return !_geometry.is_null();
00420 }
00421
00422
00423
00424
00425
00426
00427
00428
00429 INLINE PandaNode *MouseWatcher::
00430 get_geometry() const {
00431 return _geometry;
00432 }
00433
00434
00435
00436
00437
00438
00439
00440 INLINE void MouseWatcher::
00441 clear_geometry() {
00442 _geometry.clear();
00443 }
00444
00445
00446
00447
00448
00449
00450
00451
00452 INLINE void MouseWatcher::
00453 set_extra_handler(EventHandler *eh) {
00454 _eh = eh;
00455 }
00456
00457
00458
00459
00460
00461
00462
00463
00464 INLINE EventHandler *MouseWatcher::
00465 get_extra_handler() const {
00466 return _eh;
00467 }
00468
00469
00470
00471
00472
00473
00474
00475
00476 INLINE void MouseWatcher::
00477 set_modifier_buttons(const ModifierButtons &mods) {
00478 _mods = mods;
00479 }
00480
00481
00482
00483
00484
00485
00486
00487 INLINE ModifierButtons MouseWatcher::
00488 get_modifier_buttons() const {
00489 return _mods;
00490 }
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506 INLINE void MouseWatcher::
00507 set_display_region(DisplayRegion *dr) {
00508 _display_region = dr;
00509 _button_down_display_region = NULL;
00510 }
00511
00512
00513
00514
00515
00516
00517
00518
00519 INLINE void MouseWatcher::
00520 clear_display_region() {
00521 _display_region = NULL;
00522 _button_down_display_region = NULL;
00523 }
00524
00525
00526
00527
00528
00529
00530
00531
00532 INLINE DisplayRegion *MouseWatcher::
00533 get_display_region() const {
00534 return _display_region;
00535 }
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546 INLINE bool MouseWatcher::
00547 has_display_region() const {
00548 return (_display_region != (DisplayRegion *)NULL);
00549 }
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564
00565 INLINE void MouseWatcher::
00566 set_inactivity_timeout(double timeout) {
00567 _has_inactivity_timeout = true;
00568 _inactivity_timeout = timeout;
00569 note_activity();
00570 }
00571
00572
00573
00574
00575
00576
00577
00578 INLINE bool MouseWatcher::
00579 has_inactivity_timeout() const {
00580 return _has_inactivity_timeout;
00581 }
00582
00583
00584
00585
00586
00587
00588
00589
00590 INLINE double MouseWatcher::
00591 get_inactivity_timeout() const {
00592 nassertr(_has_inactivity_timeout, 0.0);
00593 return _inactivity_timeout;
00594 }
00595
00596
00597
00598
00599
00600
00601
00602
00603 INLINE void MouseWatcher::
00604 clear_inactivity_timeout() {
00605 _has_inactivity_timeout = false;
00606 _inactivity_timeout = 0.0;
00607 note_activity();
00608 }
00609
00610
00611
00612
00613
00614
00615
00616
00617 INLINE void MouseWatcher::
00618 set_inactivity_timeout_event(const string &event) {
00619 _inactivity_timeout_event = event;
00620 }
00621
00622
00623
00624
00625
00626
00627
00628
00629 INLINE const string &MouseWatcher::
00630 get_inactivity_timeout_event() const {
00631 return _inactivity_timeout_event;
00632 }
00633
00634
00635
00636
00637
00638
00639
00640 INLINE void MouseWatcher::
00641 within_region(MouseWatcherRegion *region, const MouseWatcherParameter ¶m) {
00642 region->within_region(param);
00643 throw_event_pattern(_within_pattern, region, ButtonHandle::none());
00644 if (_enter_multiple) {
00645 enter_region(region, param);
00646 }
00647 }
00648
00649
00650
00651
00652
00653
00654
00655 INLINE void MouseWatcher::
00656 without_region(MouseWatcherRegion *region, const MouseWatcherParameter ¶m) {
00657 if (_enter_multiple) {
00658 exit_region(region, param);
00659 }
00660 region->without_region(param);
00661 throw_event_pattern(_without_pattern, region, ButtonHandle::none());
00662 }
00663
00664
00665
00666
00667
00668
00669
00670 INLINE void MouseWatcher::
00671 clear_trail_log() {
00672 _trail_log->clear();
00673 }
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687
00688 INLINE CPT(PointerEventList) MouseWatcher::
00689 get_trail_log() const {
00690 return _trail_log;
00691 }
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701 INLINE int MouseWatcher::
00702 num_trail_recent() const {
00703 return _num_trail_recent;
00704 }