summaryrefslogtreecommitdiff
path: root/pango
diff options
context:
space:
mode:
Diffstat (limited to 'pango')
-rw-r--r--pango/.cvsignore3
-rw-r--r--pango/Makefile.am10
-rwxr-xr-xpango/check.defs11
-rw-r--r--pango/pango-utils.c91
-rw-r--r--pango/pango-utils.h30
-rw-r--r--pango/pango.def3
-rw-r--r--pango/pango.h5
-rw-r--r--pango/pango.rc.in8
-rw-r--r--pango/pangoft2.rc.in8
-rw-r--r--pango/pangowin32.rc.in8
10 files changed, 158 insertions, 19 deletions
diff --git a/pango/.cvsignore b/pango/.cvsignore
index db2705df..f130e615 100644
--- a/pango/.cvsignore
+++ b/pango/.cvsignore
@@ -5,11 +5,14 @@ pango.rc
pangoft2.rc
pangowin32.rc
pango-enum-types.[ch]
+pango-features.h
s-enum-types-[ch]
pango-querymodules
module-defs.h
module-defs-*.c
*.lo
*.la
+*.def.list
+*.def.expected
.deps
.libs
diff --git a/pango/Makefile.am b/pango/Makefile.am
index 473b6124..9c461f83 100644
--- a/pango/Makefile.am
+++ b/pango/Makefile.am
@@ -28,7 +28,7 @@ INCLUDES = \
$(FREETYPE_CFLAGS) \
$(X_CFLAGS)
-BUILT_SOURCES = pango-enum-types.h pango-enum-types.c
+BUILT_SOURCES = pango-enum-types.h pango-enum-types.c pango-features.h
pangoincludedir=$(includedir)/pango-1.0/pango
@@ -101,6 +101,7 @@ pango_headers = \
pango-context.h \
pango-coverage.h \
pango-engine.h \
+ pango-features.h \
pango-font.h \
pango-fontmap.h \
pango-fontset.h \
@@ -148,6 +149,8 @@ s-enum-types-c: @REBUILD@ $(pango_headers) Makefile
&& rm -f tmp-pango-enum-types.c \
&& echo timestamp > $(@F)
+pango-features.h:
+ cd $(top_builddir) && ./config.status pango/pango-features.h
# ------------------- libpangox -------------------
@@ -466,7 +469,12 @@ CLEANFILES = \
pango-enum-types.c \
s-enum-types-c
+MOSTLYCLEANFILES = \
+ *.def.list \
+ *.def.expected
+
DISTCLEANFILES = \
+ pango-features.h \
$(MODULE_DEF_FILES)
install-data-local: install-ms-lib install-def-files
diff --git a/pango/check.defs b/pango/check.defs
index a4d0a67f..6140e30c 100755
--- a/pango/check.defs
+++ b/pango/check.defs
@@ -10,14 +10,15 @@ for def in $srcdir/*.def; do
lib=${lib##*/}
so=.libs/lib${lib}-1.0.so
- test -f $so || continue
+ test -f "$so" || continue
echo Checking $def
- nm $so | grep ' T ' | cut -d' ' -f3 | sort -u > NM
- cut -f 2 $def | grep -v '^EXPORTS$' > DEF
+ expected=$lib.expected
+ list=$lib.list
+ nm "$so" | grep ' T ' | cut -d' ' -f3 | sort -u > "$expected"
+ cut -f 2 "$def" | grep -v EXPORTS > "$list"
- diff DEF NM || status=1
- rm -f DEF NM
+ diff "$list" "$expected" && rm -f "$list" "$expected" || status=1
done
exit $status
diff --git a/pango/pango-utils.c b/pango/pango-utils.c
index d0acc836..cb1a5e58 100644
--- a/pango/pango-utils.c
+++ b/pango/pango-utils.c
@@ -27,6 +27,7 @@
#include <locale.h>
#include "pango-font.h"
+#include "pango-features.h"
#include "pango-impl-utils.h"
#include <glib/gstdio.h>
@@ -61,6 +62,93 @@ static GHashTable *pango_aliases_ht = NULL;
PangoWarningHistory _pango_warning_history = { FALSE, FALSE, FALSE };
/**
+ * pango_version:
+ *
+ * This is similar to the macro %PANGO_VERSION except that
+ * it returns the encoded version of Pango available at run-time,
+ * as opposed to the version available at compile-time.
+ *
+ * A version number can be encoded into an integer using
+ * PANGO_VERSION_ENCODE().
+ *
+ * Returns value: The encoded version of Pango library
+ * available at run time.
+ *
+ * Since: 1.16
+ **/
+int
+pango_version (void)
+{
+ return PANGO_VERSION;
+}
+
+/**
+ * pango_version_string:
+ *
+ * This is similar to the macro %PANGO_VERSION_STRING except that
+ * it returns the version of Pango available at run-time, as opposed to
+ * the version available at compile-time.
+ *
+ * Returns value: A string containing the version of Pango library
+ * available at run time.
+ * The returned string is owned by Pango and should not be modified
+ * or freed.
+ *
+ * Since: 1.16
+ **/
+const char *
+pango_version_string (void)
+{
+ return PANGO_VERSION_STRING;
+}
+
+/**
+ * pango_version_check:
+ * @required_major: the required major version.
+ * @required_minor: the required minor version.
+ * @required_micro: the required major version.
+ *
+ * Checks that the Pango library in use is compatible with the
+ * given version. Generally you would pass in the constants
+ * %PANGO_VERSION_MAJOR, %PANGO_VERSION_MINOR, %PANGO_VERSION_MICRO
+ * as the three arguments to this function; that produces
+ * a check that the library in use at run-time is compatible with
+ * the version of Pango the application or module was compiled against.
+ *
+ * Compatibility is defined by two things: first the version
+ * of the running library is newer than the version
+ * @required_major.required_minor.@required_micro. Second
+ * the running library must be binary compatible with the
+ * version @required_major.required_minor.@required_micro
+ * (same major version.)
+ *
+ * For compile-time version checking use PANGO_VERSION_CHECK().
+ *
+ * Return value: %NULL if the Pango library is compatible with the
+ * given version, or a string describing the version mismatch.
+ * The returned string is owned by Pango and should not be modified
+ * or freed.
+ *
+ * Since: 1.16
+ **/
+const gchar*
+pango_version_check (int required_major,
+ int required_minor,
+ int required_micro)
+{
+ gint pango_effective_micro = 100 * PANGO_VERSION_MINOR + PANGO_VERSION_MICRO;
+ gint required_effective_micro = 100 * required_minor + required_micro;
+
+ if (required_major < PANGO_VERSION_MAJOR)
+ return "Pango version too new (major mismatch)";
+ if (required_effective_micro < pango_effective_micro - PANGO_BINARY_AGE)
+ return "Pango version too new (micro mismatch)";
+ if (required_effective_micro > pango_effective_micro)
+ return "Pango version too old (micro mismatch)";
+ return NULL;
+}
+
+/**
* pango_trim_string:
* @str: a string
*
@@ -1727,7 +1815,7 @@ pango_quantize_line_geometry (int *thickness,
* Converts a #PangoGravity value to its rotation value.
*
* Return value: the rotation value corresponding to @gravity,
- * or zero if @gravity is #PANGO_GRAVITY_AUTO
+ * or zero if @gravity is %PANGO_GRAVITY_AUTO
*
* Since: 1.16
*/
@@ -1747,3 +1835,4 @@ pango_gravity_to_rotation (PangoGravity gravity)
return rotation;
}
+
diff --git a/pango/pango-utils.h b/pango/pango-utils.h
index f0392f72..7b008a90 100644
--- a/pango/pango-utils.h
+++ b/pango/pango-utils.h
@@ -97,6 +97,36 @@ guint8 * pango_log2vis_get_embedding_levels (const gchar *text,
*/
gboolean pango_is_zero_width (gunichar ch) G_GNUC_CONST;
+/* Pango version checking */
+
+/* Encode a Pango version as an integer */
+#define PANGO_VERSION_ENCODE(major, minor, micro) ( \
+ ((major) * 10000) \
+ + ((minor) * 100) \
+ + ((micro) * 1))
+
+/* Encoded version of Pango at compile-time */
+#define PANGO_VERSION PANGO_VERSION_ENCODE( \
+ PANGO_VERSION_MAJOR, \
+ PANGO_VERSION_MINOR, \
+ PANGO_VERSION_MICRO)
+
+/* Check that compile-time Pango is as new as required */
+#define PANGO_VERSION_CHECK(major,minor,micro) \
+ (PANGO_VERSION >= PANGO_VERSION_ENCODE(major,minor,micro))
+
+
+/* Return encoded version of Pango at run-time */
+int pango_version (void) G_GNUC_CONST;
+
+/* Return run-time Pango version as an string */
+G_CONST_RETURN char * pango_version_string (void);
+
+/* Check that run-time Pango is as new as required */
+G_CONST_RETURN char * pango_version_check (int required_major,
+ int required_minor,
+ int required_micro);
+
G_END_DECLS
#endif /* __PANGO_UTILS_H__ */
diff --git a/pango/pango.def b/pango/pango.def
index cb64cce1..94aeccd3 100644
--- a/pango/pango.def
+++ b/pango/pango.def
@@ -344,5 +344,8 @@ EXPORTS
pango_underline_get_type
pango_unichar_direction
pango_variant_get_type
+ pango_version
+ pango_version_check
+ pango_version_string
pango_weight_get_type
pango_wrap_mode_get_type
diff --git a/pango/pango.h b/pango/pango.h
index 8821ed4a..b87d22f7 100644
--- a/pango/pango.h
+++ b/pango/pango.h
@@ -28,13 +28,18 @@
#include <pango/pango-coverage.h>
#include <pango/pango-engine.h>
#include <pango/pango-enum-types.h>
+#include <pango/pango-features.h>
#include <pango/pango-font.h>
#include <pango/pango-fontmap.h>
+#include <pango/pango-fontset.h>
#include <pango/pango-glyph.h>
+#include <pango/pango-glyph-item.h>
#include <pango/pango-item.h>
#include <pango/pango-layout.h>
#include <pango/pango-renderer.h>
#include <pango/pango-script.h>
+#include <pango/pango-tabs.h>
#include <pango/pango-types.h>
+#include <pango/pango-utils.h>
#endif /* __PANGO_H__ */
diff --git a/pango/pango.rc.in b/pango/pango.rc.in
index efecb729..a6cd2525 100644
--- a/pango/pango.rc.in
+++ b/pango/pango.rc.in
@@ -1,8 +1,8 @@
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION @PANGO_MAJOR_VERSION@,@PANGO_MINOR_VERSION@,@PANGO_MICRO_VERSION@,0
- PRODUCTVERSION @PANGO_MAJOR_VERSION@,@PANGO_MINOR_VERSION@,@PANGO_MICRO_VERSION@,0
+ FILEVERSION @PANGO_VERSION_MAJOR@,@PANGO_VERSION_MINOR@,@PANGO_VERSION_MICRO@,0
+ PRODUCTVERSION @PANGO_VERSION_MAJOR@,@PANGO_VERSION_MINOR@,@PANGO_VERSION_MICRO@,0
FILEFLAGSMASK 0
FILEFLAGS 0
FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
BEGIN
VALUE "CompanyName", "Red Hat Software"
VALUE "FileDescription", "Pango"
- VALUE "FileVersion", "@PANGO_MAJOR_VERSION@.@PANGO_MINOR_VERSION@.@PANGO_MICRO_VERSION@.0"
+ VALUE "FileVersion", "@PANGO_VERSION_MAJOR@.@PANGO_VERSION_MINOR@.@PANGO_VERSION_MICRO@.0"
VALUE "InternalName", "pango-@PANGO_API_VERSION@-@PANGO_CURRENT_MINUS_AGE@"
VALUE "LegalCopyright", "Copyright © 1999 Red Hat Software."
VALUE "OriginalFilename", "pango-@PANGO_API_VERSION@-@PANGO_CURRENT_MINUS_AGE@.dll"
VALUE "ProductName", "Pango"
- VALUE "ProductVersion", "@PANGO_MAJOR_VERSION@.@PANGO_MINOR_VERSION@.@PANGO_MICRO_VERSION@"
+ VALUE "ProductVersion", "@PANGO_VERSION_MAJOR@.@PANGO_VERSION_MINOR@.@PANGO_VERSION_MICRO@"
END
END
BLOCK "VarFileInfo"
diff --git a/pango/pangoft2.rc.in b/pango/pangoft2.rc.in
index d92f416c..c7ed1646 100644
--- a/pango/pangoft2.rc.in
+++ b/pango/pangoft2.rc.in
@@ -1,8 +1,8 @@
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION @PANGO_MAJOR_VERSION@,@PANGO_MINOR_VERSION@,@PANGO_MICRO_VERSION@,0
- PRODUCTVERSION @PANGO_MAJOR_VERSION@,@PANGO_MINOR_VERSION@,@PANGO_MICRO_VERSION@,0
+ FILEVERSION @PANGO_VERSION_MAJOR@,@PANGO_VERSION_MINOR@,@PANGO_VERSION_MICRO@,0
+ PRODUCTVERSION @PANGO_VERSION_MAJOR@,@PANGO_VERSION_MINOR@,@PANGO_VERSION_MICRO@,0
FILEFLAGSMASK 0
FILEFLAGS 0
FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
BEGIN
VALUE "CompanyName", "Red Hat Software"
VALUE "FileDescription", "PangoFT2"
- VALUE "FileVersion", "@PANGO_MAJOR_VERSION@.@PANGO_MINOR_VERSION@.@PANGO_MICRO_VERSION@.0"
+ VALUE "FileVersion", "@PANGO_VERSION_MAJOR@.@PANGO_VERSION_MINOR@.@PANGO_VERSION_MICRO@.0"
VALUE "InternalName", "pangoft2-@PANGO_API_VERSION@-@PANGO_CURRENT_MINUS_AGE@"
VALUE "LegalCopyright", "Copyright © 1999 Red Hat Software. Copyright © 2000 Tor Lillqvist"
VALUE "OriginalFilename", "pangoft2-@PANGO_API_VERSION@-@PANGO_CURRENT_MINUS_AGE@.dll"
VALUE "ProductName", "PangoFT2"
- VALUE "ProductVersion", "@PANGO_MAJOR_VERSION@.@PANGO_MINOR_VERSION@.@PANGO_MICRO_VERSION@"
+ VALUE "ProductVersion", "@PANGO_VERSION_MAJOR@.@PANGO_VERSION_MINOR@.@PANGO_VERSION_MICRO@"
END
END
BLOCK "VarFileInfo"
diff --git a/pango/pangowin32.rc.in b/pango/pangowin32.rc.in
index 2eb9be56..f78465dc 100644
--- a/pango/pangowin32.rc.in
+++ b/pango/pangowin32.rc.in
@@ -1,8 +1,8 @@
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
- FILEVERSION @PANGO_MAJOR_VERSION@,@PANGO_MINOR_VERSION@,@PANGO_MICRO_VERSION@,0
- PRODUCTVERSION @PANGO_MAJOR_VERSION@,@PANGO_MINOR_VERSION@,@PANGO_MICRO_VERSION@,0
+ FILEVERSION @PANGO_VERSION_MAJOR@,@PANGO_VERSION_MINOR@,@PANGO_VERSION_MICRO@,0
+ PRODUCTVERSION @PANGO_VERSION_MAJOR@,@PANGO_VERSION_MINOR@,@PANGO_VERSION_MICRO@,0
FILEFLAGSMASK 0
FILEFLAGS 0
FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
BEGIN
VALUE "CompanyName", "Red Hat Software"
VALUE "FileDescription", "PangoWin32"
- VALUE "FileVersion", "@PANGO_MAJOR_VERSION@.@PANGO_MINOR_VERSION@.@PANGO_MICRO_VERSION@.0"
+ VALUE "FileVersion", "@PANGO_VERSION_MAJOR@.@PANGO_VERSION_MINOR@.@PANGO_VERSION_MICRO@.0"
VALUE "InternalName", "pangowin32-@PANGO_API_VERSION@-@PANGO_CURRENT_MINUS_AGE@"
VALUE "LegalCopyright", "Copyright © 1999 Red Hat Software. Copyright © 2000 Tor Lillqvist"
VALUE "OriginalFilename", "pangowin32-@PANGO_API_VERSION@-@PANGO_CURRENT_MINUS_AGE@.dll"
VALUE "ProductName", "PangoWin32"
- VALUE "ProductVersion", "@PANGO_MAJOR_VERSION@.@PANGO_MINOR_VERSION@.@PANGO_MICRO_VERSION@"
+ VALUE "ProductVersion", "@PANGO_VERSION_MAJOR@.@PANGO_VERSION_MINOR@.@PANGO_VERSION_MICRO@"
END
END
BLOCK "VarFileInfo"