From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: YAMAMOTO Mitsuharu Newsgroups: gmane.emacs.devel Subject: Re: Printing Date: Sun, 19 Apr 2009 19:21:16 +0900 Organization: Faculty of Science, Chiba University Message-ID: References: <5f0660120903280331y780c80b7i57a8115dc4b029eb@mail.gmail.com> <49CE3A84.9070705@swipnet.se> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: multipart/mixed; boundary="Multipart_Sun_Apr_19_19:21:16_2009-1" X-Trace: ger.gmane.org 1240137944 32594 80.91.229.12 (19 Apr 2009 10:45:44 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 19 Apr 2009 10:45:44 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Apr 19 12:47:03 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1LvUY6-00057d-BC for ged-emacs-devel@m.gmane.org; Sun, 19 Apr 2009 12:47:02 +0200 Original-Received: from localhost ([127.0.0.1]:34657 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LvUWg-0005CX-WB for ged-emacs-devel@m.gmane.org; Sun, 19 Apr 2009 06:45:31 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LvU9R-0003La-NY for emacs-devel@gnu.org; Sun, 19 Apr 2009 06:21:29 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LvU9M-0003Jr-5l for emacs-devel@gnu.org; Sun, 19 Apr 2009 06:21:28 -0400 Original-Received: from [199.232.76.173] (port=33368 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LvU9L-0003Je-Hy for emacs-devel@gnu.org; Sun, 19 Apr 2009 06:21:23 -0400 Original-Received: from ntp.math.s.chiba-u.ac.jp ([133.82.132.2]:60196 helo=mathmail.math.s.chiba-u.ac.jp) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LvU9K-0004LT-3p for emacs-devel@gnu.org; Sun, 19 Apr 2009 06:21:23 -0400 Original-Received: from church.math.s.chiba-u.ac.jp (church [133.82.132.36]) by mathmail.math.s.chiba-u.ac.jp (Postfix) with ESMTP id 43C5D2C40 for ; Sun, 19 Apr 2009 19:21:16 +0900 (JST) In-Reply-To: User-Agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (=?ISO-8859-4?Q?Shij=F2?=) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) X-detected-operating-system: by monty-python.gnu.org: NetBSD 3.0 (DF) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:110348 Archived-At: --Multipart_Sun_Apr_19_19:21:16_2009-1 Content-Type: text/plain; charset=US-ASCII >>>>> On Tue, 07 Apr 2009 18:46:01 +0900, YAMAMOTO Mitsuharu said: >>> I tried making a really preliminary proof-of-concept cairo port. :-) >>> It's still rough and has several glitches/limitations, but at least >>> it can generate a "resolution-independent screenshot" PDF as >>> attached. Maybe I'll clean up the code this weekend and hopefully >>> post a patch. >> Here's the patch for the Emacs 23.0.92 pretest (not the trunk HEAD). >> * No configure support. The easiest way would be to compile it with >> the GTK+ support that is already linked with cairo libs. Add >> -DUSE_CAIRO to CFLAGS to activate the cairo code. >> * Currently, texts, rectangles (filling and stroking), and trapezoids >> for reliefs are drawn using cairo by hooking the corresponding >> drawing routine calls in xterm.c. This time, I combined the cairo drawing code with GTK+ print dialogs code, which is actually almost the same as examples in the GTK+ reference. The added primitives are: (x-page-setup-dialog): Pop up a page setup dialog. (x-get-page-setup): Return the value of the current page setup. It returns an alist like ((orientation . portrait) (width . 559.2755905511812) (height . 783.5697637795276) (left-margin . 18.0) (right-margin . 18.0) (top-margin . 18.0) (bottom-margin . 40.32000000000001)) (x-print-frames-dialog FRAMES): Pop up a print dialog to print the current contents of FRAMES. The last one is intended to be called after some pagination (in Lisp) that creates a frame per page. Below is a simple example. (defun test-print-buffer (buffer-or-name) "Paginate and print buffer contents." (interactive "bBuffer to export:") (with-current-buffer buffer-or-name (let* ((buffer (current-buffer)) (start-pos (point-min)) (end-pos (point-max)) (page-setup (if (fboundp 'x-get-page-setup) (x-get-page-setup) '((width . 559.0) (height . 783.0)))) (width-in-points (cdr (assq 'width page-setup))) (height-in-points (cdr (assq 'height page-setup))) buffers frames) (unwind-protect (progn (with-selected-frame (selected-frame) ;; Paginate and create a frame for each page. (while (< start-pos end-pos) (let ((inhibit-quit t)) (set-buffer (make-indirect-buffer buffer (generate-new-buffer-name (buffer-name buffer)) t)) (push (current-buffer) buffers) (setq kill-buffer-hook nil) ;; XXX (select-frame (make-frame '((internal-border-width . 0) (vertical-scroll-bars . nil) (left-fringe . 0) (right-fringe . 0) (menu-bar-lines . 0) (tool-bar-lines . 0) (line-spacing . 0) (minibuffer . nil) (visibility . nil) (cursor-type . nil))) 'norecord) (push (selected-frame) frames)) (set-frame-size (selected-frame) (floor (/ width-in-points (frame-char-width))) (floor (/ height-in-points (frame-char-height)))) (setq header-line-format nil) (setq mode-line-format nil) (set-window-start nil start-pos) (goto-char (window-end nil t)) (while (and (< start-pos (point)) (not (pos-visible-in-window-p (1- (point))))) (backward-char)) (narrow-to-region start-pos (point)) (setq start-pos (point)))) ;; Print the frames. (if (null frames) (error "Buffer %s is empty" buffer-or-name) (mapc 'make-frame-visible frames) (if (fboundp 'x-print-frames-dialog) (x-print-frames-dialog (reverse frames)) ;; Dummy stub just to reproduce an intermittent error ;; in x-print-frames-dialog even without it. (dolist (frame frames) (unless (eq (frame-visible-p frame) t) (error "Frames to be printed must be visible."))) (redisplay t)))) ;; Clean up (mapc 'delete-frame frames) (mapc 'kill-buffer buffers))))) You can try printing with M-x test-print-buffer RET. Because the current cairo drawing routines are hooked onto those in xterm.c in order to minimize the change, you'll see the actual frames on screen. Moreover, you might get an incorrect printed result because your window manager may clip the frames to fit in the screen size. Nevertheless, I think you can get the basic idea with this sample code. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp --Multipart_Sun_Apr_19_19:21:16_2009-1 Content-Type: application/octet-stream; type=gzip Content-Disposition: attachment; filename="emacs-23.0.92-cairo.patch.gz" Content-Transfer-Encoding: base64 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 1v2OUEQBAA== --Multipart_Sun_Apr_19_19:21:16_2009-1--