]> source.dussan.org Git - tigervnc.git/commitdiff
Implemented scaling interface of the local copy of remote
authorgeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Mon, 29 May 2006 14:18:14 +0000 (14:18 +0000)
committergeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Mon, 29 May 2006 14:18:14 +0000 (14:18 +0000)
desktop. Now it support only true color the pixel data.
AutoScaling is not working yet.

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

win/vncviewer/CConn.cxx
win/vncviewer/DesktopWindow.cxx
win/vncviewer/DesktopWindow.h
win/vncviewer/OptionsDialog.cxx

index 73597f52a2d15b282432f4fc61a08058ab12f9d3..bfac47685dd2f3f0e05d0a9f77225e22dc7d43b9 100644 (file)
@@ -150,6 +150,7 @@ CConn::applyOptions(CConnOptions& opt) {
     window->setMenuKey(options.menuKey);
     window->setDisableWinKeys(options.disableWinKeys);
     window->setShowToolbar(options.showToolbar);
+    window->setDesktopScale(options.scale);
     if (!options.useLocalCursor)
       window->setCursor(0, 0, Point(), 0, 0);
   }
index fce795ba6750c991a5ed63203c8e965bd2eb2a6c..55000252c307e2c4eef7c21ead34bdf0ec2593b9 100644 (file)
@@ -929,6 +929,12 @@ DesktopWindow::setSize(int w, int h) {
   calculateScrollBars();
 }
 
+void DesktopWindow::setDesktopScale(int scale) {
+  buffer->setScale(scale);
+  InvalidateRect(frameHandle, 0, FALSE);
+  calculateScrollBars();
+}
+
 void
 DesktopWindow::setCursor(int w, int h, const Point& hotspot, void* data, void* mask) {
   hideLocalCursor();
index 8511eb444b0235c1b43c6d726bd3ecbf9746cef4..f471fccb57127775f779893a89fdbba91f35c328 100644 (file)
@@ -82,6 +82,7 @@ namespace rfb {
       PixelFormat getPF() const { return buffer->getPF(); }
       void setSize(int w, int h);
       void setColour(int i, int r, int g, int b) {buffer->setColour(i, r, g, b);}
+      void setDesktopScale(int scale);
 
       // - Set the cursor to render when the pointer is within the desktop buffer
       void setCursor(int w, int h, const Point& hotspot, void* data, void* mask);
index 5bb21fd9c2bd2b9d6ae72aa21a41b4b67ed45760..af112ee7af32692f5bf985c3d958890f7f760c59 100644 (file)
@@ -171,7 +171,11 @@ public:
       SendMessage(hScaleCombo, CB_INSERTSTRING, 
         (WPARAM)i, (LPARAM)(int FAR*)scale_values[i]);
     }
-    SetDlgItemText(handle, IDC_COMBO_SCALE, "100");
+    if (dlg->options.autoScaling) {
+      SetDlgItemText(handle, IDC_COMBO_SCALE, "Auto");
+    } else {
+      SetDlgItemInt(handle, IDC_COMBO_SCALE, dlg->options.scale, FALSE);
+    }
   }
   virtual bool onOk() {
     dlg->options.shared = isItemChecked(IDC_CONN_SHARED);
@@ -182,6 +186,20 @@ public:
     dlg->options.acceptBell = isItemChecked(IDC_ACCEPT_BELL);
     dlg->options.autoReconnect = isItemChecked(IDC_AUTO_RECONNECT);
     dlg->options.showToolbar = isItemChecked(IDC_SHOW_TOOLBAR);
+    int s = GetDlgItemInt(handle, IDC_COMBO_SCALE, NULL, FALSE);
+    if (s > 0) {
+      dlg->options.scale = s;
+      dlg->options.autoScaling = false;
+      if (s == 100) dlg->options.scaling = false;
+      else dlg->options.scaling = true;
+    } else {
+      char scaleStr[20];
+      GetDlgItemText(handle, IDC_COMBO_SCALE, scaleStr, 20);
+      if (strcmp(scaleStr, "Auto") == 0) {
+        dlg->options.autoScaling = true;
+        dlg->options.scaling = true;
+      }
+    }
     ((ViewerOptions*)propSheet)->setChanged();
     return true;
   }