⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 progl

📁 Best algorithm for LZW ..C language
💻
📖 第 1 页 / 共 5 页
字号:
  ))(def-usage 'download-font  '(|'x_process-id| |'l_font-descriptor|)  't  fcn-group)(defun read-create-download-font (driver family size path)  (let ((f (read-font family size path)))       (create-font driver f)       (download-font driver f)       f))(def-usage 'read-create-download-font  '(|'x_process-id| |'st_family| |'x_size| |'st_path|)  'l_font-descriptor  fcn-group)(defun font-depth (f)  (- (font-body f) (font-cap-height f)))(defun font-height (f)  (font-cap-height f))(defun get-font-list (sc) ; arg is string-composer or font-server pid  (j-send-se sc 'get-font-list)  (pairify (mapcar	     '(lambda (x)		(cond ((stringp (cadr x)) (concat (cadr x)))		      (t (cadr x))))	     (j-get-items))))(defun get-all-font-info (sc) ; arg is string-composer or font-server pid  (mapc '(lambda (f)	   (rplacd (apply 'find-font f)	     (cdr (progn		    (j-send-se-list sc (cons 'get-font-info f))		    (mapcar 'cadr (j-get-items))))))	(get-font-list sc)));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; text.l -- fancy text strings;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(declare  (specials t)  (macros t))(eval-when (compile)  (load 'utilities)  (load 'constants)  (load 'zone)  (load 'font)  (load 'look))(defstruct  (text		; text structure    (:displace t)    (:list)    (:conc-name))  (text '||)			; the text to draw  (look (make-look))		; what style to draw it in  (kl 0)			; (starting) left kerning mask  (zone (make-zone))		; specific window, clipping box  (offset (make-point))		; offset of start point from zone ll  (kr 0)			; (final) right kerning mask  (delta (make-point))		; change in (x,y) relative to start point  (nn -1)			; char count);;; NOTE: clipping box of ((0 0) (-1 -1)) uses window boundaries(defun text-width (s)		; presumes non-rotated  (x (text-delta s)))(defun text-box (s)		; presumes non-rotated  (make-box    ll (subtract-points	 (text-start-point s)	 (make-point x 0 y (font-depth (look-font (text-look s)))))    ur (add-points	 (text-end-point s)	 (make-point x 0 y (font-height (look-font (text-look s)))))))(defun text-start-point (s)  (add-points    (ll (zone-box (text-zone s)))    (text-offset s)))(defun text-end-point (s)  (add-points    (text-start-point s)    (text-delta s)))(defun text-x (s)	; x coord of start of text object  (+ (x (ll (zone-box (text-zone s))))     (x (text-offset s))))(defun text-y (s)	; y coord of start of text object  (+ (y (ll (zone-box (text-zone s))))     (y (text-offset s))))(defun text-xx (s)	; x coord of end of text object  (+ (x (ll (zone-box (text-zone s))))     (x (text-offset s))     (x (text-delta s))))(defun text-yy (s)	; y coord of end of text object  (+ (y (ll (zone-box (text-zone s))))     (y (text-offset s))     (y (text-delta s))))(defun move-text (s p)	; move s to new x,y  (alter-text s    offset (subtract-points p (ll (zone-box (text-zone s))))))(defun draw-text (s)		; quietly draw text, clipping to zone box  (let (((x y) (text-start-point s))	(l (text-look s)))       (j-put-items	 `((J-STRING compose)	   (J-INT ,(window-id (zone-window (text-zone s))))	   (J-STRING ,(text-text s))	   (J-STRING ,(font-name (look-font l)))	   (J-INT ,(font-size (look-font l)))	   (J-INT ,(boole 7 (look-mode l) QUIET))	   (J-INT ,(look-colour l))	   (J-INT ,(look-gap l))	   (J-INT ,(look-ul l))	   (J-INT ,(text-kl s))	   (J-INT ,x)	   (J-INT ,y)	   (J-INT ,(x (cond			((zerop (boole 1 ROTATE-180 (look-mode l)))			 (ur (zone-box (text-zone s))))			(t (ll (zone-box (text-zone s)))))))	   (J-INT ,(y (cond			((zerop (boole 1 ROTATE-90 (look-mode l)))			 (ur (zone-box (text-zone s))))			(t (ll (zone-box (text-zone s)))))))	   (J-INT ,(text-nn s))	  ))       (j-send (get (machine-servers		      (window-machine			(zone-window			  (text-zone s))))		    'text-composer))  ))(defun undraw-text (s)	; quietly undraw text, clipping to zone box  (let (((x y) (text-start-point s))	(l (text-look s)))       (j-put-items	 `((J-STRING compose)	   (J-INT ,(window-id (zone-window (text-zone s))))	   (J-STRING ,(text-text s))	   (J-STRING ,(font-name (look-font l)))	   (J-INT ,(font-size (look-font l)))	   (J-INT ,(boole 7 OVERSTRIKE QUIET (look-mode l)))	   (J-INT ,(inverse-colour (look-colour l)))	   (J-INT ,(look-gap l))	   (J-INT ,(look-ul l))	   (J-INT ,(text-kl s))	   (J-INT ,x)	   (J-INT ,y)	   (J-INT ,(x (cond			((zerop (boole 1 ROTATE-180 (look-mode l)))			 (ur (zone-box (text-zone s))))			(t (ll (zone-box (text-zone s)))))))	   (J-INT ,(y (cond			((zerop (boole 1 ROTATE-90 (look-mode l)))			 (ur (zone-box (text-zone s))))			(t (ll (zone-box (text-zone s)))))))	   (J-INT ,(text-nn s))	  ))       (j-send (get (machine-servers		      (window-machine			(zone-window			  (text-zone s))))		    'text-composer))  ))(defun format-text (s)	; format text without drawing or clipping  (let ((memop (symbolp (text-text s)))	; can only memoize symbols	(k) (p) (q) (l (text-look s)))       (cond	 (memop					; are we memoizing? yes!	   (setq k (unique-look-id l))	; key based on look	   (setq p (get (text-text s) k))		; alist found on plist	   (setq q (assoc (text-kl s) p))))		; entry based on kl       (cond	 (q (alter-text s			; if info found	      kr (cadr q)			; record result	      delta (caddr q)			; then return	      nn (cadddr q)))	 (t					; otherwise compute data	   (j-put-items	     `((J-STRING compose)	       (J-INT 0)			; no window needed	       (J-STRING ,(text-text s))	       (J-STRING ,(font-name (look-font l)))	       (J-INT ,(font-size (look-font l)))	       (J-INT ,(boole 7 NO-DRAW (look-mode l)))	       (J-INT ,(look-colour l))	       (J-INT ,(look-gap l))	       (J-INT ,(look-ul l))	       (J-INT ,(text-kl s))	       (J-INT 0)			; starting point 0 0	       (J-INT 0)	       (J-INT -1)			; no clipping	       (J-INT -1)	       (J-INT -1)	      ))	   (j-send (get (machine-servers			  (window-machine			    (zone-window			      (text-zone s))))			'text-composer))	   (let ((kr (j-geti))			; now record result		 (xx (j-geti))		 (yy (j-geti))		 (nn (j-geti)))		(alter-text s		  kr kr		  delta (make-point x xx y yy)		  nn nn)		(cond (memop				; memoize if req'd			(cond (p (nconc p				   (ncons (list (text-kl s) kr						(text-delta s) nn))))			      (t (putprop (text-text s)				   (ncons (list (text-kl s) kr						(text-delta s) nn))				   k))))		))	 ))       't))					; always return t(defun scan-text (s p) ; scan text s for point p, return (kr delta nn)  (let (((x y) (text-start-point s))		; inside: check text	(l (text-look s)))       (j-put-items	 `((J-STRING compose)	   (J-INT 0)	   (J-STRING ,(text-text s))	   (J-STRING ,(font-name (look-font l)))	   (J-INT ,(font-size (look-font l)))	   (J-INT ,(boole 7 NO-DRAW (look-mode l)))	   (J-INT ,(look-colour l))	   (J-INT ,(look-gap l))	   (J-INT ,(look-ul l))	   (J-INT ,(text-kl s))	   (J-INT ,x)	   (J-INT ,y)	   (J-INT ,(x p))	   (J-INT ,(y p))	   (J-INT ,(text-nn s))	  ))       (j-send (get (machine-servers		      (window-machine			(zone-window			  (text-zone s))))		    'text-composer))       (let ((kr (j-geti))			; now record result	     (xx (j-geti))	     (yy (j-geti))	     (nn (j-geti)))	    (list kr (make-point x (- xx x) y (- yy y)) nn))  ))(defun format-draw-text (s)		; draw it while formatting  (let ((memop (symbolp (text-text s)))	; can only memoize symbols	((x y) (text-start-point s))	(k) (p) (q) (l (text-look s)))       (cond	 (memop					; are we memoizing? yes!	   (setq k (unique-look-id l))	; key based on look	   (setq p (get (text-text s) k))		; alist found on plist	   (setq q (assoc (text-kl s) p))))		; entry based on kl       (cond	 (q (alter-text s			; if info found	      kr (cadr q)			; record result	      delta (caddr q)	      nn (cadddr q))	    (draw-text s))			; draw it & return	 (t					; otherwise compute data	   (j-put-items	     `((J-STRING compose)	       (J-INT ,(window-id (zone-window (text-zone s))))	       (J-STRING ,(text-text s))	       (J-STRING ,(font-name (look-font l )))	       (J-INT ,(font-size (look-font l)))	       (J-INT ,(boole 4 (look-mode l) QUIET))	       (J-INT ,(look-colour l))	       (J-INT ,(look-gap l))	       (J-INT ,(look-ul l))	       (J-INT ,(text-kl s))	       (J-INT ,x)	       (J-INT ,y)	       (J-INT ,(x (cond			    ((zerop (boole 1 ROTATE-180 (look-mode l)))			     (ur (zone-box (text-zone s))))			    (t (ll (zone-box (text-zone s)))))))	       (J-INT ,(y (cond			    ((zerop (boole 1 ROTATE-90 (look-mode l)))			     (ur (zone-box (text-zone s))))			    (t (ll (zone-box (text-zone s)))))))	       (J-INT -1)			; format to end of text	      ))	   (j-send (get (machine-servers			  (window-machine			    (zone-window			      (text-zone s))))			'text-composer))	   (let ((kr (j-geti))			; now alter result data		 (xx (j-geti))		 (yy (j-geti))		 (nn (j-geti)))		(cond ((neq nn (length (exploden (text-text s))))		       (format-text s))	; actually clipped! reformat		      (t (alter-text s			   kr kr			   delta (make-point x (- xx x) y (- yy y))			   nn nn)			 (cond			   (memop		; memoize if req'd			     (cond (p (nconc p					(ncons (list (text-kl s) kr						     (text-delta s) nn))))				   (t (putprop (text-text s)					(ncons (list (text-kl s) kr						     (text-delta s) nn))					k))))			 ))		))	 ))       't))					; always return t(defun backspace-text (s n)	; undraw last n characters, remove from text  (cond				; this presumes s has valid delta,kr,nn    ((plusp (text-nn s))	; proceed only if length > 0     (setq n (min n (text-nn s)))	; can't delete more than nn chars     (let ((text (text-text s))	   (l (text-look s)))	  (alter-text s		; keep all but last n chars	    text (substring text 1 (- (text-nn s) n))	    nn (- (text-nn s) n))	  (format-text s)		; reformat to find the new end	  (j-put-items	    `((J-STRING compose)	; now undraw last character	      (J-INT ,(window-id (zone-window (text-zone s))))	      (J-STRING ,(substring text (- n))) ; undraw last n chars	      (J-STRING ,(font-name (look-font l)))	      (J-INT ,(font-size (look-font l)))	      (J-INT ,(boole 7 QUIET OVERSTRIKE (look-mode l)))	      (J-INT ,(inverse-colour (look-colour l)))	      (J-INT ,(look-gap l))	      (J-INT ,(look-ul l))	      (J-INT ,(text-kr s))	      (J-INT ,(text-xx s))	      (J-INT ,(text-yy s))	      (J-INT ,(x (cond			   ((zerop (boole 1 ROTATE-180 (look-mode l)))			    (ur (zone-box (text-zone s))))			   (t (ll (zone-box (text-zone s)))))))	      (J-INT ,(y (cond			   ((zerop (boole 1 ROTATE-90 (look-mode l)))			    (ur (zone-box (text-zone s))))			   (t (ll (zone-box (text-zone s)))))))	      (J-INT ,n)	     ))	  (j-send (get (machine-servers			 (window-machine			   (zone-window			     (text-zone s))))		       'text-composer))	  't))			; return t if able to do it; nil if nn <= 0  ))(defun append-text (s c)	; draw new char(s) & add to end of text  (cond ((fixp c)		; this presumes s has valid delta,kr,nn	 (setq c (ascii c))))  (j-put-items    `((J-STRING compose)	; draw new last character(s)      (J-INT ,(window-id (zone-window (text-zone s))))      (J-STRING ,c)      (J-STRING ,(font-name (look-font (text-look s))))      (J-INT ,(font-size (look-font (text-look s))))      (J-INT ,(boole 4 (look-mode (text-look s)) QUIET))	; be noisy!      (J-INT ,(look-colour (text-look s)))      (J-INT ,(look-gap (text-look s)))      (J-INT ,(look-ul (text-look s)))      (J-INT ,(text-kr s))	; this presumes s has valid delta,kr,nn      (J-INT ,(text-xx s))      (J-INT ,(text-yy s))	       (J-INT ,(x (cond			    ((zerop (boole 1 ROTATE-180 (look-mode l)))			     (ur (zone-box (text-zone s))))			    (t (ll (zone-box (text-zone s)))))))	       (J-INT ,(y (cond			    ((zerop (boole 1 ROTATE-90 (look-mode l)))			     (ur (zone-box (text-zone s))))			    (t (ll (zone-box (text-zone s)))))))      (J-INT -1)     ))  (j-send (get (machine-servers		 (window-machine		   (zone-window		     (text-zone s))))	       'text-composer))  (let ((kr (j-geti))	(xx (j-geti))	(yy (j-geti))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -