BPointCloud.h
1 // Copyright (c) Tech Soft 3D, Inc.
2 //
3 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc.,
4 // and considered a trade secret as defined under civil and criminal statutes.
5 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of
6 // unauthorized use or misappropriation of its trade secrets. Use of this information
7 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under
8 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use.
9 
10 #ifndef BBINFILETK_BPOINTCLOUD
11 #define BBINFILETK_BPOINTCLOUD
12 #include "BStreamFileToolkit.h"
13 
14 
15 #ifndef DOXYGEN_SHOULD_SKIP_THIS
16 
21 class BPointCloud
22 #ifdef HPS_CORE_BUILD
23  : public CMO
24 #endif
25 {
26  private:
27  class BKDTree *m_kd; //private helper class defined in BPointCloud.cpp
28  class BStreamFileToolkit *m_tk;
29  int m_resolution; //total bits per vertex, i.e. 3 * bits_per_sample
30  int m_max_val; //(1 << bits_per_sample) - 1
31  float m_bbox[6];
32  float m_cell_size[3]; //bbox size / m_max_val
33  int m_original_point_count; //the number of points in the original shell (and hence the point map length)
34  int m_point_count; //the number of unique points (possibly less than original shell)
35  float *m_points; //points list, stored in the order intrinsic to the kd tree, not the original shell
36  int *m_point_map;
37  int m_next_id;
38  unsigned char m_scheme; //format identifier
39 
40  void put( class BKDTree *kd, class BPack *pack, int num_bits );
41  TK_Status get( class BKDTree *b, class BPack *pack, int num_bits, int i, int j, int k, int span );
42 
43 
44  public:
46  BPointCloud( class BStreamFileToolkit *tk );
47  ~BPointCloud();
48 
50  enum scheme {
51  TKPC_Explicit = 0x0001
52  };
53 
54  //write time functions
55  TK_Status InitWrite( int resolution, const float *bbox, int original_point_count, const float *points );
56  int GetSizeUpperBound() const;
57  void Generate( unsigned char *buffer, int bytes_allocated, int *bytes_used );
58 
59  //read time functions
60  TK_Status InitRead( int resolution, const float *bbox, int original_point_count );
61  TK_Status Parse( const unsigned char *buffer, int size );
62  TK_Status GetPoints( float points[] );
63 
64 };
65 
66 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
67 #endif /* BBINFILETK_BPOINTCLOUD */
68 
69 
The BStreamFileToolkit class provides support for importing/exporting HOOPS Stream File information...
Definition: BStreamFileToolkit.h:367
TK_Status
Codes which can be either passed to various toolkit functions, or indicate the result of a toolkit fu...
Definition: BStream.h:278