gug-bg-herd
[Top][All Lists]
Advanced

[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.  */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]