bool ccGenericPointCloud::toFile_MeOnly(QFile& out) const { if (!ccHObject::toFile_MeOnly(out)) return false; //'global shift & scale' (dataVersion>=39) saveShiftInfoToFile(out); //'visibility' array (dataVersion>=20) bool hasVisibilityArray = isVisibilityTableInstantiated(); if (out.write((const char*)&hasVisibilityArray,sizeof(bool)) < 0) return WriteError(); if (hasVisibilityArray) { assert(m_pointsVisibility); if (!ccSerializationHelper::GenericArrayToFile(*m_pointsVisibility,out)) return false; } //'point size' (dataVersion>=24) if (out.write((const char*)&m_pointSize,1) < 0) return WriteError(); return true; }
bool ccPolyline::toFile_MeOnly(QFile& out) const { if (!ccHObject::toFile_MeOnly(out)) return false; //we can't save the associated cloud here (as it may be shared by multiple polylines) //so instead we save it's unique ID (dataVersion>=28) //WARNING: the cloud must be saved in the same BIN file! (responsibility of the caller) ccPointCloud* vertices = dynamic_cast<ccPointCloud*>(m_theAssociatedCloud); if (!vertices) { ccLog::Warning("[ccPolyline::toFile_MeOnly] Polyline vertices is not a ccPointCloud structure?!"); return false; } uint32_t vertUniqueID = (m_theAssociatedCloud ? (uint32_t)vertices->getUniqueID() : 0); if (out.write((const char*)&vertUniqueID,4) < 0) return WriteError(); //number of points (references to) (dataVersion>=28) uint32_t pointCount = size(); if (out.write((const char*)&pointCount,4) < 0) return WriteError(); //points (references to) (dataVersion>=28) for (uint32_t i=0; i<pointCount; ++i) { uint32_t pointIndex = getPointGlobalIndex(i); if (out.write((const char*)&pointIndex,4) < 0) return WriteError(); } //'global shift & scale' (dataVersion>=39) saveShiftInfoToFile(out); QDataStream outStream(&out); //Closing state (dataVersion>=28) outStream << m_isClosed; //RGB Color (dataVersion>=28) outStream << m_rgbColor.r; outStream << m_rgbColor.g; outStream << m_rgbColor.b; //2D mode (dataVersion>=28) outStream << m_mode2D; //Foreground mode (dataVersion>=28) outStream << m_foreground; //The width of the line (dataVersion>=31) outStream << m_width; return true; }