[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Помощ за грешка #616 (Emacs)
From: |
Yavor Doganov |
Subject: |
Помощ за грешка #616 (Emacs) |
Date: |
Fri, 24 Oct 2008 22:29:37 +0300 |
User-agent: |
Wanderlust/2.15.5 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (Gojō) APEL/10.7 Emacs/22.3 (i486-pc-linux-gnu) MULE/5.0 (SAKAKI) |
Опитвам се да добавя поддръжка на SVG в Emacs.app (порта на Emacs за
GNUstep):
<http://emacsbugs.donarmstrong.com/616>
При GTK+ и Lucid това става чрез librsvg2. В Emacs.app поддръжката за
изображения (png, gif, tiff и jpeg) е реализирана чрез EmacsImage,
който е подклас на NSImage (същинската работа се върши от
NSBitmapImageRep), като Emacs не се свързва динамично с libpng, libgif
и т.н., а се ползват рутини и методи в GNUstep GUI (която е динамично
свързана с тези библиотеки за изображения).
За xpm и xbm има специални методи, както и интерфейс на Си.
Поддръжката за XPM в GNUstep беше реализирана наскоро от Хубърт Чати
(с когото поддържаме GNUstep в Дебиан) и очевидно понеже няма такава в
Cocoa, порта на Емакс все още използва свой начин.
Та реших да пробвам директно да ползвам librsvg, поне докато някой ден
не бъде реализирана в GNUstep. Докарах го дотам да изобразява
изображения във формат SVG, като дори и не плющи (ура!). Единствения
проблем е, че прозрачните изображения (като splash.svg и gnus.svg) се
показват винаги на черен фон. Ако настроя фона на Emacs да е черен,
само тогава се виждат прозрачни...
Очевидно някъде бъркам. Помощ?
За да тествате кръпката, прилагате я в дървото на Emacs (CVS trunk), и
autoreconf
./configure --with-x=no (заради #620)
make bootstrap
./configure --with-ns
make
make install
gdb ./nextstep/Emacs.app/Emacs
В Дебиан/gNS е достатъчно да се инсталира само libgnustep-gui-dev. За
gNS трябва и gnustep-back ot gns.katsarov.org.
Благодаря предварително.
Index: configure.in
===================================================================
RCS file: /sources/emacs/emacs/configure.in,v
retrieving revision 1.572
diff -u -u -r1.572 configure.in
--- configure.in 24 Oct 2008 07:22:35 -0000 1.572
+++ configure.in 24 Oct 2008 18:12:31 -0000
@@ -1491,7 +1491,7 @@
### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
HAVE_RSVG=no
-if test "${HAVE_X11}" = "yes"; then
+if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes"; then
if test "${with_rsvg}" != "no"; then
RSVG_REQUIRED=2.0.0
RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
Index: src/image.c
===================================================================
RCS file: /sources/emacs/emacs/src/image.c,v
retrieving revision 1.114
diff -u -u -r1.114 image.c
--- src/image.c 3 Oct 2008 18:23:43 -0000 1.114
+++ src/image.c 24 Oct 2008 18:12:49 -0000
@@ -8127,6 +8127,11 @@
background.red >>= 8;
background.green >>= 8;
background.blue >>= 8;
+#elif defined (HAVE_NS)
+ background.pixel = FRAME_BACKGROUND_PIXEL (f);
+ background.red = RED_FROM_ULONG (background.pixel);
+ background.green = GREEN_FROM_ULONG (background.pixel);
+ background.blue = BLUE_FROM_ULONG (background.pixel);
#else /* not HAVE_X_WINDOWS*/
#error FIXME
#endif
@@ -8174,9 +8179,11 @@
img->width = width;
img->height = height;
+#ifndef HAVE_NS
/* Maybe fill in the background field while we have ximg handy.
Casting avoids a GCC warning. */
IMAGE_BACKGROUND (img, f, (XImagePtr_or_DC)ximg);
+#endif
/* Put the image into the pixmap, then free the X image and its
buffer. */
- Помощ за грешка #616 (Emacs),
Yavor Doganov <=
- Re: Помощ за грешка #616 (Emacs), Yavor Doganov, 2008/10/24
- Re: Помощ за грешка #616 (Emacs), Kaloian Doganov, 2008/10/25
- Re: Помощ за грешка #616 (Emacs), Yavor Doganov, 2008/10/25
- Re: Помощ за грешка #616 (Emacs), Kaloian Doganov, 2008/10/27
- Re: Помощ за грешка #616 (Emacs), Yavor Doganov, 2008/10/27
- Re: Помощ за грешка #616 (Emacs), Kaloian Doganov, 2008/10/27
- Re: Помощ за грешка #616 (Emacs), Yavor Doganov, 2008/10/27
- Re: Помощ за грешка #616 (Emacs), Kaloian Doganov, 2008/10/27
- Re: Помощ за грешка #616 (Emacs), Yavor Doganov, 2008/10/27
- Re: Помощ за грешка #616 (Emacs), Kaloian Doganov, 2008/10/27