Use PixelBuffer objects as the interface for encoders and decoders
This avoid a lot of unnecessary middle men. This also pushes the
responsibility for pixel format conversion into the encoders and
decoders. The new bufferFromBuffer() is used for direct conversion,
rather than PixelTransformer/TransImageGetter.
diff --git a/common/rfb/RREEncoder.cxx b/common/rfb/RREEncoder.cxx
index a7af25d..6e23ad3 100644
--- a/common/rfb/RREEncoder.cxx
+++ b/common/rfb/RREEncoder.cxx
@@ -16,10 +16,11 @@
* USA.
*/
#include <rdr/OutStream.h>
-#include <rfb/TransImageGetter.h>
#include <rfb/encodings.h>
#include <rfb/SMsgWriter.h>
#include <rfb/SConnection.h>
+#include <rfb/PixelFormat.h>
+#include <rfb/PixelBuffer.h>
#include <rfb/RREEncoder.h>
using namespace rfb;
@@ -42,12 +43,12 @@
{
}
-void RREEncoder::writeRect(const Rect& r, TransImageGetter* ig)
+void RREEncoder::writeRect(const Rect& r, PixelBuffer* pb)
{
int w = r.width();
int h = r.height();
rdr::U8* imageBuf = conn->writer()->getImageBuf(w*h);
- ig->getImage(imageBuf, r);
+ pb->getImage(conn->cp.pf(), imageBuf, r);
mos.clear();
@@ -59,7 +60,7 @@
}
if (nSubrects < 0) {
- RawEncoder::writeRect(r, ig);
+ RawEncoder::writeRect(r, pb);
return;
}