summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/rfb/PixelBuffer.cxx22
-rw-r--r--common/rfb/PixelBuffer.h7
2 files changed, 29 insertions, 0 deletions
diff --git a/common/rfb/PixelBuffer.cxx b/common/rfb/PixelBuffer.cxx
index 187150d9..ed74a874 100644
--- a/common/rfb/PixelBuffer.cxx
+++ b/common/rfb/PixelBuffer.cxx
@@ -268,6 +268,28 @@ void ModifiablePixelBuffer::copyRect(const Rect &rect,
commitBufferRW(drect);
}
+void ModifiablePixelBuffer::fillRect(const PixelFormat& pf, const Rect &dest,
+ Pixel pix)
+{
+ fillRect(dest, format.pixelFromPixel(pf, pix));
+}
+
+void ModifiablePixelBuffer::imageRect(const PixelFormat& pf, const Rect &dest,
+ const void* pixels, int stride)
+{
+ rdr::U8* dstBuffer;
+ int dstStride;
+
+ if (stride == 0)
+ stride = dest.width();
+
+ dstBuffer = getBufferRW(dest, &dstStride);
+ format.bufferFromBuffer(dstBuffer, pf, (const rdr::U8*)pixels,
+ dest.width(), dest.height(),
+ dstStride, stride);
+ commitBufferRW(dest);
+}
+
// -=- Simple pixel buffer with a continuous block of memory
FullFramePixelBuffer::FullFramePixelBuffer(const PixelFormat& pf, int w, int h,
diff --git a/common/rfb/PixelBuffer.h b/common/rfb/PixelBuffer.h
index e2cc3e92..7060a014 100644
--- a/common/rfb/PixelBuffer.h
+++ b/common/rfb/PixelBuffer.h
@@ -137,6 +137,13 @@ namespace rfb {
// pixel is the Pixel value to be used where mask_ is set
void maskRect(const Rect& r, Pixel pixel, const void* mask_);
+ // Render in a specific format
+ // Does the exact same thing as the above methods, but the given
+ // pixel values are defined by the given PixelFormat.
+ void fillRect(const PixelFormat& pf, const Rect &dest, Pixel pix);
+ void imageRect(const PixelFormat& pf, const Rect &dest,
+ const void* pixels, int stride=0);
+
protected:
ModifiablePixelBuffer();
};