bool ccGenericPointCloud::fromFile_MeOnly(QFile& in, short dataVersion) { if (!ccHObject::fromFile_MeOnly(in, dataVersion)) return false; if (dataVersion<20) return CorruptError(); //'coordinates shift' (dataVersion>=20) if (in.read((char*)m_originalShift,sizeof(double)*3)<0) return ReadError(); //'visibility' array (dataVersion>=20) bool hasVisibilityArray = false; if (in.read((char*)&hasVisibilityArray,sizeof(bool))<0) return ReadError(); if (hasVisibilityArray) { if (!m_visibilityArray) { m_visibilityArray = new VisibilityTableType(); m_visibilityArray->link(); } if (!ccSerializationHelper::GenericArrayFromFile(*m_visibilityArray,in,dataVersion)) { unallocateVisibilityArray(); return false; } } return true; }
bool ccGenericPointCloud::fromFile_MeOnly(QFile& in, short dataVersion, int flags) { if (!ccHObject::fromFile_MeOnly(in, dataVersion, flags)) return false; if (dataVersion < 20) return CorruptError(); if (dataVersion < 33) { //'coordinates shift' (dataVersion>=20) if (in.read((char*)m_globalShift.u,sizeof(double)*3) < 0) return ReadError(); m_globalScale = 1.0; } else { //'global shift & scale' (dataVersion>=33) if (!loadShiftInfoFromFile(in)) return ReadError(); } //'visibility' array (dataVersion>=20) bool hasVisibilityArray = false; if (in.read((char*)&hasVisibilityArray,sizeof(bool)) < 0) return ReadError(); if (hasVisibilityArray) { if (!m_pointsVisibility) { m_pointsVisibility = new VisibilityTableType(); m_pointsVisibility->link(); } if (!ccSerializationHelper::GenericArrayFromFile(*m_pointsVisibility,in,dataVersion)) { unallocateVisibilityArray(); return false; } } //'point size' (dataVersion>=24) if (dataVersion >= 24) { if (in.read((char*)&m_pointSize,1) < 0) return WriteError(); } else { m_pointSize = 0; //= follows default setting } return true; }
bool ccGenericPointCloud::razVisibilityArray() { if (!m_visibilityArray) { m_visibilityArray = new VisibilityTableType(); m_visibilityArray->link(); } if (!m_visibilityArray->resize(size())) { unallocateVisibilityArray(); return false; } m_visibilityArray->fill(1); //by default, all points are visible return true; }
bool ccGenericPointCloud::resetVisibilityArray() { if (!m_pointsVisibility) { m_pointsVisibility = new VisibilityTableType(); m_pointsVisibility->link(); } if (!m_pointsVisibility->resize(size())) { unallocateVisibilityArray(); return false; } m_pointsVisibility->fill(POINT_VISIBLE); //by default, all points are visible return true; }
void ccGenericPointCloud::clear() { unallocateVisibilityArray(); deleteOctree(); enableTempColor(false); }