SBSPSS/Utils/MapEdit/Select.cpp
2000-12-29 22:20:38 +00:00

69 lines
1.5 KiB
C++

/***********************/
/*** Selection Class ***/
/***********************/
#include "stdafx.h"
#include "Select.h"
/*****************************************************************************/
CSelect::CSelect()
{
Invalidate();
}
/*****************************************************************************/
void CSelect::Invalidate()
{
Sel.SetRectEmpty();
Mode=0;
}
/*****************************************************************************/
bool CSelect::Handle(CPoint &Pnt,UINT Flags)
{
Flags&=(MK_LBUTTON | MK_RBUTTON);
if (!Mode && !Flags) return(false);
if (!Mode && Flags)
{ // Start new Selection
Start(Pnt,Flags);
}
// Order the points
Sel.SetRect(Pos0,Pnt);
Sel.NormalizeRect();
Sel.InflateRect(0,0,1,1); // extend to make valid sel (right and bottom are +1)
if (Mode && !Flags)
{
End(Pnt,Flags);
}
return(true);
}
/*****************************************************************************/
void CSelect::Start(CPoint &Pnt,UINT Flags)
{
Invalidate();
Mode=Flags;
Pos0=Pnt;
}
/*****************************************************************************/
void CSelect::End(CPoint &Pnt,UINT Flags)
{
Mode=0;
}
/*****************************************************************************/
bool CSelect::IsValid()
{
if (Sel.left==-1 || Sel.top==-1) return(false); // Invalid coords
return(!Sel.IsRectEmpty());
}
/*****************************************************************************/
bool CSelect::HasSelection()
{
if (Mode) return(false); // Still Selecting?
return(IsValid());
}