// -=- ScaledPixelBuffer.cxx
+#include <rfb/Exception.h>
#include <rfb/ScaledPixelBuffer.h>
#include <math.h>
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() {
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_) {
scale = scale_;
scale_ratio = double(scale) / 100;
calculateScaledBufferSize();
- recreateScaledBuffer();
}
}
scaled_width = (int)ceil(src_width * scale_ratio);
scaled_height = (int)ceil(src_height * scale_ratio);
}
-
-void ScaledPixelBuffer::recreateScaledBuffer() {
-}
#include <rdr/types.h>
#include <rfb/Rect.h>
+#include <rfb/PixelFormat.h>
using namespace rdr;
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();
// 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);
// 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;