Add convenience variant of getImage()
diff --git a/common/rfb/PixelBuffer.cxx b/common/rfb/PixelBuffer.cxx
index ed74a87..3f7f301 100644
--- a/common/rfb/PixelBuffer.cxx
+++ b/common/rfb/PixelBuffer.cxx
@@ -60,6 +60,26 @@
   }
 }
 
+void PixelBuffer::getImage(const PixelFormat& pf, void* imageBuf,
+                           const Rect& r, int stride)
+{
+  const rdr::U8* srcBuffer;
+  int srcStride;
+
+  if (format.equal(pf)) {
+    getImage(imageBuf, r, stride);
+    return;
+  }
+
+  if (stride == 0)
+    stride = r.width();
+
+  srcBuffer = getBuffer(r, &srcStride);
+
+  pf.bufferFromBuffer((U8*)imageBuf, format, srcBuffer, r.width(), r.height(),
+                      stride, srcStride);
+}
+
 // -=- Modifiable generic pixel buffer class
 
 ModifiablePixelBuffer::ModifiablePixelBuffer(const PixelFormat& pf,
diff --git a/common/rfb/PixelBuffer.h b/common/rfb/PixelBuffer.h
index 7060a01..5bc06c2 100644
--- a/common/rfb/PixelBuffer.h
+++ b/common/rfb/PixelBuffer.h
@@ -72,6 +72,11 @@
     //   stride. Try to avoid using this though as getBuffer() will in
     //   most cases avoid the extra memory copy.
     void getImage(void* imageBuf, const Rect& r, int stride=0);
+    // Get pixel data in a given format
+    //   Works just the same as getImage(), but guaranteed to be in a
+    //   specific format.
+    void getImage(const PixelFormat& pf, void* imageBuf,
+                  const Rect& r, int stride=0);
 
     ///////////////////////////////////////////////
     // Framebuffer update methods