]> source.dussan.org Git - tigervnc.git/commitdiff
Added implementation of the ZOOM IN and ZOOM OUT vncviewer
authorgeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Mon, 11 Sep 2006 07:00:59 +0000 (07:00 +0000)
committergeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Mon, 11 Sep 2006 07:00:59 +0000 (07:00 +0000)
toolbar buttons.

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

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

index ccf80f36251326ff859ef8298f33c55a6ffca1f5..388014ffe8ab134ce8ff4b0aff8f0bcdf49e4892 100644 (file)
@@ -62,6 +62,9 @@ const int IDM_AUTO_SIZE = ID_AUTO_SIZE;
 static IntParameter debugDelay("DebugDelay","Milliseconds to display inverted "
                                "pixel data - a debugging feature", 0);
 
+const int scaleValues[9] = {10, 25, 50, 75, 90, 100, 125, 150, 200};
+const int scaleCount = 9;
+
 
 //
 // -=- CConn implementation
@@ -187,8 +190,29 @@ CConn::sysCommand(WPARAM wParam, LPARAM lParam) {
     window->setFullscreen(options.fullScreen);
     return true;
   case IDM_ZOOM_IN:
-    return true;
   case IDM_ZOOM_OUT:
+    {
+      if (options.autoScaling) {
+        options.scale = window->getDesktopScale();
+        options.autoScaling = false;
+        window->setAutoScaling(false);
+      }
+      if (wParam == IDM_ZOOM_IN) {
+        for (int i = 0; i < scaleCount; i++)
+          if (options.scale < scaleValues[i]) { 
+            options.scale = scaleValues[i];
+            break;
+          }
+      } else {
+        for (int i = scaleCount-1; i >= 0; i--)
+          if (options.scale > scaleValues[i]) { 
+            options.scale = scaleValues[i];
+            break;
+          }
+      }
+      if (options.scale != window->getDesktopScale()) 
+        window->setDesktopScale(options.scale);
+    }
     return true;
   case IDM_ACTUAL_SIZE:
     if (options.autoScaling) {
index c24b0ced3b58a808bf0784876e63b970a00e3fb6..8e82083e9ab3b8e421913cfb26f9242c24b648ff 100644 (file)
@@ -88,6 +88,7 @@ namespace rfb {
       }
       bool isAutoScaling() const { return autoScaling; }
       void setDesktopScale(int scale);
+      int  getDesktopScale() const { return buffer->getScale(); }
       void fitBufferToWindow(bool repaint = true);
 
       // - Set the cursor to render when the pointer is within the desktop buffer