Now ScaledPixelBuffer class using the weighting tabs for
scaling. Maked ScaledPixelBuffer class code independent
from the scaling filter.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2118 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/win/rfb_win32/ScaledDIBSectionBuffer.cxx b/win/rfb_win32/ScaledDIBSectionBuffer.cxx
index 3b0f3f7..63e3082 100644
--- a/win/rfb_win32/ScaledDIBSectionBuffer.cxx
+++ b/win/rfb_win32/ScaledDIBSectionBuffer.cxx
@@ -45,6 +45,14 @@
scale_ratio = scale_ratio_;
if (scale_ratio == 1) scaling = false;
else scaling = true;
+
+ // FIXME:
+ // Calculate the scale weight tabs must be in the ScalePixelBuffer class
+ freeWeightTabs();
+ calculateScaledBufferSize();
+ scaleFilters.makeWeightTabs(scaleFilterID, src_width, scaled_width, &xWeightTabs);
+ scaleFilters.makeWeightTabs(scaleFilterID, src_height, scaled_height, &yWeightTabs);
+
recreateBuffers();
}
@@ -71,9 +79,16 @@
void ScaledDIBSectionBuffer::setSize(int src_width_, int src_height_) {
if (src_width == src_width_ && src_height == src_height_) return;
-
src_width = src_width_;
src_height = src_height_;
+
+ // FIXME:
+ // Calculate the scale weight tabs must be in the ScalePixelBuffer class
+ freeWeightTabs();
+ calculateScaledBufferSize();
+ scaleFilters.makeWeightTabs(scaleFilterID, src_width, scaled_width, &xWeightTabs);
+ scaleFilters.makeWeightTabs(scaleFilterID, src_height, scaled_height, &yWeightTabs);
+
recreateBuffers();
}