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());
    }
Example #3
0
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;
}
Example #4
0
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);    
}
Example #5
0
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);
}
Example #6
0
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);
}