Version: 8.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GLViewer_Tools.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 // Author : OPEN CASCADE
24 // File: GLViewer_Tools.h
25 // Created: April, 2005
26 //
27 #ifndef GLVIEWER_TOOLS_H
28 #define GLVIEWER_TOOLS_H
29 
30 #ifdef WIN32
31 #include "windows.h"
32 #endif
33 
34 #include "GLViewer.h"
35 
41 {
42 public:
43  //GLViewer_Tools();
44  //virtual ~GLViewer_Tools();
45  //static
46 
47 };
48 
51 {
52  FD_X = 0, /*along x axis*/
53  FD_Y /*along y axis*/
54 };
55 
64 {
65 public:
66  GLViewer_LineList( int );
67  virtual ~GLViewer_LineList();
68 
70  int count() const { return mySegmentNumber; }
72  int size() const { return myRealSize; }
73 
74  bool addSegment( double coord1, double coord2 );
75  bool removeSegment( int index );
76  bool removeSegment( double coord1, double coord2 );
77 
78  bool readSegment( int index, double& coord1, double& coord2 );
79 
81  int contains( double thePoint ) const;
82 
84  void setMainCoord( double theVal ) { myMainCoord = theVal; }
85  double mainCoord() const { return myMainCoord; }
86 
87  void clear();
88  void print();
89 
90  void show( FieldDim );
91 
93 
94 private:
95  double* myArray;
98 
99  double myMainCoord;
100 };
101 
103 struct GraphNode
104 {
105  int myCount;
109  int prevNodeIndex; //feedback for searching for solution
110 };
111 
114 {
120 };
121 
128 {
129 public:
132  {
133  FP_Start = 0,
134  FP_End = 1
135  };
136 
139  {
140  IS_ERROR = 0,
144  };
145 
148  {
149  ES_ERROR = 0,
152  };
153 
155  GLViewer_LineField( const int theMAXSize, const int xn, const int yn );
156  virtual ~GLViewer_LineField();
157 
159 
162  void addLine( FieldDim theDim, double theMC, double theBegin, double theEnd );
163 
165 
166  int insertLine( FieldDim theDim, GLViewer_LineList*, int thePosition );
168  int insertLine( FieldDim theDim, double theMC, double theBegin, double theEnd, int thePosition );
169 
171  static FieldDim invertDim( FieldDim );
172 
174  GLViewer_LineList* getLine( int index, FieldDim );
175 
177  void setBorders( double X1, double X2, double Y1, double Y2 );
179  void addRectangle( double top, double right, double bottom, double left );
180 
182  int* intersectIndexes( FieldDim theDim, int theIndex, const GLViewer_LineList* theLL , int& theSize );
183 
184  void print();
185 
186  void show();
187 
188  int getDimSize( FieldDim );
190  int segmentNumber();
191 
193  bool setPoint( FieldPoint, double x, double y );
194 
196 
197  void optimize();
199 
200  void initialize();
203 
205  double* solution( int& size );
206 
207 protected:
209  void iteration();
212 
214  int* findByCount( int& theParam );
216  int findBySegment( FieldDim, int coord1, int coord2, bool inCurArray = true );
217 
222 
224  int maxSegmentNum();
225 
228 
229 private:
231  ** myYLineArray;
232 
233  int myXSize,
234  myYSize;
235 
237  * myGraphArray2;
239 
241  myEndPoint;
243 };
244 
245 #endif //GLVIEWER_TOOLS_H