summaryrefslogtreecommitdiff
path: root/src/SelectBasics/SelectBasics_SortAlgo.cxx
blob: b17c0f0d911d96be3021f68511963f4e21c1857e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// File:	SelectBasics_SortAlgo.cxx
// Created:	Mon Apr 18 14:30:38 1994
// Author:	Didier PIFFAULT
//		<dpf@zerox>

#include <SelectBasics_SortAlgo.ixx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
#include <TColStd_MapOfInteger.hxx>
#include <gp_Pnt2d.hxx>

//=======================================================================
//function : SelectBasics_SortAlgo
//purpose  : 
//=======================================================================
SelectBasics_SortAlgo::SelectBasics_SortAlgo()
     : sizeArea(0.)
{}

//=======================================================================
//function : SelectBasics_SortAlgo
//purpose  : 
//=======================================================================
SelectBasics_SortAlgo::SelectBasics_SortAlgo 
  (const Bnd_Box2d& ClippingRectangle,
   const Standard_Real sizeOfSensitiveArea, 
   const Handle_Bnd_HArray1OfBox2d& theRectangles)
: clipRect(ClippingRectangle), sizeArea(sizeOfSensitiveArea)
{
  sortedRect.Initialize(clipRect, theRectangles);
}

//=======================================================================
//function : Initialize
//purpose  : 
//=======================================================================
void SelectBasics_SortAlgo::Initialize(const Bnd_Box2d& ClippingRectangle, 
				  const Standard_Real sizeOfSensitiveArea, 
				  const Handle_Bnd_HArray1OfBox2d& theRectangles)
{
  clipRect=ClippingRectangle;
  sizeArea=sizeOfSensitiveArea;
  sortedRect.Initialize(clipRect, theRectangles);
}

//=======================================================================
//function : Select
//purpose  : 
//=======================================================================
void SelectBasics_SortAlgo::InitSelect(const Standard_Real x,
				  const Standard_Real y)
{
  Bnd_Box2d rep;
  rep.Set(gp_Pnt2d(x, y));
  rep.Enlarge(sizeArea);
  myMap.Clear() ;
  TColStd_ListIteratorOfListOfInteger It(sortedRect.Compare(rep));
  for(;It.More();It.Next()){
    myMap.Add(It.Value());
  }
  curResult.Initialize(myMap);
}

//=======================================================================
//function : Select
//purpose  : 
//=======================================================================
void SelectBasics_SortAlgo::InitSelect(const Bnd_Box2d& rect)
{
  myMap.Clear() ;
  TColStd_ListIteratorOfListOfInteger It(sortedRect.Compare(rect));
  for(;It.More();It.Next()){
    myMap.Add(It.Value());
  }
  curResult.Initialize(myMap);

}

//=======================================================================
//function : More
//purpose  : 
//=======================================================================
Standard_Boolean SelectBasics_SortAlgo::More()  const
{
  return curResult.More();
}

//=======================================================================
//function : Next
//purpose  : 
//=======================================================================
void SelectBasics_SortAlgo::Next() 
{
  curResult.Next();
}


//=======================================================================
//function : Value
//purpose  : 
//=======================================================================
Standard_Integer SelectBasics_SortAlgo::Value() const
{
  return curResult.Key();
}