[sawfish/viewport] Revert "Bug fixes and doc improvements:"



commit b31e03676be023c1891f612192ded7c3f3cb43c4
Author: Christopher Roy Bratusek <chris nanolx org>
Date:   Thu Nov 12 21:17:34 2009 +0100

    Revert "Bug fixes and doc improvements:"
    
    This reverts commit 52f6a8f667c6d5a354b13ba66d84624fe9456cc5.

 ChangeLog                               |   15 ---
 lisp/sawfish/wm/ext/infinite-desktop.jl |   14 ++-
 lisp/sawfish/wm/state/maximize.jl       |   22 ++--
 lisp/sawfish/wm/util/compat.jl          |    3 +-
 lisp/sawfish/wm/util/rects.jl           |   10 +-
 lisp/sawfish/wm/util/workarea.jl        |   24 ++--
 lisp/sawfish/wm/viewport.jl             |   94 +--------------
 man/news.texi                           |    4 +-
 man/sawfish.texi                        |  190 +------------------------------
 9 files changed, 45 insertions(+), 331 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index ee6e2e1..e9618f8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,18 +1,3 @@
-2009-10-21  Jeremy Hankins <nowan nowan org>
-	* lisp/sawfish/wm/state/maximize.jl
-	* lisp/sawfish/wm/util/compat.jl
-	* lisp/sawfish/wm/util/rects.jl
-	* lisp/sawfish/wm/util/workarea.jl
-	* lisp/sawfish/wm/viewport.jl
-	* man/news.texi: Fix bugs introduced by the recent changes to allow maximization outside of the current viewport:
-	                 - viewport-window now gives the viewport where most of the window is located.
-	                 - A few new functions for working with rectangles.
-
-	* lisp/sawfish/wm/ext/infinite-desktop.jl: infinite-desktop now checks viewport-honor-workspace-edges
-	                                           (in sawfish.wm.viewport) before allowing movement past workspace boundaries.
-
-	* man/sawfish.texi: Adjustments to viewport docs; new docs for sawfish.wm.util.rects.
-
 2009-10-11  Jeremy Hankins <nowan nowan org>
 	* lisp/sawfish/wm/ext/match-window.jl
 	* lisp/sawfish/wm/state/maximize.jl
diff --git a/lisp/sawfish/wm/ext/infinite-desktop.jl b/lisp/sawfish/wm/ext/infinite-desktop.jl
index ea3fcb6..8f09b0d 100644
--- a/lisp/sawfish/wm/ext/infinite-desktop.jl
+++ b/lisp/sawfish/wm/ext/infinite-desktop.jl
@@ -65,6 +65,12 @@
     :type number
     :range (1 . nil))
 
+  (define (infinite-desktop.stop-at-workspace-borders)
+    "Whether or not to prevent the display from moving past the
+current viewport boundaries.  Returns true if `viewport-boundary-mode'
+is not set to 'dynamic."
+    (not (eq viewport-boundary-mode 'dynamic)))
+
   (define (infinite-desktop.move-right)
     "Shifts the display `infinite-desktop.move-distance' pixels to the
 right."
@@ -72,7 +78,7 @@ right."
           (cdist infinite-desktop.move-cursor-distance)
           (maxx (* (screen-width) (1- (car viewport-dimensions)))))
       (if
-          (and (viewport-honor-workspace-edges)
+          (and (infinite-desktop.stop-at-workspace-borders)
                (> (+ dist viewport-x-offset) maxx))
           (setq dist (- maxx viewport-x-offset)))
       (set-viewport (+ viewport-x-offset dist) viewport-y-offset)
@@ -85,7 +91,7 @@ left."
           (cdist (- infinite-desktop.move-cursor-distance))
           (minx 0))
       (if
-          (and (viewport-honor-workspace-edges)
+          (and (infinite-desktop.stop-at-workspace-borders)
                (< (+ viewport-x-offset dist) minx))
           (setq dist (- minx viewport-x-offset)))
       (set-viewport (+ viewport-x-offset dist) viewport-y-offset)
@@ -97,7 +103,7 @@ left."
           (cdist (- infinite-desktop.move-cursor-distance))
           (miny 0))
       (if
-          (and (viewport-honor-workspace-edges)
+          (and (infinite-desktop.stop-at-workspace-borders)
                (< (+ viewport-y-offset dist) miny))
           (setq dist (- miny viewport-y-offset)))
       (set-viewport viewport-x-offset (+ viewport-y-offset dist))
@@ -109,7 +115,7 @@ left."
           (cdist infinite-desktop.move-cursor-distance)
           (maxy (* (screen-height) (1- (cdr viewport-dimensions)))))
       (if
-          (and (viewport-honor-workspace-edges)
+          (and (infinite-desktop.stop-at-workspace-borders)
                (> (+ dist viewport-y-offset) maxy))
           (setq dist (- maxy viewport-y-offset)))
       (set-viewport viewport-x-offset (+ viewport-y-offset dist))
diff --git a/lisp/sawfish/wm/state/maximize.jl b/lisp/sawfish/wm/state/maximize.jl
index 63e547b..b6c98a0 100644
--- a/lisp/sawfish/wm/state/maximize.jl
+++ b/lisp/sawfish/wm/state/maximize.jl
@@ -226,9 +226,8 @@ that dimension.")
 	  (cons perp-1 perp-2)))))
 
   (define (do-horizontal w edges coords dims fdims)
-    (let* ((head (window-head-any-viewport w))
-           (head-offset (head-offset head))
-           (head-dims (head-dimensions head)))
+    (let ((head-offset (current-head-offset w))
+	  (head-dims (current-head-dimensions w)))
       (let ((x-span (expand-edges (cdr coords) (+ (cdr coords) (cdr fdims))
 				  (car head-offset)
 				  (+ (car head-offset) (car head-dims))
@@ -240,9 +239,8 @@ that dimension.")
 	w)))
 
   (define (do-vertical w edges coords dims fdims)
-    (let* ((head (window-head-any-viewport w))
-           (head-offset (head-offset head))
-           (head-dims (head-dimensions head)))
+    (let ((head-offset (current-head-offset w))
+	  (head-dims (current-head-dimensions w)))
       (let ((y-span (expand-edges (car coords) (+ (car coords) (car fdims))
 				  (cdr head-offset)
 				  (+ (cdr head-offset) (cdr head-dims))
@@ -257,9 +255,7 @@ that dimension.")
 
   (define (do-both window avoided edges coords dims fdims)
     (let ((max-rect (largest-rectangle-from-edges
-		     edges
-                     #:avoided avoided
-                     #:head (window-head-any-viewport window))))
+		     edges #:avoided avoided #:head (current-head window))))
       (when max-rect
 	(rplaca coords (nth 0 max-rect))
 	(rplacd coords (nth 1 max-rect))
@@ -347,8 +343,10 @@ that dimension.")
     (when (window-maximized-fullscreen-p w)
       (maximize-window-fullscreen w nil))
     (let* ((viewport (window-viewport w))
+           (vp-offset (viewport-offset viewport))
            (coords (window-position w))
-           (head (window-head-any-viewport w))
+           (head (find-head (- (car coords) (car vp-offset))
+                            (- (cdr coords) (cdr vp-offset))))
            (dims (window-dimensions w))
            (fdims (window-frame-dimensions w))
            (hints (window-size-hints w))
@@ -534,7 +532,9 @@ unmaximized."
 	   (when (window-maximizable-p w)
              (let* ((viewport (window-viewport w))
                     (vp-offset (viewport-offset viewport))
-                    (head (window-head-any-viewport w))
+                    (coords (window-position w))
+                    (head (find-head (- (car coords) (car vp-offset))
+                                     (- (cdr coords) (cdr vp-offset))))
                     (head-offset (head-offset head))
                     (head-dims (head-dimensions head)))
 	       (save-unmaximized-geometry w)
diff --git a/lisp/sawfish/wm/util/compat.jl b/lisp/sawfish/wm/util/compat.jl
index b979c34..a190cbe 100644
--- a/lisp/sawfish/wm/util/compat.jl
+++ b/lisp/sawfish/wm/util/compat.jl
@@ -117,8 +117,7 @@
           nokogiri-user-level nokogiri-buttons workspace-boundary-mode
           workspace-send-boundary-mode lock-first-workspace
           ignore-window-input-hint workspace-geometry
-          pointer-motion-threshold ignore-program-positions
-          infinite-desktop.stop-at-workspace-borders))
+          pointer-motion-threshold ignore-program-positions))
 
 ;;; obsolete custom setters
 
diff --git a/lisp/sawfish/wm/util/rects.jl b/lisp/sawfish/wm/util/rects.jl
index 89c1a60..3ec8777 100644
--- a/lisp/sawfish/wm/util/rects.jl
+++ b/lisp/sawfish/wm/util/rects.jl
@@ -36,7 +36,6 @@
 	    rect-2d-overlap
 	    rect-2d-overlap*
 	    rect-total-overlap
-            rect-wholly-within-rect
 	    rect-wholly-visible-p
 	    rectangle-heads)
 
@@ -267,20 +266,17 @@ dimensions DIMS and origin POINT, while the other is defined by RECT."
   (define (rect-total-overlap dims point rects)
     "Returns the total area of the overlap between a rectangle defined by
 DIMS and POINT, and the list of rectangles RECTS when placed at POINT."
+
     (let ((total 0))
       (mapc (lambda (r)
 	      (setq total (+ total (rect-2d-overlap dims point r))))
 	    rects)
       total))
 
-  (define (rect-wholly-within-rect outer inner)
-    "Return t if INNER is completely inside the boundaries of OUTER."
-    (eq (rect-obscured inner outer) 'fully-obscured))
-
   (define (rect-wholly-visible-p rect)
     "Return t if RECT is completely inside the screen boundaries."
-    (rect-wholly-within-rect (list 0 0 (screen-width) (screen-height))
-                             rect))
+    (and (>= (car rect) 0) (>= (nth 1 rect) 0)
+	 (<= (nth 2 rect) (screen-width)) (<= (nth 3 rect) (screen-height))))
 
   (define (rectangle-heads rect)
     "Return the number of screen heads that rectangle RECT appears on."
diff --git a/lisp/sawfish/wm/util/workarea.jl b/lisp/sawfish/wm/util/workarea.jl
index 16edfc0..b1a15c9 100644
--- a/lisp/sawfish/wm/util/workarea.jl
+++ b/lisp/sawfish/wm/util/workarea.jl
@@ -33,7 +33,6 @@
 	  sawfish.wm.util.rects
 	  sawfish.wm.windows
 	  sawfish.wm.workspace
-          sawfish.wm.viewport
 	  sawfish.wm.misc)
 
   (define (define-window-strut w left top right bottom)
@@ -67,30 +66,29 @@
       ;; or span multiple heads, or be on a different head
       ;; to that requested
       (let loop ((rest avoided))
-           (cond ((null rest) (rect-within-head-p rect head))
-                 ((> (rect-2d-overlap
-                      (window-frame-dimensions (car rest))
-                      (window-position (car rest))
-                      rect)
-                     0)
+           (cond ((null rest) t)
+                 ((or (> (rect-2d-overlap
+                          (window-frame-dimensions (car rest))
+                          (window-position (car rest))
+                          rect) 0)
+                      (/= (rectangle-heads rect) 1)
+                      (and head (/= head (find-head (car rect) (cadr rect)))))
                   nil)
                  (t (loop (cdr rest))))))
 
     (let* ((grid (grid-from-edges (car edges) (cdr edges)))
 	   ;; find all possible rectangles
-           (rects (rectangles-from-grid (sort (car grid))
-                                        (sort (cdr grid))
-                                        pred)))
+	   (rects (rectangles-from-grid
+		   (sort (car grid)) (sort (cdr grid)) pred)))
 
       ;; return the largest
       (let ((max-area 0)
 	    (max-rect nil))
 	(mapc (lambda (rect)
-		(when (and (rect-within-viewport-p rect)
+		(when (and (rect-wholly-visible-p rect)
 			   (> (rectangle-area rect) max-area))
 		  (setq max-area (rectangle-area rect))
-		  (setq max-rect rect)))
-              rects)
+		  (setq max-rect rect))) rects)
 	max-rect)))
 
   (define (calculate-workarea #!key window head)
diff --git a/lisp/sawfish/wm/viewport.jl b/lisp/sawfish/wm/viewport.jl
index 68aa6d4..77c0909 100644
--- a/lisp/sawfish/wm/viewport.jl
+++ b/lisp/sawfish/wm/viewport.jl
@@ -31,17 +31,12 @@
 	    move-window-to-current-viewport
 	    set-window-viewport
 	    move-window-viewport
-            viewport-at
 	    window-viewport
             viewport-offset
             window-relative-position
 	    window-absolute-position
 	    set-number-of-viewports
-            rect-within-viewport-p
-            rect-within-head-p
-            window-head-any-viewport
 	    viewport-minimum-size-changed
-            viewport-honor-workspace-edges
 	    viewport-windows)
 
     (open rep
@@ -52,7 +47,6 @@
 	  sawfish.wm.commands
 	  sawfish.wm.workspace
 	  sawfish.wm.custom
-          sawfish.wm.util.rects
 	  sawfish.wm.session.init)
 
   ;; Virtual workspaces are implemented by moving windows in and out of
@@ -97,12 +91,6 @@
   (defvar viewport-x-offset 0)
   (defvar viewport-y-offset 0)
 
-  (define (viewport-honor-workspace-edges)
-    "Whether or not to prevent the display from moving past the
-current viewport boundaries.  Returns true if `viewport-boundary-mode'
-is not set to 'dynamic."
-    (not (eq viewport-boundary-mode 'dynamic)))
-
   (define (warp-viewport x y)
     "Change view by incrementing the coordinates of the x,y position."
     (define (move-window w)
@@ -336,7 +324,7 @@ viewport."
 	  (<= (+ (cdr pos) (cdr dims)) top))))
 
   (define (window-outside-viewport-p window #!optional viewport)
-    "True if no part of `window' is inside the current viewport.  If
+    "True if some part of `window' is inside the current viewport.  If
 `viewport' is specified check against that viewport rather than the
 current one."
     (let* ((cur-vp (screen-viewport))
@@ -351,7 +339,7 @@ current one."
                       (* (- (cdr viewport) (cdr cur-vp))
                          height)
                     0))
-           (y-max (+ y-min height))
+           (y-max (+ y-min width))
            (pos (window-position window))
            (dims (window-frame-dimensions window)))
       (or (<= (+ (car pos) (car dims)) x-min)
@@ -384,82 +372,12 @@ current one."
 			   (+ (quotient (+ (cdr pos) viewport-y-offset)
 					(screen-height)) row))))
 
-  (define (viewport-at x y)
-    "Returns a cons cell consisting of the column and row of the
-viewport containing the specified coordinates."
-    (let ((x (+ x viewport-x-offset))
-          (y (+ y viewport-y-offset)))
-      ;; If x or y is negative the viewport must be adjusted by one.
-      (cons (- (quotient x (screen-width))
-               (if (< x 0)
-                   1
-                 0))
-	    (- (quotient y (screen-height))
-               (if (< y 0)
-                   1
-                 0)))))
-
   (define (window-viewport w)
     "Returns a cons cell consisting of the column and row of the
-viewport containing (or mostly containing) `w'."
-    (let* ((pos (window-position w))
-           (dims (window-dimensions w)))
-      (viewport-at (+ (car pos) (quotient (car dims) 2))
-                   (+ (cdr pos) (quotient (cdr dims) 2)))))
-
-  ;; From sawfish.wm.util.rects:
-  ;; A rectangle is (LEFT TOP RIGHT BOTTOM [WEIGHT])
-  ;; The left and top edges are considered part of the rectangle,
-  ;; the right and bottom edges are not.
-
-  (define (rect-within-viewport-p rect #!optional viewport)
-    "Return t if `rect' is entirely inside the screen boundaries for
-some viewport, regardless of whether it is the current viewport, or
-even if the viewport currently exists.  If `viewport' is specified
-check only against that viewport."
-    (let ((vp (viewport-at (car rect) (nth 1 rect))))
-      (when (or (null viewport) (equal vp viewport))
-        (let ((offset (viewport-offset vp)))
-          (rect-wholly-within-rect (list (car offset)
-                                         (cdr offset)
-                                         (+ (car offset) (screen-width))
-                                         (+ (cdr offset) (screen-height)))
-                                   rect)))))
-
-  ;; The next two functions should perhaps go in a "heads" module if
-  ;; there were one.  But what makes them interesting is that they
-  ;; must account for viewports, which is why I put them here.
-
-  (define (rect-within-head-p rect #!optional head)
-    "Return t if `rect' is entirely within some head on some
-viewport. If `head' is provided `rect' must be within that head on
-some viewport."
-    (let* ((offset (viewport-offset (viewport-at (car rect)
-                                                 (nth 1 rect))))
-           (left (- (car rect) (car offset)))
-           (top (- (nth 1 rect) (cdr offset)))
-           (right (- (nth 2 rect) (car offset)))
-           (bottom (- (nth 3 rect) (cdr offset)))
-           (head (or head (find-head left top)))
-           (head-pos (head-offset head))
-           (head-dims (head-dimensions head)))
-      (rect-wholly-within-rect (list (car head-pos)
-                                     (cdr head-pos)
-                                     (+ (car head-pos) (car head-dims))
-                                     (+ (cdr head-pos) (cdr head-dims)))
-                               (list left top right bottom))))
-
-  (define (window-head-any-viewport w)
-    "Return the id of the head that would contain `w', if the viewport
-`w' occupies were visible."
-    (let* ((coords (window-position w))
-           (dims (window-dimensions w))
-           (center (cons (+ (car coords) (quotient (car dims) 2))
-                         (+ (cdr coords) (quotient (cdr dims) 2))))
-           (vp-offset (viewport-offset (viewport-at (car center)
-                                                    (cdr center)))))
-      (find-head (- (car center) (car vp-offset))
-                 (- (cdr center) (cdr vp-offset)))))
+viewport containing w."
+    (let ((position (window-position w)))
+      (cons (quotient (+ (car position) viewport-x-offset) (screen-width))
+	    (quotient (+ (cdr position) viewport-y-offset) (screen-height)))))
 
   (define (viewport-offset vp)
     "`vp' is (column . row) of a viewport (whether or not that
diff --git a/man/news.texi b/man/news.texi
index dab6bcc..d6bb389 100644
--- a/man/news.texi
+++ b/man/news.texi
@@ -32,9 +32,7 @@ they occurred between. For more detailed information see the
 @item In @code{infinite-desktop} there is no longer any option to
 prevent the viewport from going beyond the edge of the workspace.
 Instead it is prevented if and only if @code{viewport-boundary-mode} is
-not set to @code{'dynamic}.  This means that the default behavior is now
-to stop at workspace boundaries; to acheive the previous behavior set
- code{viewport-boundary-mode} to @code{'dynamic}.
+not set to @code{'dynamic}.
 
 @item Sawfish now got an implementation of the FDO (freedesktop.org) application menu, it is
 beeing generated, if there's no customized apps-menu
diff --git a/man/sawfish.texi b/man/sawfish.texi
index 0f366ba..d69702b 100644
--- a/man/sawfish.texi
+++ b/man/sawfish.texi
@@ -3949,19 +3949,6 @@ specified by @code{viewport-minimum-dimensions}.  Defaults to
 @code{wrap-around}.
 @end defvar
 
- defun viewport-honor-workspace-edges
-Whether or not the display is permitted to move past the current
-viewport boundaries.  It returns true if @code{viewport-boundary-mode}
-is not set to @code{dynamic}.
- end defun
-
- defun viewport-at x y
-Returns a cons cell consisting of @code{(column . row)} of the viewport
-containing the specified @code{x} and @code{y} coordinates.  The
-coordinates are specified relative to the current viewport, so
- code{(viewport-at 0 0)} is equivalent to @code{(screen-viewport)}.
- end defun
-
 @defun warp-viewport x y
 Change the position of the physical display, such that location
 @code{(@var{x}, @var{y})} is at the top-left of the display.  The
@@ -4513,13 +4500,6 @@ window.  If @var{window} is supplied and @var{nil}, return
 @code{(pointer-head)}.
 @end defun
 
- defun window-head-any-viewport window
-Like @code{current-head}, this will return the ID of the heand
-containing the specified window.  But unlike @code{current-head},
- code{window-head-any-viewport} returns the head that the window would
-be in if its viewport were the visible viewport.
- end defun
-
 @defun current-head-dimensions &optional window
 Return a cons-cell defining the size in pixels of the current head
 (that containing the window @var{window}, or the pointer if
@@ -5550,7 +5530,6 @@ Returns the number of X events waiting to be handled.
 * Pointer Functions::
 * Grab Functions::
 * Display Functions::
-* Rectangle Functions::
 * Gradient Functions::
 * Other Functions::
 @end menu
@@ -5725,7 +5704,7 @@ called.
 @end defun
 
 
- node Display Functions, Rectangle Functions, Grab Functions, Miscellaneous Functions
+ node Display Functions, Gradient Functions, Grab Functions, Miscellaneous Functions
 @section Display Functions
 @cindex Display functions
 @cindex Functions, display
@@ -5809,172 +5788,7 @@ has the input focus.
 @end defun
 
 
- node Rectangle Functions, Gradient Functions, Display Functions, Miscellaneous Functions
- section Rectangle Functions
- cindex Rectangle functions
- cindex Functions, rectangle
-
-Rectangles define a region of the display.  A rectangle is a list of
-values: @code{(left top right bottom [weight])}.  @code{left} and
- code{top} are the @code{x} and @code{y} coordinates of the upper left
-corner, @code{right} and @code{bottom} are the coordinates for the lower
-right corner.  @code{weight} is an integer.  The bulk of the rectangle
-management functions are in sawfish.wm.util.rects.
-
- defun rect-left rect
-The x-axis value of the left side of the rectangle.  Equivalent to
- code{car}
- end defun
-
- defun rect-top rect
-The y-axis value of the top of the rectangle.  Equivalent to
- code{cadr}
- end defun
-
- defun rect-right rect
-The x-axis value of the right side of the rectangle.  Equivalent to
- code{caddr}
- end defun
-
- defun rect-bottom rect
-The y-axis value of the bottom of the rectangle.  Equivalent to
- code{cadddr}
- end defun
-
- defun rect-obscured r by
-Check whether the rectangle @code{r} is wholly or partially contained in
-rectangle @code{by}.  Returns one of the symbols @code{unobscured},
- code{partially-obscured}, or @code{fully-obscured}.
- end defun
-
- defun rect-minus r s &optional tail
-Return a list of rectangles whose union is the part of rectangle
- code{r} not contained in rectangle @code{s}.  If @code{tail} is given,
-the result is prepended to it.
- end defun
-
- defun rectangles-from-grid x-points y-poinst &optional pred
-The two lists of integers @code{x-points} and @code{y-points} define a
-rectangular grid. Return the complete list of rectangles formed by the
-intersections of the grid.
-
-If @code{pred} is defined it is called for each rectangle and only those
-for which it returns @code{t} are added to the returned list.
-
-Assumes that @code{x-points} and @code{y-points} are both sorted
-smallest->largest.
- end defun
-
- defun rectangles-from-windows windows &optional weight-fun
-Returns a list of rectangle objects representing the list of window
-objects @code{windows}.
-
-If @code{weight-fun} is defined, it is a function to call on each window
-to return the weight for that window. If not defined, the window's
- code{weight} property is used instead.
- end defun
-
- defun grid-from-rectangles rects &optional with-root
-Given a list of rectangles @code{rects} return a cons cell
- code{(x-points . y-points)} defining the grid they represent.
-
-If @code{with-root} is non-nil, then add the root window boundaries to
-the grid.
- end defun
-
- defun rectangle-area rect
-Returns the area of the specified rectangle.
- end defun
-
- defun rectangle-from-coords point dims
-Return the rectangle object with origin @code{point} and dimensions
- code{dims} 
- end defun
-
- defun rectangle-corners
-Return a list of four cons cells representing the coordinates of the
-corners of the rectangle @code{rect}.
- end defun
-
- defun rectangle-center rect
-Returns a cons cell of the (approximate, to the nearest integer)
-coordinates of the center of the rectangle @code{rect}.
- end defun
-
- defun rectangle-center* point dims
-The same as @code{rectangle-center} except that the rectangle is
-specified via the x,y coordinates @code{point} and the dimensions
- code{dims} 
- end defun
-
- defun rectangle-union rect1 rect2
-Gives the smallest rectangle containing both @code{rect1} and
- code{rect2}   The weight of the resulting rectangle is the weight of
- code{rect1} 
- end defun
-
- defun rectangle-intersection rect1 rect2
-Gives the intersection of the two rectangles @code{rect1} and
- code{rect2}   The weigth of the resultant rectangle is the weight of
- code{rect1}   Returns @code{nil} if there the two rectangles do not
-intersect.
- end defun
-
- defun rect-1d-overlap a-1 a-2 b-1 b-2
- code{a-1} to @code{a-2} indicates one line segment and @code{b-1} to
- code{b-2} indicates another.  Returns the overlap between the two line
-segments.
- end defun
-
- defun rect-2d-overlap dims point rect
-Returns the overlap between two rectangles, one with dimensions
- code{dims} and upper-left corner at @code{point}; the other is defined
-by @code{rect}.
- end defun
-
- defun rect-2d-overlap* rect1 rect2
-Like @code{rect-2d-overlap}, except that the rectangles are
- code{rect1} and @code{rect2}.
- end defun
-
- defun rect-total-overlap dims point rects
-Returns the total area of the overlap between a rectangle defined by
- code{dims} and @code{point}, and the list of rectangles @code{rects}
-when placed at @code{point}.
- end defun
-
- defun rect-wholly-within-rect outer inner
-Returns @code{t} if @code{inner} is completely within the boundaries of
- code{outer} 
- end defun
-
- defun rect-wholly-visible-p
-Returns @code{t} if @code{rect} is completely inside the screen
-boundaries.
- end defun
-
- defun rectangle-heads
-Returns the number of screen heads that the rectangle @code{rect}
-appears on.
- end defun
-
-These functions are found in sawfish.wm.viewport:
-
- defun rect-within-viewport-p rect &optional viewport
-Return @code{t} if @code{rect} is entirely inside the screen boundaries
-for some viewport, regardless of whether it is the current viewport, or
-even if the viewport currently exists.  If @code{viewport} is specified
-check only against that viewport.
- end defun
-
- defun rect-within-head-p rect &optional head
-Return @code{t} if @code{rect} is entirely within some head on some
-viewport. If @code{head} is provided @code{rect} must be within that
-head on some viewport.
- end defun
-
-
- node Gradient Functions, Other Functions, Rectangle Functions, Miscellaneous Functions
+ node Gradient Functions, Other Functions, Display Functions, Miscellaneous Functions
 @section Gradient Functions
 @cindex Gradient functions
 @cindex Functions, gradients



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]