home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 mARCH / PCWK3A99.iso / Linux / DDD331 / DDD-3_1_.000 / DDD-3_1_ / ddd-3.1.1 / ddd / events.C < prev    next >
C/C++ Source or Header  |  1998-03-25  |  4KB  |  195 lines

  1. // $Id: events.C,v 1.9 1998/03/25 12:45:41 zeller Exp $
  2. // Event access
  3.  
  4. // Copyright (C) 1995 Technische Universitaet Braunschweig, Germany.
  5. // Written by Andreas Zeller <zeller@ips.cs.tu-bs.de>.
  6. // 
  7. // This file is part of DDD.
  8. // 
  9. // DDD is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public
  11. // License as published by the Free Software Foundation; either
  12. // version 2 of the License, or (at your option) any later version.
  13. // 
  14. // DDD 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.
  17. // See the GNU General Public License for more details.
  18. // 
  19. // You should have received a copy of the GNU General Public
  20. // License along with DDD -- see the file COPYING.
  21. // If not, write to the Free Software Foundation, Inc.,
  22. // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  23. // 
  24. // DDD is the data display debugger.
  25. // For details, see the DDD World-Wide-Web page, 
  26. // `http://www.cs.tu-bs.de/softech/ddd/',
  27. // or send a mail to the DDD developers <ddd@ips.cs.tu-bs.de>.
  28.  
  29. char events_rcsid[] =
  30.     "$Id: events.C,v 1.9 1998/03/25 12:45:41 zeller Exp $";
  31.  
  32. #include "events.h"
  33.  
  34. static void invalid_event(char *func)
  35. {
  36.     cerr << func << ": invalid event\n";
  37. }
  38.  
  39. // Event location
  40. BoxPoint point(XEvent *ev)
  41. {
  42.     if (ev == 0)
  43.     {
  44.     // LessTif 0.79 and Motif 1.1 sometimes pass NULL as event;
  45.     // provide some reasonable default
  46.     invalid_event("point");
  47.     return BoxPoint();
  48.     }
  49.  
  50.     switch (ev->type)
  51.     {
  52.     case KeyPress:
  53.     case KeyRelease:
  54.         return BoxPoint(ev->xkey.x,
  55.                 ev->xkey.y);
  56.  
  57.     case ButtonPress:
  58.     case ButtonRelease:
  59.         return BoxPoint(ev->xbutton.x,
  60.                 ev->xbutton.y);
  61.  
  62.     case MotionNotify:
  63.         return BoxPoint(ev->xmotion.x,
  64.                 ev->xmotion.y);
  65.  
  66.     case EnterNotify:
  67.     case LeaveNotify:
  68.         return BoxPoint(ev->xcrossing.x,
  69.                 ev->xcrossing.y);
  70.  
  71.     case Expose:
  72.         return BoxPoint(ev->xexpose.x,
  73.                 ev->xexpose.y);
  74.  
  75.     case GraphicsExpose:
  76.         return BoxPoint(ev->xgraphicsexpose.x,
  77.                 ev->xgraphicsexpose.y);
  78.  
  79.     case CreateNotify:
  80.         return BoxPoint(ev->xcreatewindow.x,
  81.                 ev->xcreatewindow.y);
  82.  
  83.     case ReparentNotify:
  84.         return BoxPoint(ev->xreparent.x,
  85.                 ev->xreparent.y);
  86.  
  87.     case ConfigureNotify:
  88.         return BoxPoint(ev->xconfigure.x,
  89.                 ev->xconfigure.y);
  90.  
  91.     case GravityNotify:
  92.         return BoxPoint(ev->xgravity.x,
  93.                 ev->xgravity.y);
  94.  
  95.     case ConfigureRequest:
  96.         return BoxPoint(ev->xconfigurerequest.x,
  97.                 ev->xconfigurerequest.y);
  98.  
  99.     default:
  100.         invalid_event("point");
  101.         return BoxPoint();
  102.     }
  103. }
  104.  
  105.  
  106. // Event time
  107. Time time(XEvent *ev)
  108. {
  109.     if (ev == 0)
  110.     {
  111.     // LessTif 0.79 and Motif 1.1 sometimes pass NULL as event;
  112.     // provide some reasonable default
  113.     invalid_event("time");
  114.     return CurrentTime;
  115.     }
  116.  
  117.     switch (ev->type)
  118.     {
  119.     case KeyPress:
  120.     case KeyRelease:
  121.         return ev->xkey.time;
  122.  
  123.     case ButtonPress:
  124.     case ButtonRelease:
  125.         return ev->xbutton.time;
  126.  
  127.     case MotionNotify:
  128.         return ev->xbutton.time;
  129.  
  130.     case EnterNotify:
  131.     case LeaveNotify:
  132.         return ev->xcrossing.time;
  133.  
  134.     case PropertyNotify:
  135.         return ev->xproperty.time;
  136.  
  137.     case SelectionClear:
  138.         return ev->xselectionclear.time;
  139.  
  140.     case SelectionRequest:
  141.         return ev->xselectionrequest.time;
  142.  
  143.     case SelectionNotify:
  144.         return ev->xselection.time;
  145.  
  146.     default:
  147.         invalid_event("time");
  148.         return CurrentTime;
  149.     }
  150. }
  151.  
  152.  
  153. // Event size
  154. BoxSize size(XEvent *ev)
  155. {
  156.     if (ev == 0)
  157.     {
  158.     // LessTif 0.79 and Motif 1.1 sometimes pass NULL as event;
  159.     // provide some reasonable default
  160.     invalid_event("size");
  161.     return BoxSize(0, 0);
  162.     }
  163.  
  164.     switch (ev->type)
  165.     {
  166.     case Expose:
  167.         return BoxSize(ev->xexpose.width,
  168.                ev->xexpose.height);
  169.  
  170.     case GraphicsExpose:
  171.         return BoxSize(ev->xgraphicsexpose.width,
  172.                ev->xgraphicsexpose.height);
  173.  
  174.     case CreateNotify:
  175.         return BoxSize(ev->xcreatewindow.width,
  176.                ev->xcreatewindow.height);
  177.  
  178.     case ConfigureNotify:
  179.         return BoxSize(ev->xconfigure.width,
  180.                ev->xconfigure.height);
  181.  
  182.     case ResizeRequest:
  183.         return BoxSize(ev->xresizerequest.width,
  184.                ev->xresizerequest.height);
  185.  
  186.     case ConfigureRequest:
  187.         return BoxSize(ev->xconfigurerequest.width, 
  188.                ev->xconfigurerequest.height);
  189.  
  190.     default:
  191.         invalid_event("size");
  192.         return BoxSize(0, 0);
  193.     }
  194. }
  195.