Added the new method setSourceBuffer() to the rfb::ScaledPixelBuffer class.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@513 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rfb/ScaledPixelBuffer.cxx b/rfb/ScaledPixelBuffer.cxx
index 1eb8e94..bd1ff72 100644
--- a/rfb/ScaledPixelBuffer.cxx
+++ b/rfb/ScaledPixelBuffer.cxx
@@ -28,10 +28,9 @@
ScaledPixelBuffer::ScaledPixelBuffer(U8 **src_data_, int src_width_,
int src_height_, int scale)
- : src_data(src_data_), src_width(src_width_), src_height(src_height_),
- bpp(32), scaled_data(0), scale_ratio(0), scale(100) {
+ : bpp(32), scaled_data(0), scale_ratio(1), scale(100) {
- setScale(scale);
+ setSourceBuffer(src_data_, src_width_, src_height_);
}
ScaledPixelBuffer::ScaledPixelBuffer()
@@ -42,6 +41,15 @@
ScaledPixelBuffer::~ScaledPixelBuffer() {
}
+void ScaledPixelBuffer::setSourceBuffer(U8 **src_data_, int w, int h) {
+ src_data = src_data_;
+ src_width = w;
+ src_height = h;
+ scaled_width = (int)ceil(src_width * scale_ratio);
+ scaled_height = (int)ceil(src_height * scale_ratio);
+ recreateScaledBuffer();
+}
+
void ScaledPixelBuffer::setScale(int scale_) {
if (scale != scale_) {
scale = scale_;
diff --git a/rfb/ScaledPixelBuffer.h b/rfb/ScaledPixelBuffer.h
index cd92ca8..f7243e1 100644
--- a/rfb/ScaledPixelBuffer.h
+++ b/rfb/ScaledPixelBuffer.h
@@ -48,6 +48,9 @@
return Rect(pos, pos.translate(Point(scaled_width, scaled_height)));
}
+ // Set the new source buffer and its parameters
+ void setSourceBuffer(U8 **src_data, int w, int h);
+
// Set the new scale, in percent
virtual void setScale(int scale);