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];
 
