void QVolumeSocketData::Send(QBaseSocket* Socket, QByteArray& Data) { QByteArray Voxels((char*)this->Voxels, this->NoBytes); QByteArray ByteArray; QDataStream DataStream(&ByteArray, QIODevice::WriteOnly); DataStream.setVersion(QDataStream::Qt_4_0); QFileInfo FileInfo(this->FileName); DataStream << FileInfo.fileName(); DataStream << this->Resolution[0]; DataStream << this->Resolution[1]; DataStream << this->Resolution[2]; DataStream << this->Spacing[0]; DataStream << this->Spacing[1]; DataStream << this->Spacing[2]; DataStream << Voxels; DataStream << this->NoBytes; QSocketData::Send(Socket, ByteArray); }
void QCompositorSocket::OnReceiveData(const QString& Action, QByteArray& Data) { if (Action == "VOLUME" || Action == "BITMAP") { qDebug() << "Received" << Action.toLower(); this->SaveResource(Data); } if (Action == "VOLUME") { Volume& Volume = this->Renderer->Renderer.Volume; QDataStream DataStream(&Data, QIODevice::ReadOnly); DataStream.setVersion(QDataStream::Qt_4_0); QString FileName; Vec3i Resolution; Vec3f Spacing; DataStream >> FileName; DataStream >> Resolution[0]; DataStream >> Resolution[1]; DataStream >> Resolution[2]; DataStream >> Spacing[0]; DataStream >> Spacing[1]; DataStream >> Spacing[2]; this->Renderer->Renderer.Volume.Create(Resolution, Spacing, (short*)Data.data()); }
QVector<tPage> tManagerPrivate::PagesForDisplay(tDisplayId display) const { QVector<tPage> result; BackendKey key = KeyFromValue(tManagerPrivate::eKeyType_PageList, display); boost::optional<BackendValue> value = m_Storage.Load(key); if (value) { const BackendValue& toRead = value.get(); PQDataStream stream(DataStream(toRead)); // deserialise. int size; *stream >> size; for (int i = 0; i < size; ++i) { tPage page; Read(*stream, page); result.push_back(page); } } return result; }
void tManagerPrivate::Identify() { BackendValue value; PQDataStream stream(DataStream(value)); BackendKey key = KeyFromValue(tManagerPrivate::eKeyTypeMeta_IdNeeded); IncrementLastEventGlobal(); tEventCounter mark = m_EventHighWater; ++mark; *stream << mark.value; m_Storage.Save(key, value); }
void tManagerPrivate::SetPagesSupported(QVector<tPage> supported) { BackendValue value; PQDataStream stream(DataStream(value)); BackendKey key = KeyFromValue(tManagerPrivate::eKeyType_PageList, m_Discovery.WhoAmI()); // serialise. const int size = supported.size(); *stream << size; for (int i = 0; i < size; ++i) { Write(*stream, supported[i]); } m_Storage.Save(key, value); }
void tManagerPrivate::SetPreset(tPreset preset) { boost::optional<tBridge> myBridge = MyBridge(); if (!myBridge) { // I don't even have a bridge. Invalid! return; } // Next check to make sure all the displays in this preset are in this bridge. const QVector<tPresetItem> items = preset.Items(); const int size = items.size(); // First, make sure this is one of _my_ presets. for (int i = 0; i < size; ++i) { if (!myBridge->DisplayPosition(items[i].id)) { // display isn't on my bridge. Invalid preset. return; } } // Then blindly set the preset, if it's out of bounds that's handled by the receiving bridge. IncrementLastEventGlobal(); tEventCounter mark = m_EventHighWater; ++mark; for (int i = 0; i < size; ++i) { BackendValue value; PQDataStream stream(DataStream(value)); *stream << mark.value; Write(*stream, items[i].page); BackendKey key = KeyFromValue(tManagerPrivate::eKeyType_PageChange, items[i].id); m_Storage.Save(key, value); } }
void QVolumeSocketData::Receive(QByteArray& Data) { QByteArray Voxels; QDataStream DataStream(&Data, QIODevice::ReadOnly); DataStream.setVersion(QDataStream::Qt_4_0); DataStream >> this->FileName; DataStream >> this->Resolution[0]; DataStream >> this->Resolution[1]; DataStream >> this->Resolution[2]; DataStream >> this->Spacing[0]; DataStream >> this->Spacing[1]; DataStream >> this->Spacing[2]; DataStream >> Voxels; DataStream >> this->NoBytes; memcpy(this->Voxels, Voxels.data(), this->NoBytes); }
BulletSharp::DataStream^ IndexedMesh::LockVerts() { return gcnew DataStream((void*)_native->m_vertexBase, _native->m_numVertices * _native->m_vertexStride, true, true, false); }
BulletSharp::DataStream^ IndexedMesh::LockIndices() { return gcnew DataStream((void*)_native->m_triangleIndexBase, _native->m_numTriangles * _native->m_triangleIndexStride, true, true, false); }