Moka libraries
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
image-3d-cea.hh
Go to the documentation of this file.
1 /*
2  * lib-extraction-images : Extraction de cartes à partir d'images 2D et 3D.
3  * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC
4  * http://www.sic.sp2mi.univ-poitiers.fr/
5  * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS,
6  * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/
7  *
8  * This file is part of lib-extraction-images
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 //******************************************************************************
25 #ifndef IMAGE_3D_CEA_HH
26 #define IMAGE_3D_CEA_HH
27 //******************************************************************************
28 #include "alt-stdint.hh"
29 #include "image-3d.hh"
30 #include "inline-macro.hh"
31 
32 #include <fstream>
33 #include <string>
34 #include <cstring>
35 //******************************************************************************
36 
40 namespace GMap3d
41 {
42  class CImage3dCEA: public CImage3d
43  {
44  public:
45  CImage3dCEA(const std::string & AFilename,
46  int AFirstPlane = 0, int ANbPlaneToRead = 0);
47 
48  ~CImage3dCEA();
49 
50  bool sameVoxel(unsigned int Ax1, unsigned int Ay1, bool Az1,
51  unsigned int Ax2, unsigned int Ay2, bool Az2) const;
52 
54  bool sameVoxel(unsigned int Ax, unsigned int Ay, bool Az,
55  int ARed, int, int, int) const;
56 
57  protected:
58  bool readData();
59  void freePlane(bool AActuPlane);
60  void pushPlane();
61 
62  private:
63  uint8_t** allocArray();
64  void freeArray(uint8_t** AArray);
65 
66  std::ifstream FStream;
67  std::streampos FStreamPos;
68  bool readVoxel(int* Ax, int* Ay, int* Az, uint8_t* AColor);
69  void unreadLastVoxel();
70  bool findPlaneSize();
71 
72  int FXMin, FXMax; unsigned int FXStep;
73  int FYMin, FYMax; unsigned int FYStep;
74 
75  uint8_t** FPrevPlane;
76  uint8_t** FActuPlane;
77  };
78 
79 } // namespace GMap3d
80 //******************************************************************************
81 #include INCLUDE_INLINE("image-3d-cea.icc")
82 //******************************************************************************
83 #endif // IMAGE_3D_CEA_HH
84 //******************************************************************************