Artec 3D Scanning SDK  2.0
IRangeImageCylindric.h
Go to the documentation of this file.
1 /********************************************************************
2 *
3 * Project Artec 3D Scanning SDK
4 *
5 * Purpose: Declaration of basic range image data structure
6 *
7 * Copyright: Artec Group
8 *
9 ********************************************************************/
10 
11 #ifndef _IRANGEIMAGECYLINDRIC_H_
12 #define _IRANGEIMAGECYLINDRIC_H_
13 
15 #include <artec/sdk/base/Types.h>
16 #include <artec/sdk/base/Errors.h>
17 #include <artec/sdk/base/IRef.h>
18 
19 namespace artec { namespace sdk { namespace base
20 {
21 
22 class IImage;
23 class IMesh;
24 class IFrameMesh;
25 class IRangeImageCylindric;
26 struct SettingsCylindric;
27 
28 extern "C"
29 {
30 
32  createRangeImageCylindric( IRangeImageCylindric** image, const SettingsCylindric& settings, const IMesh* mesh );
33 
34 }
35 
36 /**
37 * Structure of settings (for AOP format in cylindrical coordinates)
38 */
39 
41 {
43  float emptyValue;
44 
46  float height;
48 };
49 
50 /**
51 * Interface for range image settings (for AOP format in cylindrical coordinates)
52 */
53 
54 class IRangeImageCylindric : public IRef
55 {
56 public:
57 
58  /// @returns settings of range image
59  virtual const SettingsCylindric& getSettings() const = 0;
60 
61  /// @returns true if range image is closed (closed can be polar or cylindric range image)
62  virtual bool isClosed() const = 0;
63 
64  /// @returns emptyValue depending on the current map type
65  virtual float getEmptyValue() const = 0;
66 
67  /// @returns the depth image
68  virtual IImage* getImage() const = 0;
69 
70  /// Builds 3D surface and calculates some additional data
71  /// @param surf - surface to be built from the range image
72  /// @param catcTex - flag shows if texture coordinates have to be calculated (currently not realized for Polar)
73  virtual ErrorCode toSurface(IFrameMesh** surf, bool calcTex = false) const = 0;
74 
75  /// Shrink the image vertically
76  ///
77  /// @retval ErrorCode_ArgumentInvalid if start_row<0 or (start_row+new_height)>height.
78  virtual ErrorCode shrinkHeight( int start_row, int new_height ) = 0;
79 };
80 
81 } } } // namespace artec::sdk::base
82 
83 #endif //_IRANGEIMAGECYLINDRIC_H_
virtual const SettingsCylindric & getSettings() const =0
virtual float getEmptyValue() const =0
Interface for common raster image objects.
Definition: IImage.h:126
virtual bool isClosed() const =0
virtual ErrorCode shrinkHeight(int start_row, int new_height)=0
Shrink the image vertically.
Indexed triangle mesh with optional texture.
Definition: IFrameMesh.h:42
virtual ErrorCode toSurface(IFrameMesh **surf, bool calcTex=false) const =0
Builds 3D surface and calculates some additional data.
virtual IImage * getImage() const =0
ErrorCode ABASESDK_LINK_SPEC createRangeImageCylindric(IRangeImageCylindric **image, const SettingsCylindric &settings, const IMesh *mesh)
Image size defined by width and height.
Definition: Types.h:24
Structure of settings (for AOP format in cylindrical coordinates)
#define ABASESDK_LINK_SPEC
Interface that implements reference counting and life-time management.
Definition: IRef.h:22
Interface for range image settings (for AOP format in cylindrical coordinates)