TXshColumn *TXshSoundTextColumn::clone() const { TXshSoundTextColumn *column = new TXshSoundTextColumn(); column->setXsheet(getXsheet()); column->setStatusWord(getStatusWord()); column->m_cells = m_cells; column->m_first = m_first; return column; }
void TXshMeshColumn::saveData(TOStream &os) { os.child("status") << getStatusWord(); if (getOpacity() < 255) os.child("camerastand_opacity") << (int)getOpacity(); int r0, r1; if (getRange(r0, r1)) { os.openChild("cells"); { for (int r = r0; r <= r1; ++r) { TXshCell cell = getCell(r); if (cell.isEmpty()) continue; TFrameId fid = cell.m_frameId; int n = 1, inc = 0, dr = fid.getNumber(); // If fid has no letter save more than one cell and its increment - // otherwise save just one cell if (r < r1 && fid.getLetter() == 0) { TXshCell cell2 = getCell(r + 1); TFrameId fid2 = cell2.m_frameId; if (cell2.m_level.getPointer() == cell.m_level.getPointer() && fid2.getLetter() == 0) { inc = cell2.m_frameId.getNumber() - dr; for (++n;; ++n) { if (r + n > r1) break; cell2 = getCell(r + n); TFrameId fid2 = cell2.m_frameId; if (cell2.m_level.getPointer() != cell.m_level.getPointer() || fid2.getLetter() != 0) break; if (fid2.getNumber() != dr + n * inc) break; } } } os.child("cell") << r << n << cell.m_level.getPointer() << fid.expand() << inc; r += n - 1; } } os.closeChild(); } }