mirror of
https://github.com/pgpointcloud/pointcloud.git
synced 2025-12-08 20:36:04 +00:00
CLang-format 3
This commit is contained in:
parent
f474049fad
commit
95dd80ddd9
@ -1,263 +1,226 @@
|
||||
/***********************************************************************
|
||||
* lazperf_adapter.cpp
|
||||
*
|
||||
* LazPerf compression/decompression
|
||||
*
|
||||
* Copyright (c) 2016 Paul Blottiere, Oslandia
|
||||
*
|
||||
***********************************************************************/
|
||||
* lazperf_adapter.cpp
|
||||
*
|
||||
* LazPerf compression/decompression
|
||||
*
|
||||
* Copyright (c) 2016 Paul Blottiere, Oslandia
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
#include "lazperf_adapter.hpp"
|
||||
|
||||
#ifdef HAVE_LAZPERF
|
||||
|
||||
/**********************************************************************
|
||||
* C API
|
||||
*/
|
||||
size_t
|
||||
lazperf_compress_from_uncompressed(const PCPATCH_UNCOMPRESSED *pa, uint8_t **compressed)
|
||||
{
|
||||
size_t size = 1;
|
||||
* C API
|
||||
*/
|
||||
size_t lazperf_compress_from_uncompressed(const PCPATCH_UNCOMPRESSED *pa,
|
||||
uint8_t **compressed) {
|
||||
size_t size = 1;
|
||||
|
||||
LazPerfBuf buf;
|
||||
LazPerfCompressor engine(pa->schema, buf);
|
||||
LazPerfBuf buf;
|
||||
LazPerfCompressor engine(pa->schema, buf);
|
||||
|
||||
if (engine.compress(pa->data, pa->datasize) == pa->npoints)
|
||||
{
|
||||
size = buf.buf.size();
|
||||
*compressed = (uint8_t*) malloc(size);
|
||||
*compressed = (uint8_t*) memcpy(*compressed, buf.data(), size);
|
||||
}
|
||||
if (engine.compress(pa->data, pa->datasize) == pa->npoints) {
|
||||
size = buf.buf.size();
|
||||
*compressed = (uint8_t *)malloc(size);
|
||||
*compressed = (uint8_t *)memcpy(*compressed, buf.data(), size);
|
||||
}
|
||||
|
||||
// log
|
||||
// lazperf_dump(pa);
|
||||
// lazperf_dump(*compressed, size);
|
||||
// log
|
||||
// lazperf_dump(pa);
|
||||
// lazperf_dump(*compressed, size);
|
||||
|
||||
return size;
|
||||
return size;
|
||||
}
|
||||
|
||||
size_t
|
||||
lazperf_uncompress_from_compressed(const PCPATCH_LAZPERF *pa, uint8_t **decompressed)
|
||||
{
|
||||
size_t size = -1;
|
||||
size_t datasize = pa->schema->size * pa->npoints;
|
||||
size_t lazperf_uncompress_from_compressed(const PCPATCH_LAZPERF *pa,
|
||||
uint8_t **decompressed) {
|
||||
size_t size = -1;
|
||||
size_t datasize = pa->schema->size * pa->npoints;
|
||||
|
||||
LazPerfBuf buf;
|
||||
buf.putBytes(pa->lazperf, pa->lazperfsize);
|
||||
LazPerfDecompressor engine(pa->schema, buf);
|
||||
LazPerfBuf buf;
|
||||
buf.putBytes(pa->lazperf, pa->lazperfsize);
|
||||
LazPerfDecompressor engine(pa->schema, buf);
|
||||
|
||||
*decompressed = (uint8_t*) malloc(datasize);
|
||||
*decompressed = (uint8_t *)malloc(datasize);
|
||||
|
||||
if (engine.decompress(*decompressed, datasize) == pa->npoints)
|
||||
size = buf.buf.size();
|
||||
if (engine.decompress(*decompressed, datasize) == pa->npoints)
|
||||
size = buf.buf.size();
|
||||
|
||||
// log
|
||||
// lazperf_dump(pa);
|
||||
// lazperf_dump(*decompressed, datasize);
|
||||
// log
|
||||
// lazperf_dump(pa);
|
||||
// lazperf_dump(*decompressed, datasize);
|
||||
|
||||
return size;
|
||||
return size;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* INTERNAL CPP
|
||||
*/
|
||||
* INTERNAL CPP
|
||||
*/
|
||||
// utility functions
|
||||
void
|
||||
lazperf_dump(uint8_t *data, const size_t size)
|
||||
{
|
||||
std::cout << "DUMP DATA: " << std::endl;
|
||||
std::cout << " - datasize: " << size << std::endl;
|
||||
std::cout << " - data: ";
|
||||
for (int i = 0; i < size; ++i)
|
||||
printf("%02x ", data[i]);
|
||||
std::cout << std::endl;
|
||||
void lazperf_dump(uint8_t *data, const size_t size) {
|
||||
std::cout << "DUMP DATA: " << std::endl;
|
||||
std::cout << " - datasize: " << size << std::endl;
|
||||
std::cout << " - data: ";
|
||||
for (int i = 0; i < size; ++i)
|
||||
printf("%02x ", data[i]);
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
void
|
||||
lazperf_dump(const PCPATCH_UNCOMPRESSED* p)
|
||||
{
|
||||
std::cout << std::endl;
|
||||
std::cout << "DUMP UNCOMPRESSED PATCH: " << std::endl;
|
||||
std::cout << " - type: " << p->type << std::endl;
|
||||
std::cout << " - schema->size " << p->schema->size << std::endl;
|
||||
std::cout << " - readonly: " << p->readonly << std::endl;
|
||||
std::cout << " - npoints: " << p->npoints << std::endl;
|
||||
std::cout << " - maxpoints: " << p->maxpoints << std::endl;
|
||||
std::cout << " - datasize: " << p->datasize << std::endl;
|
||||
std::cout << " - data: ";
|
||||
for (int i = 0; i < p->datasize; ++i)
|
||||
printf("%02x ", p->data[i]);
|
||||
std::cout << std::endl;
|
||||
void lazperf_dump(const PCPATCH_UNCOMPRESSED *p) {
|
||||
std::cout << std::endl;
|
||||
std::cout << "DUMP UNCOMPRESSED PATCH: " << std::endl;
|
||||
std::cout << " - type: " << p->type << std::endl;
|
||||
std::cout << " - schema->size " << p->schema->size << std::endl;
|
||||
std::cout << " - readonly: " << p->readonly << std::endl;
|
||||
std::cout << " - npoints: " << p->npoints << std::endl;
|
||||
std::cout << " - maxpoints: " << p->maxpoints << std::endl;
|
||||
std::cout << " - datasize: " << p->datasize << std::endl;
|
||||
std::cout << " - data: ";
|
||||
for (int i = 0; i < p->datasize; ++i)
|
||||
printf("%02x ", p->data[i]);
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
void
|
||||
lazperf_dump(const PCPATCH_LAZPERF* p)
|
||||
{
|
||||
std::cout << std::endl;
|
||||
std::cout << "DUMP LAZPERF PATCH: " << std::endl;
|
||||
std::cout << " - type: " << p->type << std::endl;
|
||||
std::cout << " - schema->size " << p->schema->size << std::endl;
|
||||
std::cout << " - readonly: " << p->readonly << std::endl;
|
||||
std::cout << " - npoints: " << p->npoints << std::endl;
|
||||
std::cout << " - lazperfsize: " << p->lazperfsize << std::endl;
|
||||
std::cout << " - lazperf: ";
|
||||
for (int i = 0; i < p->lazperfsize; ++i)
|
||||
printf("%02x ", p->lazperf[i]);
|
||||
std::cout << std::endl;
|
||||
void lazperf_dump(const PCPATCH_LAZPERF *p) {
|
||||
std::cout << std::endl;
|
||||
std::cout << "DUMP LAZPERF PATCH: " << std::endl;
|
||||
std::cout << " - type: " << p->type << std::endl;
|
||||
std::cout << " - schema->size " << p->schema->size << std::endl;
|
||||
std::cout << " - readonly: " << p->readonly << std::endl;
|
||||
std::cout << " - npoints: " << p->npoints << std::endl;
|
||||
std::cout << " - lazperfsize: " << p->lazperfsize << std::endl;
|
||||
std::cout << " - lazperf: ";
|
||||
for (int i = 0; i < p->lazperfsize; ++i)
|
||||
printf("%02x ", p->lazperf[i]);
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
// LazPerf class
|
||||
template<typename LazPerfEngine, typename LazPerfCoder>
|
||||
LazPerf<LazPerfEngine, LazPerfCoder>::LazPerf(const PCSCHEMA *pcschema, LazPerfBuf &buf)
|
||||
: _pcschema(pcschema)
|
||||
, _coder(buf)
|
||||
, _pointsize(0)
|
||||
{
|
||||
template <typename LazPerfEngine, typename LazPerfCoder>
|
||||
LazPerf<LazPerfEngine, LazPerfCoder>::LazPerf(const PCSCHEMA *pcschema,
|
||||
LazPerfBuf &buf)
|
||||
: _pcschema(pcschema), _coder(buf), _pointsize(0) {}
|
||||
|
||||
template <typename LazPerfEngine, typename LazPerfCoder>
|
||||
LazPerf<LazPerfEngine, LazPerfCoder>::~LazPerf() {}
|
||||
|
||||
template <typename LazPerfEngine, typename LazPerfCoder>
|
||||
void LazPerf<LazPerfEngine, LazPerfCoder>::initSchema() {
|
||||
for (int i = 0; i < _pcschema->ndims; i++)
|
||||
addField(_pcschema->dims[i]);
|
||||
}
|
||||
|
||||
template<typename LazPerfEngine, typename LazPerfCoder>
|
||||
LazPerf<LazPerfEngine, LazPerfCoder>::~LazPerf()
|
||||
{
|
||||
}
|
||||
template <typename LazPerfEngine, typename LazPerfCoder>
|
||||
bool LazPerf<LazPerfEngine, LazPerfCoder>::addField(const PCDIMENSION *dim) {
|
||||
bool rc = true;
|
||||
|
||||
template<typename LazPerfEngine, typename LazPerfCoder>
|
||||
void
|
||||
LazPerf<LazPerfEngine, LazPerfCoder>::initSchema()
|
||||
{
|
||||
for (int i = 0; i < _pcschema->ndims; i++)
|
||||
addField(_pcschema->dims[i]);
|
||||
}
|
||||
switch (dim->interpretation) {
|
||||
case PC_INT8: {
|
||||
_engine->template add_field<I8>();
|
||||
break;
|
||||
}
|
||||
case PC_UINT8: {
|
||||
_engine->template add_field<U8>();
|
||||
break;
|
||||
}
|
||||
case PC_INT16: {
|
||||
_engine->template add_field<I16>();
|
||||
break;
|
||||
}
|
||||
case PC_UINT16: {
|
||||
_engine->template add_field<U16>();
|
||||
break;
|
||||
}
|
||||
case PC_INT32: {
|
||||
_engine->template add_field<I32>();
|
||||
break;
|
||||
}
|
||||
case PC_UINT32: {
|
||||
_engine->template add_field<U32>();
|
||||
break;
|
||||
}
|
||||
case PC_INT64: {
|
||||
_engine->template add_field<I32>();
|
||||
_engine->template add_field<I32>();
|
||||
break;
|
||||
}
|
||||
case PC_UINT64: {
|
||||
_engine->template add_field<U32>();
|
||||
_engine->template add_field<U32>();
|
||||
break;
|
||||
}
|
||||
case PC_DOUBLE: {
|
||||
_engine->template add_field<U32>();
|
||||
_engine->template add_field<U32>();
|
||||
break;
|
||||
}
|
||||
case PC_FLOAT: {
|
||||
_engine->template add_field<I32>();
|
||||
break;
|
||||
}
|
||||
case PC_UNKNOWN:
|
||||
default:
|
||||
rc = false;
|
||||
}
|
||||
|
||||
template<typename LazPerfEngine, typename LazPerfCoder>
|
||||
bool
|
||||
LazPerf<LazPerfEngine, LazPerfCoder>::addField(const PCDIMENSION *dim)
|
||||
{
|
||||
bool rc = true;
|
||||
if (rc)
|
||||
_pointsize += dim->size;
|
||||
|
||||
switch(dim->interpretation)
|
||||
{
|
||||
case PC_INT8:
|
||||
{
|
||||
_engine->template add_field<I8>();
|
||||
break;
|
||||
}
|
||||
case PC_UINT8:
|
||||
{
|
||||
_engine->template add_field<U8>();
|
||||
break;
|
||||
}
|
||||
case PC_INT16:
|
||||
{
|
||||
_engine->template add_field<I16>();
|
||||
break;
|
||||
}
|
||||
case PC_UINT16:
|
||||
{
|
||||
_engine->template add_field<U16>();
|
||||
break;
|
||||
}
|
||||
case PC_INT32:
|
||||
{
|
||||
_engine->template add_field<I32>();
|
||||
break;
|
||||
}
|
||||
case PC_UINT32:
|
||||
{
|
||||
_engine->template add_field<U32>();
|
||||
break;
|
||||
}
|
||||
case PC_INT64:
|
||||
{
|
||||
_engine->template add_field<I32>();
|
||||
_engine->template add_field<I32>();
|
||||
break;
|
||||
}
|
||||
case PC_UINT64:
|
||||
{
|
||||
_engine->template add_field<U32>();
|
||||
_engine->template add_field<U32>();
|
||||
break;
|
||||
}
|
||||
case PC_DOUBLE:
|
||||
{
|
||||
_engine->template add_field<U32>();
|
||||
_engine->template add_field<U32>();
|
||||
break;
|
||||
}
|
||||
case PC_FLOAT:
|
||||
{
|
||||
_engine->template add_field<I32>();
|
||||
break;
|
||||
}
|
||||
case PC_UNKNOWN:
|
||||
default:
|
||||
rc = false;
|
||||
}
|
||||
|
||||
if (rc)
|
||||
_pointsize += dim->size;
|
||||
|
||||
return rc;
|
||||
return rc;
|
||||
}
|
||||
|
||||
// LazPerf Compressor
|
||||
LazPerfCompressor::LazPerfCompressor(const PCSCHEMA *pcschema, LazPerfBuf &output)
|
||||
: LazPerf(pcschema, output)
|
||||
{
|
||||
_engine = laszip::formats::make_dynamic_compressor(_coder);
|
||||
initSchema();
|
||||
LazPerfCompressor::LazPerfCompressor(const PCSCHEMA *pcschema,
|
||||
LazPerfBuf &output)
|
||||
: LazPerf(pcschema, output) {
|
||||
_engine = laszip::formats::make_dynamic_compressor(_coder);
|
||||
initSchema();
|
||||
}
|
||||
|
||||
LazPerfCompressor::~LazPerfCompressor()
|
||||
{
|
||||
}
|
||||
LazPerfCompressor::~LazPerfCompressor() {}
|
||||
|
||||
size_t
|
||||
LazPerfCompressor::compress(const uint8_t *input, const size_t inputsize)
|
||||
{
|
||||
size_t size = 0;
|
||||
size_t LazPerfCompressor::compress(const uint8_t *input,
|
||||
const size_t inputsize) {
|
||||
size_t size = 0;
|
||||
|
||||
const uint8_t *end = input + inputsize;
|
||||
const uint8_t *end = input + inputsize;
|
||||
|
||||
while (input + _pointsize <= end)
|
||||
{
|
||||
_engine->compress((const char*) input);
|
||||
input += _pointsize;
|
||||
size++;
|
||||
}
|
||||
while (input + _pointsize <= end) {
|
||||
_engine->compress((const char *)input);
|
||||
input += _pointsize;
|
||||
size++;
|
||||
}
|
||||
|
||||
_coder.done();
|
||||
_coder.done();
|
||||
|
||||
return size;
|
||||
return size;
|
||||
}
|
||||
|
||||
// LazPerf Decompressor
|
||||
LazPerfDecompressor::LazPerfDecompressor(const PCSCHEMA *pcschema, LazPerfBuf &input)
|
||||
: LazPerf(pcschema, input)
|
||||
{
|
||||
_engine = laszip::formats::make_dynamic_decompressor(_coder);
|
||||
initSchema();
|
||||
LazPerfDecompressor::LazPerfDecompressor(const PCSCHEMA *pcschema,
|
||||
LazPerfBuf &input)
|
||||
: LazPerf(pcschema, input) {
|
||||
_engine = laszip::formats::make_dynamic_decompressor(_coder);
|
||||
initSchema();
|
||||
}
|
||||
|
||||
LazPerfDecompressor::~LazPerfDecompressor()
|
||||
{
|
||||
}
|
||||
LazPerfDecompressor::~LazPerfDecompressor() {}
|
||||
|
||||
size_t
|
||||
LazPerfDecompressor::decompress(uint8_t *output, const size_t outputsize)
|
||||
{
|
||||
size_t size = 0;
|
||||
size_t LazPerfDecompressor::decompress(uint8_t *output,
|
||||
const size_t outputsize) {
|
||||
size_t size = 0;
|
||||
|
||||
const uint8_t *end = output + outputsize;
|
||||
const uint8_t *end = output + outputsize;
|
||||
|
||||
while (output + _pointsize <= end)
|
||||
{
|
||||
_engine->decompress((char*) output);
|
||||
output += _pointsize;
|
||||
size++;
|
||||
}
|
||||
while (output + _pointsize <= end) {
|
||||
_engine->decompress((char *)output);
|
||||
output += _pointsize;
|
||||
size++;
|
||||
}
|
||||
|
||||
return size;
|
||||
return size;
|
||||
}
|
||||
|
||||
#endif // HAVE_LAZPERF
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
/***********************************************************************
|
||||
* lazperf_adapter.hpp
|
||||
*
|
||||
* LazPerf compression/decompression
|
||||
*
|
||||
* Copyright (c) 2016 Paul Blottiere, Oslandia
|
||||
*
|
||||
***********************************************************************/
|
||||
* lazperf_adapter.hpp
|
||||
*
|
||||
* LazPerf compression/decompression
|
||||
*
|
||||
* Copyright (c) 2016 Paul Blottiere, Oslandia
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
@ -14,55 +14,51 @@
|
||||
#ifdef HAVE_LAZPERF
|
||||
#include <laz-perf/common/common.hpp>
|
||||
#include <laz-perf/compressor.hpp>
|
||||
#include <laz-perf/decoder.hpp>
|
||||
#include <laz-perf/decompressor.hpp>
|
||||
#include <laz-perf/encoder.hpp>
|
||||
#include <laz-perf/decoder.hpp>
|
||||
#include <laz-perf/formats.hpp>
|
||||
#include <laz-perf/las.hpp>
|
||||
|
||||
/**********************************************************************
|
||||
* C API
|
||||
*/
|
||||
* C API
|
||||
*/
|
||||
#include "lazperf_adapter.h"
|
||||
|
||||
/**********************************************************************
|
||||
* INTERNAL CPP
|
||||
*/
|
||||
* INTERNAL CPP
|
||||
*/
|
||||
// utility functions
|
||||
void lazperf_dump( uint8_t* data, const size_t size );
|
||||
void lazperf_dump( const PCPATCH_UNCOMPRESSED *p );
|
||||
void lazperf_dump( const PCPATCH_LAZPERF *p );
|
||||
void lazperf_dump(uint8_t *data, const size_t size);
|
||||
void lazperf_dump(const PCPATCH_UNCOMPRESSED *p);
|
||||
void lazperf_dump(const PCPATCH_LAZPERF *p);
|
||||
|
||||
// struct which capture data coming from the compressor
|
||||
struct LazPerfBuf {
|
||||
LazPerfBuf() : buf(), idx(0) {}
|
||||
LazPerfBuf() : buf(), idx(0) {}
|
||||
|
||||
const uint8_t* data() {
|
||||
return reinterpret_cast<const uint8_t*>(buf.data());
|
||||
}
|
||||
const uint8_t *data() {
|
||||
return reinterpret_cast<const uint8_t *>(buf.data());
|
||||
}
|
||||
|
||||
void putBytes(const unsigned char* b, size_t len) {
|
||||
while(len --) {
|
||||
buf.push_back(*b++);
|
||||
}
|
||||
}
|
||||
void putBytes(const unsigned char *b, size_t len) {
|
||||
while (len--) {
|
||||
buf.push_back(*b++);
|
||||
}
|
||||
}
|
||||
|
||||
void putByte(const unsigned char b) {
|
||||
buf.push_back(b);
|
||||
}
|
||||
void putByte(const unsigned char b) { buf.push_back(b); }
|
||||
|
||||
unsigned char getByte() {
|
||||
return buf[idx++];
|
||||
}
|
||||
unsigned char getByte() { return buf[idx++]; }
|
||||
|
||||
void getBytes(unsigned char *b, int len) {
|
||||
for (int i = 0 ; i < len ; i ++) {
|
||||
b[i] = getByte();
|
||||
}
|
||||
}
|
||||
void getBytes(unsigned char *b, int len) {
|
||||
for (int i = 0; i < len; i++) {
|
||||
b[i] = getByte();
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<unsigned char> buf;
|
||||
size_t idx;
|
||||
std::vector<unsigned char> buf;
|
||||
size_t idx;
|
||||
};
|
||||
|
||||
// some typedef
|
||||
@ -73,42 +69,41 @@ typedef laszip::formats::dynamic_field_compressor<Encoder>::ptr Compressor;
|
||||
typedef laszip::formats::dynamic_field_decompressor<Decoder>::ptr Decompressor;
|
||||
|
||||
// LazPerf class
|
||||
template<typename LazPerfEngine, typename LazPerfCoder>
|
||||
class LazPerf {
|
||||
template <typename LazPerfEngine, typename LazPerfCoder> class LazPerf {
|
||||
|
||||
public:
|
||||
LazPerf( const PCSCHEMA *pcschema, LazPerfBuf &buf );
|
||||
~LazPerf();
|
||||
public:
|
||||
LazPerf(const PCSCHEMA *pcschema, LazPerfBuf &buf);
|
||||
~LazPerf();
|
||||
|
||||
size_t pointsize() const { return _pointsize; }
|
||||
size_t pointsize() const { return _pointsize; }
|
||||
|
||||
protected:
|
||||
void initSchema();
|
||||
bool addField(const PCDIMENSION *dim);
|
||||
protected:
|
||||
void initSchema();
|
||||
bool addField(const PCDIMENSION *dim);
|
||||
|
||||
const PCSCHEMA *_pcschema;
|
||||
LazPerfCoder _coder;
|
||||
LazPerfEngine _engine;
|
||||
size_t _pointsize;
|
||||
const PCSCHEMA *_pcschema;
|
||||
LazPerfCoder _coder;
|
||||
LazPerfEngine _engine;
|
||||
size_t _pointsize;
|
||||
};
|
||||
|
||||
// compressor
|
||||
class LazPerfCompressor : public LazPerf<Compressor, Encoder> {
|
||||
|
||||
public:
|
||||
LazPerfCompressor( const PCSCHEMA *pcschema, LazPerfBuf &output);
|
||||
~LazPerfCompressor();
|
||||
public:
|
||||
LazPerfCompressor(const PCSCHEMA *pcschema, LazPerfBuf &output);
|
||||
~LazPerfCompressor();
|
||||
|
||||
size_t compress( const uint8_t *input, const size_t inputsize );
|
||||
size_t compress(const uint8_t *input, const size_t inputsize);
|
||||
};
|
||||
|
||||
// decompressor
|
||||
class LazPerfDecompressor : public LazPerf<Decompressor, Decoder> {
|
||||
|
||||
public:
|
||||
LazPerfDecompressor( const PCSCHEMA *pcschema, LazPerfBuf &input );
|
||||
~LazPerfDecompressor();
|
||||
public:
|
||||
LazPerfDecompressor(const PCSCHEMA *pcschema, LazPerfBuf &input);
|
||||
~LazPerfDecompressor();
|
||||
|
||||
size_t decompress( uint8_t *data, const size_t datasize );
|
||||
size_t decompress(uint8_t *data, const size_t datasize);
|
||||
};
|
||||
#endif // HAVE_LAZPERF
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user