preps for animated map/unmap
authorClaus Gittinger <cg@exept.de>
Tue, 21 Feb 2006 17:05:03 +0100
changeset 4490 66a98e08afb9
parent 4489 8e481f09dd33
child 4491 c011e738596f
preps for animated map/unmap
WinWorkstation.st
--- a/WinWorkstation.st	Tue Feb 21 17:03:09 2006 +0100
+++ b/WinWorkstation.st	Tue Feb 21 17:05:03 2006 +0100
@@ -15489,6 +15489,45 @@
 %}
 !
 
+animateWindow:aWindowId show:doShow animation:animationSymbolorNil time:timeInMillisOrNil
+    "make a window visible/invisible with animation effect."
+
+%{
+    if (__isExternalAddress(aWindowId)) {
+        HWND hWnd = _HWNDVal(aWindowId);
+
+        if (hWnd) {
+            DWORD how = (doShow == true) ? AW_ACTIVATE : AW_HIDE;
+            DWORD time = 0;
+
+            CPRINTF(("mapWindowAnimated %x\n", hWnd));
+            if (animationSymbolorNil != nil) {
+                if (__isSmallInteger(timeInMillisOrNil)) {
+                    time = __intVal(timeInMillisOrNil);
+                }
+                if (animationSymbolorNil == @symbol(SLIDE)) {
+                    how |= AW_SLIDE;
+                } else if (animationSymbolorNil == @symbol(BLEND)) {
+                    how |= AW_BLEND;
+                } else if (animationSymbolorNil == @symbol(CENTER)) {
+                    how |= AW_CENTER;
+                } else if (animationSymbolorNil == @symbol(HOR_POSITIVE)) {
+                    how |= AW_HOR_POSITIVE;
+                } else if (animationSymbolorNil == @symbol(HOR_NEGATIVE)) {
+                    how |= AW_HOR_NEGATIVE;
+                } else if (animationSymbolorNil == @symbol(VER_POSITIVE)) {
+                    how |= AW_VER_POSITIVE;
+                } else if (animationSymbolorNil == @symbol(VER_NEGATIVE)) {
+                    how |= AW_VER_NEGATIVE;
+                }
+            }
+            AnimateWindow(hWnd, time, how);
+        }
+        RETURN ( self );
+    }
+%}
+!
+
 configureWindow:aWindowId sibling:siblingId stackMode:modeSymbol
     "configure stacking operation of aWindowId w.r.t siblingId"
 
@@ -15806,6 +15845,12 @@
 %}
 !
 
+mapWindow:aWindowId animation:animationSymbolorNil time:timeInMillisOrNil
+    "make a window visible with some animation effect"
+
+    self animateWindow:aWindowId show:true animation:animationSymbolorNil time:timeInMillisOrNil
+!
+
 moveResizeWindow:aWindowId x:x y:y width:w height:h
     "move and resize a window"
 
@@ -16603,6 +16648,12 @@
 %}
 !
 
+unmapWindow:aWindowId animation:animationSymbolorNil time:timeInMillisOrNil
+    "make a window invisible with some animation effect."
+
+    self animateWindow:aWindowId show:false animation:animationSymbolorNil time:timeInMillisOrNil
+!
+
 windowIsIconified:aWindowId
     "return true, if some window is iconified."
 
@@ -16732,7 +16783,7 @@
 !WinWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.321 2006-02-20 09:58:34 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.322 2006-02-21 16:05:03 cg Exp $'
 ! !
 
 WinWorkstation initialize!