Merged the changes from revision range 582:588 into reorganized sources. These changes accidentally were not included in files copied during directory structure reorganization.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@594 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/common/rfb/ScaledPixelBuffer.cxx b/common/rfb/ScaledPixelBuffer.cxx
index bf4612d..5892a97 100644
--- a/common/rfb/ScaledPixelBuffer.cxx
+++ b/common/rfb/ScaledPixelBuffer.cxx
@@ -18,6 +18,7 @@
// -=- ScaledPixelBuffer.cxx
+#include <rfb/Exception.h>
#include <rfb/ScaledPixelBuffer.h>
#include <math.h>
@@ -27,15 +28,16 @@
using namespace rfb;
ScaledPixelBuffer::ScaledPixelBuffer(U8 **src_data_, int src_width_,
- int src_height_, int scale)
- : bpp(32), scaled_data(0), scale_ratio(1), scale(100) {
+ int src_height_, int scale, PixelFormat pf_)
+ : scaled_data(0), scale_ratio(1), scale(100) {
setSourceBuffer(src_data_, src_width_, src_height_);
+ setPF(pf_);
}
ScaledPixelBuffer::ScaledPixelBuffer()
: src_data(0), src_width(0), src_height(0), scale_ratio(1), scale(100),
- bpp(32), scaled_data(0) {
+ pf(PixelFormat(32,24,0,1,255,255,255,0,8,16)), scaled_data(0) {
}
ScaledPixelBuffer::~ScaledPixelBuffer() {
@@ -46,7 +48,13 @@
src_width = w;
src_height = h;
calculateScaledBufferSize();
- recreateScaledBuffer();
+}
+
+void ScaledPixelBuffer::setPF(const PixelFormat &pf_) {
+ if (pf_.depth != 24) {
+ throw rfb::Exception("rfb::ScaledPixelBuffer support only the true colour pixel format.");
+ }
+ pf = pf_;
}
void ScaledPixelBuffer::setScale(int scale_) {
@@ -54,7 +62,6 @@
scale = scale_;
scale_ratio = double(scale) / 100;
calculateScaledBufferSize();
- recreateScaledBuffer();
}
}
@@ -127,6 +134,3 @@
scaled_width = (int)ceil(src_width * scale_ratio);
scaled_height = (int)ceil(src_height * scale_ratio);
}
-
-void ScaledPixelBuffer::recreateScaledBuffer() {
-}
diff --git a/common/rfb/ScaledPixelBuffer.h b/common/rfb/ScaledPixelBuffer.h
index 3b6aa7e..d69f0ac 100644
--- a/common/rfb/ScaledPixelBuffer.h
+++ b/common/rfb/ScaledPixelBuffer.h
@@ -24,6 +24,7 @@
#include <rdr/types.h>
#include <rfb/Rect.h>
+#include <rfb/PixelFormat.h>
using namespace rdr;
@@ -31,7 +32,7 @@
class ScaledPixelBuffer {
public:
- ScaledPixelBuffer(U8 **data, int width, int height, int scale);
+ ScaledPixelBuffer(U8 **data, int width, int height, int scale, PixelFormat pf);
ScaledPixelBuffer();
virtual ~ScaledPixelBuffer();
@@ -51,6 +52,9 @@
// Set the new source buffer and its parameters
void setSourceBuffer(U8 **src_data, int w, int h);
+ // Set the new pixel format
+ void setPF(const PixelFormat &pf);
+
// Set the new scale, in percent
virtual void setScale(int scale);
@@ -68,14 +72,12 @@
// parameters (width, height, pixel format)
void calculateScaledBufferSize();
- // Recreate the scaled pixel buffer
- virtual void recreateScaledBuffer();
int src_width;
int src_height;
int scaled_width;
int scaled_height;
- int bpp;
+ PixelFormat pf;
int scale;
double scale_ratio;
U8 **src_data;