pango r2607 - in trunk: . docs docs/tmpl pango



Author: behdad
Date: Mon Apr 21 23:56:37 2008
New Revision: 2607
URL: http://svn.gnome.org/viewvc/pango?rev=2607&view=rev

Log:
2008-04-21  Behdad Esfahbod  <behdad gnome org>

        Bug 515432 â Add function to get bidirectional character type of a
        unicode character
        Patch from JÃrg Billeter

        * docs/pango-sections.txt:
        * docs/tmpl/layout.sgml:
        * docs/tmpl/main.sgml:
        * docs/tmpl/pangocairo.sgml:
        * pango/Makefile.am:
        * pango/pango-bidi-type.c (pango_bidi_type_for_unichar):
        * pango/pango-bidi-type.h:
        * pango/pango-types.h:
        * pango/pango-utils.c (pango_log2vis_get_embedding_levels),
        (pango_unichar_direction):
        * pango/pango.def:
        * pango/pango.h:
        New public API:

                enum PangoBidiType;
                pango_bidi_type_get_type()
                pango_bidi_type_for_unichar()



Added:
   trunk/pango/pango-bidi-type.c
   trunk/pango/pango-bidi-type.h
Modified:
   trunk/ChangeLog
   trunk/docs/pango-sections.txt
   trunk/docs/tmpl/layout.sgml
   trunk/docs/tmpl/main.sgml
   trunk/docs/tmpl/pangocairo.sgml
   trunk/pango/Makefile.am
   trunk/pango/pango-types.h
   trunk/pango/pango-utils.c
   trunk/pango/pango.def
   trunk/pango/pango.h

Modified: trunk/docs/pango-sections.txt
==============================================================================
--- trunk/docs/pango-sections.txt	(original)
+++ trunk/docs/pango-sections.txt	Mon Apr 21 23:56:37 2008
@@ -41,7 +41,10 @@
 pango_get_mirror_char
 pango_unichar_direction
 pango_find_base_dir
+PangoBidiType
+pango_bidi_type_for_unichar
 <SUBSECTION Standard>
+PANGO_TYPE_BIDI_TYPE
 PANGO_TYPE_CONTEXT
 PangoContextClass
 PANGO_CONTEXT
@@ -60,6 +63,7 @@
 pango_shape
 
 <SUBSECTION Private>
+pango_bidi_type_get_type
 pango_direction_get_type
 pango_context_get_type
 pango_item_get_type

Modified: trunk/docs/tmpl/layout.sgml
==============================================================================
--- trunk/docs/tmpl/layout.sgml	(original)
+++ trunk/docs/tmpl/layout.sgml	Mon Apr 21 23:56:37 2008
@@ -561,6 +561,15 @@
 @height: 
 
 
+<!-- ##### FUNCTION pango_layout_get_baseline ##### -->
+<para>
+
+</para>
+
+ layout: 
+ Returns: 
+
+
 <!-- ##### FUNCTION pango_layout_get_line_count ##### -->
 <para>
 

Modified: trunk/docs/tmpl/main.sgml
==============================================================================
--- trunk/docs/tmpl/main.sgml	(original)
+++ trunk/docs/tmpl/main.sgml	Mon Apr 21 23:56:37 2008
@@ -373,6 +373,40 @@
 @Returns: 
 
 
+<!-- ##### ENUM PangoBidiType ##### -->
+<para>
+
+</para>
+
+ PANGO_BIDI_TYPE_L: 
+ PANGO_BIDI_TYPE_LRE: 
+ PANGO_BIDI_TYPE_LRO: 
+ PANGO_BIDI_TYPE_R: 
+ PANGO_BIDI_TYPE_AL: 
+ PANGO_BIDI_TYPE_RLE: 
+ PANGO_BIDI_TYPE_RLO: 
+ PANGO_BIDI_TYPE_PDF: 
+ PANGO_BIDI_TYPE_EN: 
+ PANGO_BIDI_TYPE_ES: 
+ PANGO_BIDI_TYPE_ET: 
+ PANGO_BIDI_TYPE_AN: 
+ PANGO_BIDI_TYPE_CS: 
+ PANGO_BIDI_TYPE_NSM: 
+ PANGO_BIDI_TYPE_BN: 
+ PANGO_BIDI_TYPE_B: 
+ PANGO_BIDI_TYPE_S: 
+ PANGO_BIDI_TYPE_WS: 
+ PANGO_BIDI_TYPE_ON: 
+
+<!-- ##### FUNCTION pango_bidi_type_for_unichar ##### -->
+<para>
+
+</para>
+
+ ch: 
+ Returns: 
+
+
 <!-- ##### FUNCTION pango_break ##### -->
 <para>
 

Modified: trunk/docs/tmpl/pangocairo.sgml
==============================================================================
--- trunk/docs/tmpl/pangocairo.sgml	(original)
+++ trunk/docs/tmpl/pangocairo.sgml	Mon Apr 21 23:56:37 2008
@@ -308,6 +308,15 @@
 @Returns: 
 
 
+<!-- ##### FUNCTION pango_cairo_create_context ##### -->
+<para>
+
+</para>
+
+ cr: 
+ Returns: 
+
+
 <!-- ##### FUNCTION pango_cairo_update_context ##### -->
 <para>
 

Modified: trunk/pango/Makefile.am
==============================================================================
--- trunk/pango/Makefile.am	(original)
+++ trunk/pango/Makefile.am	Mon Apr 21 23:56:37 2008
@@ -66,6 +66,7 @@
 	glyphstring.c				\
 	modules.c				\
 	pango-attributes.c			\
+	pango-bidi-type.c			\
 	pango-color.c				\
 	pango-color-table.h			\
 	pango-context.c				\
@@ -97,6 +98,7 @@
 pango_headers =		   \
 	pango.h		   \
 	pango-attributes.h \
+	pango-bidi-type.h  \
 	pango-break.h	   \
 	pango-context.h	   \
 	pango-coverage.h   \

Added: trunk/pango/pango-bidi-type.c
==============================================================================
--- (empty file)
+++ trunk/pango/pango-bidi-type.c	Mon Apr 21 23:56:37 2008
@@ -0,0 +1,75 @@
+/* Pango
+ * pango-bidi-type.c: Bidirectional Character Types
+ *
+ * Copyright (C) 2008 JÃrg Billeter <j bitron ch>
+ *
+ * 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 <config.h>
+
+#include "pango-bidi-type.h"
+
+#include "mini-fribidi/fribidi.h"
+
+
+
+/**
+ * pango_bidi_type_for_unichar
+ * @ch: a Unicode character
+ *
+ * Determines the normative bidirectional character type of a
+ * character, as specified in the Unicode Character Database.
+ *
+ * A simplified version of this function is available as
+ * pango_unichar_get_direction().
+ *
+ * Return value: the bidirectional character type, as used in the
+ * Unicode bidirectional algorithm.
+ *
+ * Since: 1.22
+ */
+PangoBidiType
+pango_bidi_type_for_unichar (gunichar ch)
+{
+  FriBidiCharType fribidi_ch_type = fribidi_get_type (ch);
+
+  switch (fribidi_ch_type)
+    {
+    case FRIBIDI_TYPE_LTR:  return PANGO_BIDI_TYPE_L;
+    case FRIBIDI_TYPE_LRE:  return PANGO_BIDI_TYPE_LRE;
+    case FRIBIDI_TYPE_LRO:  return PANGO_BIDI_TYPE_LRO;
+    case FRIBIDI_TYPE_RTL:  return PANGO_BIDI_TYPE_R;
+    case FRIBIDI_TYPE_AL:   return PANGO_BIDI_TYPE_AL;
+    case FRIBIDI_TYPE_RLE:  return PANGO_BIDI_TYPE_RLE;
+    case FRIBIDI_TYPE_RLO:  return PANGO_BIDI_TYPE_RLO;
+    case FRIBIDI_TYPE_PDF:  return PANGO_BIDI_TYPE_PDF;
+    case FRIBIDI_TYPE_EN:   return PANGO_BIDI_TYPE_EN;
+    case FRIBIDI_TYPE_ES:   return PANGO_BIDI_TYPE_ES;
+    case FRIBIDI_TYPE_ET:   return PANGO_BIDI_TYPE_ET;
+    case FRIBIDI_TYPE_AN:   return PANGO_BIDI_TYPE_AN;
+    case FRIBIDI_TYPE_CS:   return PANGO_BIDI_TYPE_CS;
+    case FRIBIDI_TYPE_NSM:  return PANGO_BIDI_TYPE_NSM;
+    case FRIBIDI_TYPE_BN:   return PANGO_BIDI_TYPE_BN;
+    case FRIBIDI_TYPE_BS:   return PANGO_BIDI_TYPE_B;
+    case FRIBIDI_TYPE_SS:   return PANGO_BIDI_TYPE_S;
+    case FRIBIDI_TYPE_WS:   return PANGO_BIDI_TYPE_WS;
+    case FRIBIDI_TYPE_ON:   return PANGO_BIDI_TYPE_ON;
+    default:
+      g_assert_not_reached ();
+      return PANGO_BIDI_TYPE_ON;
+    }
+}

Added: trunk/pango/pango-bidi-type.h
==============================================================================
--- (empty file)
+++ trunk/pango/pango-bidi-type.h	Mon Apr 21 23:56:37 2008
@@ -0,0 +1,88 @@
+/* Pango
+ * pango-bidi-type.h: Bidirectional Character Types
+ *
+ * Copyright (C) 2008 JÃrg Billeter <j bitron ch>
+ *
+ * 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.
+ */
+
+#ifndef __PANGO_BIDI_TYPE_H__
+#define __PANGO_BIDI_TYPE_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/**
+ * PangoBidiType:
+ * @PANGO_BIDI_TYPE_L: Left-to-Right
+ * @PANGO_BIDI_TYPE_LRE: Left-to-Right Embedding
+ * @PANGO_BIDI_TYPE_LRO: Left-to-Right Override
+ * @PANGO_BIDI_TYPE_R: Right-to-Left
+ * @PANGO_BIDI_TYPE_AL: Right-to-Left Arabic
+ * @PANGO_BIDI_TYPE_RLE: Right-to-Left Embedding
+ * @PANGO_BIDI_TYPE_RLO: Right-to-Left Override
+ * @PANGO_BIDI_TYPE_PDF: Pop Directional Format
+ * @PANGO_BIDI_TYPE_EN: European Number
+ * @PANGO_BIDI_TYPE_ES: European Number Separator
+ * @PANGO_BIDI_TYPE_ET: European Number Terminator
+ * @PANGO_BIDI_TYPE_AN: Arabic Number
+ * @PANGO_BIDI_TYPE_CS: Common Number Separator
+ * @PANGO_BIDI_TYPE_NSM: Nonspacing Mark
+ * @PANGO_BIDI_TYPE_BN: Boundary Neutral
+ * @PANGO_BIDI_TYPE_B: Paragraph Separator
+ * @PANGO_BIDI_TYPE_S: Segment Separator
+ * @PANGO_BIDI_TYPE_WS: Whitespace
+ * @PANGO_BIDI_TYPE_ON: Other Neutrals
+ *
+ * The #PangoBidiType type represents the bidirectional character
+ * type of a Unicode character as specified by the
+ * <ulink url="http://www.unicode.org/reports/tr9/";>Unicode bidirectional algorithm</ulink>.
+ *
+ * Since: 1.22
+ **/
+typedef enum {
+  /* Strong types */
+  PANGO_BIDI_TYPE_L,
+  PANGO_BIDI_TYPE_LRE,
+  PANGO_BIDI_TYPE_LRO,
+  PANGO_BIDI_TYPE_R,
+  PANGO_BIDI_TYPE_AL,
+  PANGO_BIDI_TYPE_RLE,
+  PANGO_BIDI_TYPE_RLO,
+
+  /* Weak types */
+  PANGO_BIDI_TYPE_PDF,
+  PANGO_BIDI_TYPE_EN,
+  PANGO_BIDI_TYPE_ES,
+  PANGO_BIDI_TYPE_ET,
+  PANGO_BIDI_TYPE_AN,
+  PANGO_BIDI_TYPE_CS,
+  PANGO_BIDI_TYPE_NSM,
+  PANGO_BIDI_TYPE_BN,
+
+  /* Neutral types */
+  PANGO_BIDI_TYPE_B,
+  PANGO_BIDI_TYPE_S,
+  PANGO_BIDI_TYPE_WS,
+  PANGO_BIDI_TYPE_ON
+} PangoBidiType;
+
+PangoBidiType pango_bidi_type_for_unichar (gunichar ch) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __PANGO_BIDI_TYPE_H__ */

Modified: trunk/pango/pango-types.h
==============================================================================
--- trunk/pango/pango-types.h	(original)
+++ trunk/pango/pango-types.h	Mon Apr 21 23:56:37 2008
@@ -139,6 +139,7 @@
 #include <pango/pango-language.h>
 #include <pango/pango-matrix.h>
 #include <pango/pango-script.h>
+#include <pango/pango-bidi-type.h>
 
 
 G_END_DECLS

Modified: trunk/pango/pango-utils.c
==============================================================================
--- trunk/pango/pango-utils.c	(original)
+++ trunk/pango/pango-utils.c	Mon Apr 21 23:56:37 2008
@@ -1128,10 +1128,8 @@
     case PANGO_DIRECTION_WEAK_RTL:
       fribidi_base_dir = FRIBIDI_TYPE_WR;
       break;
-    /*
     case PANGO_DIRECTION_WEAK_LTR:
     case PANGO_DIRECTION_NEUTRAL:
-    */
     default:
       fribidi_base_dir = FRIBIDI_TYPE_WL;
       break;
@@ -1165,19 +1163,23 @@
  * pango_unichar_direction:
  * @ch: a Unicode character
  *
- * Determines the direction of a character; either
+ * Determines the inherent direction of a character; either
  * %PANGO_DIRECTION_LTR, %PANGO_DIRECTION_RTL, or
  * %PANGO_DIRECTION_NEUTRAL.
  *
- * Return value: the direction of the character, as used in the
- * Unicode bidirectional algorithm.
+ * This function is useful to categorize characters into left-to-right
+ * letters, right-to-left letters, and everything else.  If full
+ * Unicode bidirectional type of a character is needed,
+ * pango_bidi_type_for_gunichar() can be used instead.
+ *
+ * Return value: the direction of the character.
  */
 PangoDirection
 pango_unichar_direction (gunichar ch)
 {
   FriBidiCharType fribidi_ch_type = fribidi_get_type (ch);
 
-  if (!FRIBIDI_IS_LETTER (fribidi_ch_type))
+  if (!FRIBIDI_IS_STRONG (fribidi_ch_type))
     return PANGO_DIRECTION_NEUTRAL;
   else if (FRIBIDI_IS_RTL (fribidi_ch_type))
     return PANGO_DIRECTION_RTL;

Modified: trunk/pango/pango.def
==============================================================================
--- trunk/pango/pango.def	(original)
+++ trunk/pango/pango.def	Mon Apr 21 23:56:37 2008
@@ -48,6 +48,8 @@
 	pango_attribute_copy
 	pango_attribute_destroy
 	pango_attribute_equal
+	pango_bidi_type_for_unichar
+	pango_bidi_type_get_type
 	pango_break
 	pango_color_copy
 	pango_color_free

Modified: trunk/pango/pango.h
==============================================================================
--- trunk/pango/pango.h	(original)
+++ trunk/pango/pango.h	Mon Apr 21 23:56:37 2008
@@ -23,6 +23,7 @@
 #define __PANGO_H__
 
 #include <pango/pango-attributes.h>
+#include <pango/pango-bidi-type.h>
 #include <pango/pango-break.h>
 #include <pango/pango-context.h>
 #include <pango/pango-coverage.h>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]