]> source.dussan.org Git - tigervnc.git/commitdiff
ScaledDIBSectionBuffer class code improvements. Now we
authorgeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Sat, 29 Jul 2006 10:29:41 +0000 (10:29 +0000)
committergeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Sat, 29 Jul 2006 10:29:41 +0000 (10:29 +0000)
set the scale using setScaleRatio. It improve the
accuracy of scaling operation.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@640 3789f03b-4d11-0410-bbf8-ca57d06f2519

win/rfb_win32/ScaledDIBSectionBuffer.cxx
win/rfb_win32/ScaledDIBSectionBuffer.h

index 7f14cceb09e7894561f81127b126f9c60f783560..700e90b33da620b2f57b2b5308625a03a59f36c6 100644 (file)
@@ -37,12 +37,12 @@ ScaledDIBSectionBuffer::~ScaledDIBSectionBuffer() {
   if (src_buffer) delete src_buffer;
 }
 
-void ScaledDIBSectionBuffer::setScale(int scale_) {
-  if (scale_ == getScale()) return;
+void ScaledDIBSectionBuffer::setScaleRatio(double scale_ratio_) {
+  if (scale_ratio == scale_ratio_) return;
 
   if (format.depth != 24) throw rfb::UnsupportedPixelFormatException();
 
-  if (scale_ != 100) {
+  if (scale_ratio_ != 1) {
     scaling = true;
     if (!src_buffer) {
       src_buffer = new ManagedPixelBuffer(format, src_width, src_height);
@@ -52,7 +52,7 @@ void ScaledDIBSectionBuffer::setScale(int scale_) {
   } else {
     scaling = false;
   }
-  ScaledPixelBuffer::setScale(scale_);
+  ScaledPixelBuffer::setScaleRatio(scale_ratio_);
   recreateScaledBuffer();
   if (scaling) {
     scaleRect(Rect(0, 0, src_width, src_height));
index 7ec0b1f102fc8e5d36de33dd1c0a32bdfa36eebe..867719184057b3b0aed439126d9f16e5a489a082 100644 (file)
@@ -48,7 +48,8 @@ namespace rfb {
 
       virtual void setPF(const PixelFormat &pf);
       virtual void setSize(int w, int h);
-      virtual void setScale(int scale);
+      virtual void setScale(int scale) { setScaleRatio(double(scale)/100.0); };
+      virtual void setScaleRatio(double scale_ratio);
 
       Rect getRect() const { return ScaledPixelBuffer::getRect(); }
       Rect getRect(const Point& pos) const { return ScaledPixelBuffer::getRect(pos); }