Xinqi Bao's Git
2 Buffer for reading binary STL file
4 #include "BufferReadBinary.hh"
6 BufferReadBinary::BufferReadBinary(std::string
& fileTarget
)
7 : remain(0), readIn(0), numTrianglesInBlock(0)
9 prebuffer
= new char[PREBUFFER_SIZE
+ BUFFER_SIZE
];
10 buffer
= prebuffer
+ PREBUFFER_SIZE
;
11 fn
= open(fileTarget
.c_str(), O_RDONLY
);
12 readIn
= read(fn
, buffer
, BUFFER_SIZE
);
14 numTrianglesInFile
= *(uint32_t*)phead
;
15 phead
+= sizeof(uint32_t);
17 numTrianglesInBlock
= readIn
/ 50;
20 BufferReadBinary::~BufferReadBinary()
25 uint32_t BufferReadBinary::getNumTrianglesInFile()
27 return numTrianglesInFile
;
29 uint32_t BufferReadBinary::getNumTrianglesInBlock()
31 return numTrianglesInBlock
;
33 void BufferReadBinary::step2Bytes() { phead
+= 2; }
34 void BufferReadBinary::stepFloat() { phead
+= sizeof(float); }
35 float BufferReadBinary::getFloat() { return *(float*)phead
; }
36 void BufferReadBinary::readBuffer()
38 char* pd
= buffer
- remain
;
39 char* pf
= buffer
+ BUFFER_SIZE
- remain
;
40 for (int i
= remain
; i
> 0; i
--, pd
++, pf
++) *pd
= *pf
;
41 readIn
= read(fn
, buffer
, BUFFER_SIZE
);
42 phead
= buffer
- remain
;
43 numTrianglesInBlock
= (readIn
+ remain
) / 50;
44 remain
= (readIn
+ remain
) % 50;