1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
/*=========================================================================
Program: ParaView
Module: $RCSfile$
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkClientServerSynchronizedRenderers.h"
#include "vtkObjectFactory.h"
#include "vtkMultiProcessController.h"
#include <cassert>
vtkStandardNewMacro(vtkClientServerSynchronizedRenderers);
//----------------------------------------------------------------------------
vtkClientServerSynchronizedRenderers::vtkClientServerSynchronizedRenderers()
{
}
//----------------------------------------------------------------------------
vtkClientServerSynchronizedRenderers::~vtkClientServerSynchronizedRenderers()
{
}
//----------------------------------------------------------------------------
void vtkClientServerSynchronizedRenderers::MasterEndRender()
{
// receive image from slave.
assert(this->ParallelController->IsA("vtkSocketController"));
vtkRawImage& rawImage = (this->ImageReductionFactor == 1)?
this->FullImage : this->ReducedImage;
int header[4];
this->ParallelController->Receive(header, 4, 1, 0x023430);
if (header[0] > 0)
{
rawImage.Resize(header[1], header[2], header[3]);
this->ParallelController->Receive(rawImage.GetRawPtr(), 1, 0x023430);
rawImage.MarkValid();
}
}
//----------------------------------------------------------------------------
void vtkClientServerSynchronizedRenderers::SlaveEndRender()
{
assert(this->ParallelController->IsA("vtkSocketController"));
vtkRawImage &rawImage = this->CaptureRenderedImage();
int header[4];
header[0] = rawImage.IsValid()? 1 : 0;
header[1] = rawImage.GetWidth();
header[2] = rawImage.GetHeight();
header[3] = rawImage.IsValid()?
rawImage.GetRawPtr()->GetNumberOfComponents() : 0;
// send the image to the client.
this->ParallelController->Send(header, 4, 1, 0x023430);
if (rawImage.IsValid())
{
this->ParallelController->Send(rawImage.GetRawPtr(), 1, 0x023430);
}
}
//----------------------------------------------------------------------------
void vtkClientServerSynchronizedRenderers::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os, indent);
}
|