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 >
Wrap
C/C++ Source or Header
|
1995-03-28
|
2KB
|
82 lines
#include "ui/lineseg.h"
#include "ui/piewedge.h"
#include "ui/chord.h"
#include "ui/arc.h"
#include "ui/ellipse.h"
#include "ui/dsplsurf.h"
#include "ui/label.h"
#include "appwin.h"
AppWindow::AppWindow()
: UI_CompositeVObject (NULL, NULL, FALSE, UI_Rectangle (50, 50, 500, 300))
{
Title() = "YACL hit-testing demo";
_status = new UI_Label (this, UI_Rectangle (10, 10, 400, 30));
_status->Title() = "Click anywhere";
_graphics.Add (new UI_LineSegment (UI_Point (150, 50), 3, 70));
_graphics.Add (new UI_Chord (UI_Rectangle (300, 80, 100, 200), 30*64,
100*64));
_graphics.Add (new UI_PieWedge (UI_Rectangle (150, 150, 100, 200), 30*64,
120*64));
_graphics.Add (new UI_Ellipse (100, 50, UI_Point (70, 80)));
_graphics.Add (new UI_Rectangle (200, 50, 40, 40));
}
AppWindow::~AppWindow()
{
_graphics.DestroyContents();
}
void AppWindow::Initialize ()
{
_bgColor = UIColor_White;
}
bool AppWindow::Paint ()
{
UI_DisplaySurface& sfc = CreateDisplaySurface ();
short n = _graphics.Size();
for (short i = 0; i < n; i++)
((UI_GraphicObject*) _graphics[i])->DrawOn (sfc);
DestroyDisplaySurface ();
}
bool AppWindow::ButtonDown (const UI_Point& p, UI_MouseButton m,
bool, bool)
{
if (m != UIM_Left)
return FALSE;
short n = _graphics.Size();
UI_HitTest result;
for (short i = 0; i < n; i++) {
result = ((UI_GraphicObject*) _graphics[i])->HitTest (p);
if (result != UIHit_Outside)
break;
}
switch (result) {
case UIHit_Boundary:
_status->Title() = "On boundary of " +
CL_String (_graphics[i]->ClassName());
break;
case UIHit_Inside:
_status->Title() = "Inside " + CL_String (_graphics[i]->ClassName());
break;
case UIHit_Outside:
_status->Title() = "Outside";
break;
}
return TRUE;
}