[cells-cvs] CVS cells/gui-geometry
ktilton
ktilton at common-lisp.net
Fri Apr 11 09:19:42 UTC 2008
Update of /project/cells/cvsroot/cells/gui-geometry
In directory clnet:/tmp/cvs-serv5826/gui-geometry
Modified Files:
geo-family.lisp geo-macros.lisp geometer.lisp
Log Message:
--- /project/cells/cvsroot/cells/gui-geometry/geo-family.lisp 2007/11/30 16:51:19 1.12
+++ /project/cells/cvsroot/cells/gui-geometry/geo-family.lisp 2008/04/11 09:19:41 1.13
@@ -120,64 +120,35 @@
;--------------- geo.row.flow ----------------------------
(export! geo-row-flow)
-(defmodel geo-row-flow (geo-inline)
- ((spacing-hz :cell nil :initarg :spacing-hz :initform 0 :reader spacing-hz)
- (spacing-vt :cell nil :initarg :spacing-vt :initform 0 :reader spacing-vt)
- (aligned :cell nil :initarg :aligned :initform nil :reader aligned))
- (:default-initargs
- :lb (c? (geo-kid-wrap self 'pb))
- :kid-slots (lambda (self)
- (declare (ignore self))
-
- (list
- (mk-kid-slot (py)
- (c? (py-maintain-pt
- (let ((ph (^prior-sib-pr self (spacing-hz .parent) (aligned .parent))))
- (if (> (+ ph (l-width self)(outset .parent)) (l-width .parent))
- (^prior-sib-pb self (spacing-vt .parent))
- (^prior-sib-pt self))))))
- (mk-kid-slot (px)
- (c? (px-maintain-pl
- (let ((ph (^prior-sib-pr self (spacing-hz .parent) (aligned .parent))))
- (if (> (+ ph (l-width self)(outset .parent)) (l-width .parent))
- 0
- ph)))))))))
-
-#| archive
-
-(defmodel geo-row-fv (family-values geo-row)())
-(defmodel geo-inline-fv (family-values geo-inline)())
-
-;-------------------------- IMMatrix ------------------------------------------
-
-(defmodel im-matrix (geo-zero-tl)
- ((columns :cell nil :initarg :columns :initform nil :accessor columns)
- (indent-hz :cell nil :initarg :indent-hz :initform 0 :accessor indent-hz)
- (spacing-hz :cell nil :initarg :spacing-hz :initform 0 :accessor spacing-hz)
- (spacing-vt :cell nil :initarg :spacing-vt :initform 0 :accessor spacing-vt))
- (:default-initargs
- :kid-slots (lambda (self)
- (declare (ignore self))
- (list
- (mk-kid-slot (px)
- (c? (let ((parent (fm-parent self)))
- (+ (indent-hz parent)
- (if (zerop (mod (fm-pos self)
- (or (columns parent)
- (length (kids parent)))))
- 0
- (+ (spacing-hz parent)
- (pr (find-prior self (kids parent)))))))))
- (mk-kid-slot (py)
- (c? (let* ((parent (fm-parent self))
- (psib (find-prior self (kids parent))))
- (if (and psib (columns parent))
- (if (zerop (mod (fm-pos self) (columns parent)))
- (+ (- (abs (spacing-vt parent))) (pb psib))
- (pt psib))
- 0))))))))
+(defmd geo-row-flow (geo-inline)
+ (spacing-hz 0)
+ (spacing-vt 0)
+ (aligned :cell nil)
+ (row-flow-layout
+ (c? (loop with max-pb = 0 and pl = 0 and pt = 0
+ for k in (^kids)
+ for kpr = (+ pl (l-width k))
+ when (unless (= pl 0)
+ (> kpr (- (l-width self) (outset self)))) do
+ (setf pl 0
+ pt (+ max-pb (downs (^spacing-vt))))
+
+ collect (cons pl pt) into pxys
+ do (incf pl (+ (l-width k)(^spacing-hz)))
+ (setf max-pb (min max-pb (+ pt (downs (l-height k)))))
+ finally (return (cons max-pb pxys)))))
+ :lb (c? (+ (bif (xys (^row-flow-layout))
+ (car xys) 0)
+ (downs (outset self))))
+ :kid-slots (lambda (self)
+ (declare (ignore self))
+ (list
+ (mk-kid-slot (px)
+ (c? (px-maintain-pl (car (nth (kid-no self) (cdr (row-flow-layout .parent)))))))
+ (mk-kid-slot (py)
+ (c? (py-maintain-pt (cdr (nth (kid-no self) (cdr (row-flow-layout .parent))))))))))
+
-|#
--- /project/cells/cvsroot/cells/gui-geometry/geo-macros.lisp 2007/12/11 19:35:16 1.1
+++ /project/cells/cvsroot/cells/gui-geometry/geo-macros.lisp 2008/04/11 09:19:41 1.2
@@ -77,7 +77,7 @@
(defmacro py-maintain-pB (pB)
`(- ,pB (^lB)))
-(export! centered-h? centered-v?)
+(export! centered-h? centered-v? lb-maintain-pB)
(defmacro ^fill-down (upper-type &optional (padding 0))
(let ((filled (gensym)))
--- /project/cells/cvsroot/cells/gui-geometry/geometer.lisp 2007/11/30 16:51:19 1.13
+++ /project/cells/cvsroot/cells/gui-geometry/geometer.lisp 2008/04/11 09:19:41 1.14
@@ -110,13 +110,26 @@
;sum pXYs up the family tree ;gave an odd result for cursor display....
(defun v2-xlate (outer inner outer-v2)
- (if (eql outer inner)
+ (if (eq outer inner)
outer-v2
(v2-xlate outer (fm-parent inner)
(v2-subtract outer-v2
(mkv2 (px inner) (py inner))))))
-(export! h-xlate v-xlate)
+(defun v2-xlate-out (inner outer inner-v2)
+ (if (eq outer inner)
+ inner-v2
+ (v2-xlate (fm-parent inner) outer
+ (v2-add inner-v2
+ (mkv2 (px inner) (py inner))))))
+
+(defun v2-xlate-between (from-v2 from to)
+ (cond
+ ((fm-includes from to)(v2-xlate from to from-v2))
+ ((fm-includes to from)(v2-xlate-out from to from-v2))
+ (t (break "time to extend v2-xlate-between"))))
+
+(export! h-xlate v-xlate v2-xlate-between)
(defun h-xlate (outer inner outer-h)
(if (eql outer inner)
More information about the Cells-cvs
mailing list