polynomial-c    14/11/02 19:13:45

  Added:                icewm-1.3.9-fribidi.patch
  Removed:              icewm-1.3.7-uclibc.patch icewm-1.3.7-gcc47.patch
                        icewm-1.3.7-build-fixes.patch icewm-uclibc.patch
                        icewm-wmclient.patch icewm-1.2.37-gnome2.patch
                        icewm-1.2.37-libX11-1.5.0-deprecated.patch
                        icewm-1.3.7-deprecated.patch
                        icewm-1.3.7-configurenotify.patch icewm-menu.patch
  Log:
  Version bump (bug #525212). Removed old (bug #525022)
  
  (Portage version: 2.2.14/cvs/Linux x86_64, signed Manifest commit with key 
0x981CA6FC)

Revision  Changes    Path
1.1                  x11-wm/icewm/files/icewm-1.3.9-fribidi.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-wm/icewm/files/icewm-1.3.9-fribidi.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/x11-wm/icewm/files/icewm-1.3.9-fribidi.patch?rev=1.1&content-type=text/plain

Index: icewm-1.3.9-fribidi.patch
===================================================================
--- icewm-1.3.9/configure.ac
+++ icewm-1.3.9/configure.ac
@@ -53,6 +53,17 @@
     features="$features i18n"
 fi
 
+AC_ARG_ENABLE([fribidi],
+    AC_HELP_STRING([--disable-fribidi],[Disable right to left support]))
+if test "$enable_fribidi" != "no" && test "$enable_i18n" != "no"; then
+    PKG_CHECK_MODULES(FRIBIDI, fribidi)
+
+    AC_DEFINE(CONFIG_FRIBIDI,1, [Define to enable fribidi support])
+
+    CORE_CFLAGS="${CORE_CFLAGS} ${FRIBIDI_CFLAGS}"
+    CORE_LIBS="${CORE_LIBS} ${FRIBIDI_LIBS}"
+fi
+
 AC_ARG_WITH([unicode-set],
     AC_HELP_STRING([--with-unicode-set=CODESET],[Your iconv unicode set in
        machine endian encoding (e.g. WCHAR_T, UCS-4-INTERNAL, UCS-4LE,
--- icewm-1.3.9/src/yfontxft.cc
+++ icewm-1.3.9/src/yfontxft.cc
@@ -6,6 +6,11 @@
 #include "ypaint.h"
 #include "yxapp.h"
 #include "intl.h"
+#include <stdio.h>
+
+#ifdef CONFIG_FRIBIDI
+    #include <fribidi/fribidi.h>
+#endif
 
 
/******************************************************************************/
 
@@ -69,10 +74,45 @@
                            char_t * str, size_t len)
     {
         XftColor *c = *g.color();
+
+#ifdef CONFIG_FRIBIDI
+
+#define STATIS_STRING_SIZE     256
+
+               // Based around upstream (1.3.2) patch with some optimization
+               //   on my end. (reduce unnecessary memory allocation)
+               // - Gilboa
+
+               char_t static_str[STATIS_STRING_SIZE];
+               char_t *vis_str = static_str;
+
+               if (len >= STATIS_STRING_SIZE)
+               {
+                       vis_str = new char_t[len+1];
+                       if (!vis_str)
+                               return;
+               }
+
+               FriBidiCharType pbase_dir = FRIBIDI_TYPE_N;
+               fribidi_log2vis(str, len, &pbase_dir, //input
+                                               vis_str, // output
+                                               NULL, NULL, NULL // 
"statistics" that we don't need
+                                               );
+               str = vis_str;
+#endif
+
         XftDrawString(g.handleXft(), c, font,
                       x - g.xorigin(),
                       y - g.yorigin(),
                       str, len);
+
+#ifdef CONFIG_FRIBIDI
+
+               if (vis_str != static_str)
+                       delete[] str;
+
+#endif
+
     }
 
     static void textExtents(XftFont * font, char_t * str, size_t len,




Reply via email to