summaryrefslogtreecommitdiff
path: root/pango/mini-fribidi/fribidi_get_type.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2000-11-12 21:16:39 +0000
committerOwen Taylor <otaylor@src.gnome.org>2000-11-12 21:16:39 +0000
commitf726b8d49d00e325314ee6f17cf1f7eaed1fd019 (patch)
tree6041b8551149c167352c65fda63c3e7aaeb88d9b /pango/mini-fribidi/fribidi_get_type.c
parent1ff8a34d8c98aa47438515abd16f531e838d7404 (diff)
downloadpango-f726b8d49d00e325314ee6f17cf1f7eaed1fd019.tar.gz
Include a stripped-down version of fribidi to avoid the extra dependency.
Sun Nov 12 16:07:06 2000 Owen Taylor <otaylor@redhat.com> * configure.in pango/pango-utils.[ch] pango/Makefile.am pango/mini-fribidi/*: Include a stripped-down version of fribidi to avoid the extra dependency. No fribidi symbols are exported so conflicts with the real fribidi should not happen. Library can optionally be compiled with the real libfribidi. * pango/pango-utils.[ch]: Wrappers for fribidi_ functions when compiling with fribiid. * modules/basic/basic-ft2.c modules/basic/basic-win32.c modules/basic/basic.c modules/thai/thai.c pango/Makefile.am pango/itemize.c pango/pango-context.c pango/pangoft2.c pango/pangowin32.c pango/pangox.c: Use pango_ versions of fribidi functions.
Diffstat (limited to 'pango/mini-fribidi/fribidi_get_type.c')
-rw-r--r--pango/mini-fribidi/fribidi_get_type.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/pango/mini-fribidi/fribidi_get_type.c b/pango/mini-fribidi/fribidi_get_type.c
new file mode 100644
index 00000000..3daad57b
--- /dev/null
+++ b/pango/mini-fribidi/fribidi_get_type.c
@@ -0,0 +1,75 @@
+/* FriBidi - Library of BiDi algorithm
+ * Copyright (C) 1999 Dov Grobgeld
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include "pango/pango-utils.h"
+#include "fribidi_types.h"
+#include "fribidi_tables.i"
+
+/*======================================================================
+// fribidi_get_type() returns the bidi type of a character.
+//----------------------------------------------------------------------*/
+FriBidiCharType _pango_fribidi_get_type(FriBidiChar uch)
+{
+ guchar *block = FriBidiPropertyBlocks[uch / 256];
+ if (block)
+ return block[uch % 256];
+ else
+ return 0;
+}
+
+gboolean
+pango_get_mirror_char(/* Input */
+ gunichar ch,
+ /* Output */
+ gunichar *mirrored_ch)
+{
+ int pos, step;
+ gboolean found = FALSE;
+
+ pos = step = (nFriBidiMirroredChars/2)+1;
+
+ while(step > 1)
+ {
+ FriBidiChar cmp_ch = FriBidiMirroredChars[pos].ch;
+ step = (step+1)/2;
+
+ if (cmp_ch < ch)
+ {
+ pos += step;
+ if (pos>nFriBidiMirroredChars-1)
+ pos = nFriBidiMirroredChars-1;
+ }
+ else if (cmp_ch > ch)
+ {
+ pos -= step;
+ if (pos<0)
+ pos=0;
+ }
+ else
+ break;
+ }
+ if (FriBidiMirroredChars[pos].ch == ch)
+ {
+ *mirrored_ch = FriBidiMirroredChars[pos].mirrored_ch;
+ found = TRUE;
+ }
+ return found;
+}
+