| Attached Files | readrgba.patch [^] (2,741 bytes) 1969-12-31 19:00 [Show Content] [Hide Content]--- vtkWindowToImageFilter.cxx.orig 2004-09-30 11:30:00.000000000 -0400
+++ vtkWindowToImageFilter.cxx 2004-10-04 10:30:13.000000000 -0400
@@ -29,6 +29,7 @@
this->Input = NULL;
this->Magnification = 1;
this->ReadFrontBuffer = 1;
+ this->ReadRGBA = 0;
}
//----------------------------------------------------------------------------
@@ -68,6 +69,7 @@
os << indent << "Input: (none)\n";
}
os << indent << "ReadFrontBuffer: " << this->ReadFrontBuffer << "\n";
+ os << indent << "ReadRGBA: " << this->ReadRGBA << "\n";
os << indent << "Magnification: " << this->Magnification << "\n";
}
@@ -97,7 +99,15 @@
out->SetOrigin(0.0, 0.0, 0.0);
// set the scalar components
- out->SetNumberOfScalarComponents(3);
+ if( this->ReadRGBA )
+ {
+ out->SetNumberOfScalarComponents(4);
+ }
+ else
+ {
+ out->SetNumberOfScalarComponents(3);
+ }
+
out->SetScalarType(VTK_UNSIGNED_CHAR);
}
@@ -127,9 +137,18 @@
// get the size of the render window
size[0] = this->Input->GetSize()[0];
size[1] = this->Input->GetSize()[1];
- rowSize = size[0]*3;
- outIncrY = size[0]*this->Magnification*3;
-
+
+ if( this->ReadRGBA)
+ {
+ rowSize = size[0]*4;
+ outIncrY = size[0]*this->Magnification*4;
+ }
+ else
+ {
+ rowSize = size[0]*3;
+ outIncrY = size[0]*this->Magnification*3;
+ }
+
float *viewAngles;
double *windowCenters;
vtkRenderWindow *renWin = vtkRenderWindow::SafeDownCast(this->Input);
@@ -231,8 +250,16 @@
buffer = 1;
}
- pixels = this->Input->GetPixelData(0,0,size[0] - 1,
- size[1] - 1, buffer);
+ if( this->ReadRGBA )
+ {
+ pixels = renWin->GetRGBACharPixelData(0,0,size[0] - 1,
+ size[1] - 1, buffer);
+ }
+ else
+ {
+ pixels = this->Input->GetPixelData(0,0,size[0] - 1,
+ size[1] - 1, buffer);
+ }
unsigned char *pixels1 = pixels;
// now write the data to the output image
--- vtkWindowToImageFilter.h.orig 2004-09-30 11:30:10.000000000 -0400
+++ vtkWindowToImageFilter.h 2004-09-30 11:32:47.000000000 -0400
@@ -72,6 +72,13 @@
vtkBooleanMacro(ReadFrontBuffer, int);
vtkGetMacro(ReadFrontBuffer, int);
vtkSetMacro(ReadFrontBuffer, int);
+ // Description
+ // Set/Get the flag that determines whether to read RGBA data
+ // Default is no (Read only RGB Data)
+ vtkBooleanMacro(ReadRGBA, int);
+ vtkGetMacro(ReadRGBA, int);
+ vtkSetMacro(ReadRGBA, int);
+
protected:
vtkWindowToImageFilter();
@@ -81,6 +88,7 @@
vtkWindow *Input;
int Magnification;
int ReadFrontBuffer;
+ int ReadRGBA;
void ExecuteInformation();
void ExecuteData(vtkDataObject *data);
private:
window2image.patch [^] (4,658 bytes) 1969-12-31 19:00 [Show Content] [Hide Content]Index: vtkWindowToImageFilter.cxx
===================================================================
RCS file: /cvsroot/VTK/VTK/Rendering/vtkWindowToImageFilter.cxx,v
retrieving revision 1.35
diff -u -3 -p -r1.35 vtkWindowToImageFilter.cxx
--- vtkWindowToImageFilter.cxx 17 Dec 2004 14:38:56 -0000 1.35
+++ vtkWindowToImageFilter.cxx 23 Dec 2004 05:29:33 -0000
@@ -32,6 +32,7 @@ vtkWindowToImageFilter::vtkWindowToImage
this->Input = NULL;
this->Magnification = 1;
this->ReadFrontBuffer = 1;
+ this->ReadRGBA = 0;
this->ShouldRerender = 1;
this->Viewport[0] = 0;
this->Viewport[1] = 0;
@@ -85,6 +86,7 @@ void vtkWindowToImageFilter::PrintSelf(o
os << indent << "Input: (none)\n";
}
os << indent << "ReadFrontBuffer: " << this->ReadFrontBuffer << "\n";
+ os << indent << "ReadRGBA: " << this->ReadRGBA << "\n";
os << indent << "Magnification: " << this->Magnification << "\n";
os << indent << "ShouldRerender: " << this->ShouldRerender << "\n";
os << indent << "Viewport: " << this->Viewport[0] << "," << this->Viewport[1]
@@ -133,7 +135,15 @@ void vtkWindowToImageFilter::RequestInfo
vtkInformation* outInfo = outputVector->GetInformationObject(0);
outInfo->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), wExtent, 6);
outInfo->Set(vtkDataObject::SCALAR_TYPE(), VTK_UNSIGNED_CHAR);
- outInfo->Set(vtkDataObject::SCALAR_NUMBER_OF_COMPONENTS(),3);
+ // set the scalar components
+ if( this->ReadRGBA )
+ {
+ outInfo->Set(vtkDataObject::SCALAR_NUMBER_OF_COMPONENTS(),4);
+ }
+ else
+ {
+ outInfo->Set(vtkDataObject::SCALAR_NUMBER_OF_COMPONENTS(),3);
+ }
}
//----------------------------------------------------------------------------
@@ -197,9 +207,17 @@ void vtkWindowToImageFilter::RequestData
size[0] = int(winsize[0]*(this->Viewport[2]-this->Viewport[0]) + 0.5);
size[1] = int(winsize[1]*(this->Viewport[3]-this->Viewport[1]) + 0.5);
- rowSize = size[0]*3;
- outIncrY = size[0]*this->Magnification*3;
-
+ if( this->ReadRGBA)
+ {
+ rowSize = size[0]*4;
+ outIncrY = size[0]*this->Magnification*4;
+ }
+ else
+ {
+ rowSize = size[0]*3;
+ outIncrY = size[0]*this->Magnification*3;
+ }
+
float *viewAngles;
double *windowCenters;
vtkRenderWindow *renWin = vtkRenderWindow::SafeDownCast(this->Input);
@@ -304,10 +322,21 @@ void vtkWindowToImageFilter::RequestData
{
buffer = 1;
}
- pixels = this->Input->GetPixelData(int(this->Viewport[0]* winsize[0]),
- int(this->Viewport[1]* winsize[1]),
- int(this->Viewport[2]* winsize[0] + 0.5) - 1,
- int(this->Viewport[3]* winsize[1] + 0.5) - 1, buffer);
+
+ if( this->ReadRGBA )
+ {
+ pixels = renWin->GetRGBACharPixelData(int(this->Viewport[0]* winsize[0]),
+ int(this->Viewport[1]* winsize[1]),
+ int(this->Viewport[2]* winsize[0] + 0.5) - 1,
+ int(this->Viewport[3]* winsize[1] + 0.5) - 1, buffer);
+ }
+ else
+ {
+ pixels = this->Input->GetPixelData(int(this->Viewport[0]* winsize[0]),
+ int(this->Viewport[1]* winsize[1]),
+ int(this->Viewport[2]* winsize[0] + 0.5) - 1,
+ int(this->Viewport[3]* winsize[1] + 0.5) - 1, buffer);
+ }
unsigned char *pixels1 = pixels;
Index: vtkWindowToImageFilter.h
===================================================================
RCS file: /cvsroot/VTK/VTK/Rendering/vtkWindowToImageFilter.h,v
retrieving revision 1.19
diff -u -3 -p -r1.19 vtkWindowToImageFilter.h
--- vtkWindowToImageFilter.h 21 Nov 2004 16:54:12 -0000 1.19
+++ vtkWindowToImageFilter.h 23 Dec 2004 05:29:33 -0000
@@ -74,7 +74,14 @@ public:
vtkBooleanMacro(ReadFrontBuffer, int);
vtkGetMacro(ReadFrontBuffer, int);
vtkSetMacro(ReadFrontBuffer, int);
-
+
+ // Description
+ // Set/Get the flag that determines whether to read RGBA data
+ // Default is no (Read only RGB Data)
+ vtkBooleanMacro(ReadRGBA, int);
+ vtkGetMacro(ReadRGBA, int);
+ vtkSetMacro(ReadRGBA, int);
+
// Description:
// Set/get whether to re-render the input window. (This option makes no
// difference if Magnification > 1.)
@@ -106,6 +113,7 @@ protected:
vtkWindow *Input;
int Magnification;
int ReadFrontBuffer;
+ int ReadRGBA;
int ShouldRerender;
double Viewport[4];
|