home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / yacl-012.zip / uidemo / hit_test / appwin.cxx next >
C/C++ Source or Header  |  1995-03-28  |  2KB  |  82 lines

  1.  
  2.  
  3.  
  4. #include "ui/lineseg.h"
  5. #include "ui/piewedge.h"
  6. #include "ui/chord.h"
  7. #include "ui/arc.h"
  8. #include "ui/ellipse.h"
  9. #include "ui/dsplsurf.h"
  10. #include "ui/label.h"
  11.  
  12. #include "appwin.h"
  13.  
  14.  
  15. AppWindow::AppWindow()
  16. : UI_CompositeVObject (NULL, NULL, FALSE, UI_Rectangle (50, 50, 500, 300))
  17. {
  18.     Title() = "YACL hit-testing demo";
  19.     _status = new UI_Label (this, UI_Rectangle (10, 10, 400, 30));
  20.     _status->Title() = "Click anywhere";
  21.     _graphics.Add (new UI_LineSegment (UI_Point (150, 50), 3, 70));
  22.     _graphics.Add (new UI_Chord (UI_Rectangle (300, 80, 100, 200), 30*64,
  23.                                  100*64));
  24.     _graphics.Add (new UI_PieWedge (UI_Rectangle (150, 150, 100, 200), 30*64,
  25.                                     120*64));
  26.     _graphics.Add (new UI_Ellipse   (100, 50, UI_Point (70, 80)));
  27.     _graphics.Add (new UI_Rectangle (200, 50, 40, 40));
  28. }
  29.  
  30. AppWindow::~AppWindow()
  31. {
  32.     _graphics.DestroyContents();
  33. }
  34.  
  35.  
  36. void AppWindow::Initialize ()
  37. {
  38.     _bgColor = UIColor_White; 
  39. }
  40.  
  41.  
  42. bool AppWindow::Paint ()
  43. {
  44.     UI_DisplaySurface& sfc = CreateDisplaySurface ();
  45.     short n = _graphics.Size();
  46.     for (short i = 0; i < n; i++)
  47.         ((UI_GraphicObject*) _graphics[i])->DrawOn (sfc);
  48.     DestroyDisplaySurface ();
  49. }
  50.  
  51.  
  52. bool AppWindow::ButtonDown (const UI_Point& p, UI_MouseButton m,
  53.                             bool, bool)
  54. {
  55.     if (m != UIM_Left)
  56.         return FALSE;
  57.     short n = _graphics.Size();
  58.     UI_HitTest result;
  59.     for (short i = 0; i < n; i++) {
  60.         result = ((UI_GraphicObject*) _graphics[i])->HitTest (p);
  61.         if (result != UIHit_Outside)
  62.             break;
  63.     }
  64.     switch (result) {
  65.     case UIHit_Boundary:
  66.         _status->Title() = "On boundary of " +
  67.             CL_String (_graphics[i]->ClassName());
  68.         break;
  69.  
  70.     case UIHit_Inside:
  71.         _status->Title() = "Inside " + CL_String (_graphics[i]->ClassName());
  72.         break;
  73.         
  74.     case UIHit_Outside:
  75.         _status->Title() = "Outside";
  76.         break;
  77.     }
  78.     return TRUE;
  79. }
  80.  
  81.  
  82.