summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2006-12-07 03:40:54 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2006-12-07 03:40:54 +0000
commitd6956a1ad956ad4f5322059fff7baac70ea3c039 (patch)
treea2fc3a3c05e4753f4ad73893a840ffaa41a4e498
parent5b6f118ba4b87c2d9ba834620b11c3f44119dce1 (diff)
downloadpango-d6956a1ad956ad4f5322059fff7baac70ea3c039.tar.gz
New generated public header file pango-features.h. Currently contains the
2006-12-06 Behdad Esfahbod <behdad@gnome.org> * configure.in: * pango/Makefile.am: New generated public header file pango-features.h. Currently contains the version information. In the future, can be expanded to define which backends have been enabled, etc. * pango/pango.def: * pango/pango-utils.h: * pango/pango-utils.c: New public macros and functions: PANGO_VERSION_ENCODE(), PANGO_VERSION_MAJOR, PANGO_VERSION_MINOR, PANGO_VERSION_MICRO, PANGO_VERSION, PANGO_VERSION_STRING, PANGO_VERSION_CHECK(), pango_version(), pango_version_string(), pango_version_check(). * docs/pango-docs.sgml: * docs/pango-sections.txt: * docs/tmpl/pango-version.sgml: Docs for new symbols, in a new section. * examples/renderdemo.c (show_version): If run-time Pango lib version is different than the compile-time one, show that one too. * pango/pango.h: #include <pango-utils.h> as well as almost all other public pango-*.h headers (though, the other ones were already included indirectly). The only public pango-*.h header pango.h shouldn't include are pango-ot.h (which is really misnamed) and pango-modules.h (that should not be needed by 99.99% users anyway). * docs/Makefile.am: * docs/check.docs: Test to check that all symbols are documented and properly hooked into documentation tree. * pango/pango.rc.in: * pango/pangoft2.rc.in: * pango/pangowin32.rc.in: Update, reflecting some internal symbol changes. * pango/check.defs: Improve.
-rw-r--r--ChangeLog43
-rw-r--r--configure.in67
-rw-r--r--docs/Makefile.am5
-rwxr-xr-xdocs/check.docs29
-rw-r--r--docs/pango-docs.sgml5
-rw-r--r--docs/pango-sections.txt15
-rw-r--r--docs/tmpl/pango-version.sgml110
-rw-r--r--examples/renderdemo.c4
-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
18 files changed, 418 insertions, 37 deletions
diff --git a/ChangeLog b/ChangeLog
index 8fc8df17..08199fcf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,48 @@
2006-12-06 Behdad Esfahbod <behdad@gnome.org>
+ * configure.in:
+ * pango/Makefile.am:
+ New generated public header file pango-features.h. Currently contains
+ the version information. In the future, can be expanded to define
+ which backends have been enabled, etc.
+
+ * pango/pango.def:
+ * pango/pango-utils.h:
+ * pango/pango-utils.c:
+ New public macros and functions: PANGO_VERSION_ENCODE(),
+ PANGO_VERSION_MAJOR, PANGO_VERSION_MINOR, PANGO_VERSION_MICRO,
+ PANGO_VERSION, PANGO_VERSION_STRING, PANGO_VERSION_CHECK(),
+ pango_version(), pango_version_string(), pango_version_check().
+
+ * docs/pango-docs.sgml:
+ * docs/pango-sections.txt:
+ * docs/tmpl/pango-version.sgml:
+ Docs for new symbols, in a new section.
+
+ * examples/renderdemo.c (show_version):
+ If run-time Pango lib version is different than the compile-time one,
+ show that one too.
+
+ * pango/pango.h:
+ #include <pango-utils.h> as well as almost all other public pango-*.h
+ headers (though, the other ones were already included indirectly).
+ The only public pango-*.h header pango.h shouldn't include are
+ pango-ot.h (which is really misnamed) and pango-modules.h (that should
+ not be needed by 99.99% users anyway).
+
+ * docs/Makefile.am:
+ * docs/check.docs: Test to check that all symbols are documented and
+ properly hooked into documentation tree.
+
+ * pango/pango.rc.in:
+ * pango/pangoft2.rc.in:
+ * pango/pangowin32.rc.in:
+ Update, reflecting some internal symbol changes.
+
+ * pango/check.defs: Improve.
+
+2006-12-06 Behdad Esfahbod <behdad@gnome.org>
+
* examples/renderdemo.c (do_output): Set context language to
pango_language_get_default() instead of hardcoding "en-US".
diff --git a/configure.in b/configure.in
index da9c83ed..709feea3 100644
--- a/configure.in
+++ b/configure.in
@@ -6,7 +6,7 @@ dnl Versioning
dnl ==========================================================================
dnl Making releases:
-dnl PANGO_MICRO_VERSION += 1;
+dnl PANGO_VERSION_MICRO += 1;
dnl PANGO_INTERFACE_AGE += 1;
dnl PANGO_BINARY_AGE += 1;
dnl if any functions have been added, set PANGO_INTERFACE_AGE to 0.
@@ -20,18 +20,18 @@ dnl of them.
dnl
dnl The triplet
-m4_define([pango_major_version], [1])
-m4_define([pango_minor_version], [15])
-m4_define([pango_micro_version], [1])
+m4_define([pango_version_major], [1])
+m4_define([pango_version_minor], [15])
+m4_define([pango_version_micro], [1])
m4_define([pango_version],
- [pango_major_version.pango_minor_version.pango_micro_version])
+ [pango_version_major.pango_version_minor.pango_version_micro])
dnl The X.Y in -lpango-X.Y line. This is expected to stay 1.0 until Pango 2.
m4_define([pango_api_version], [1.0])
dnl Number of releases since we've added interfaces
m4_define([pango_interface_age], [1])
dnl Number of releases since we've broken binary compatibility.
m4_define([pango_binary_age],
- [m4_eval(100 * pango_minor_version + pango_micro_version)])
+ [m4_eval(100 * pango_version_minor + pango_version_micro)])
dnl Module API version. This should be stepped up when a change causes
dnl older modules to not work with new pango.
m4_define([pango_module_version], [1.6.0])
@@ -46,20 +46,20 @@ AM_INIT_AUTOMAKE(1.7 gnits)
AM_CONFIG_HEADER([config.h])
-PANGO_MAJOR_VERSION=pango_major_version()
-PANGO_MINOR_VERSION=pango_minor_version()
-PANGO_MICRO_VERSION=pango_micro_version()
+PANGO_VERSION_MAJOR=pango_version_major()
+PANGO_VERSION_MINOR=pango_version_minor()
+PANGO_VERSION_MICRO=pango_version_micro()
PANGO_VERSION=pango_version()
PANGO_API_VERSION=pango_api_version()
PANGO_INTERFACE_AGE=pango_interface_age()
PANGO_BINARY_AGE=pango_binary_age()
PANGO_MODULE_VERSION=pango_module_version()
-AC_SUBST(PANGO_MAJOR_VERSION)
-AC_SUBST(PANGO_MINOR_VERSION)
+AC_SUBST(PANGO_VERSION_MAJOR)
+AC_SUBST(PANGO_VERSION_MINOR)
+AC_SUBST(PANGO_VERSION_MICRO)
AC_SUBST(PANGO_VERSION)
AC_SUBST(PANGO_API_VERSION)
-AC_SUBST(PANGO_MICRO_VERSION)
AC_SUBST(PANGO_INTERFACE_AGE)
AC_SUBST(PANGO_BINARY_AGE)
AC_SUBST(PANGO_MODULE_VERSION)
@@ -67,12 +67,12 @@ AC_SUBST(PANGO_MODULE_VERSION)
AC_DEFINE(MODULE_VERSION, "pango_module_version()", [Module interface version])
AC_DEFINE(PANGO_BINARY_AGE, pango_binary_age(), [PANGO binary age])
AC_DEFINE(PANGO_INTERFACE_AGE, pango_interface_age(), [PANGO interface age])
-AC_DEFINE(PANGO_MAJOR_VERSION, pango_major_version(), [PANGO major version])
-AC_DEFINE(PANGO_MINOR_VERSION, pango_minor_version(), [PANGO minor version])
-AC_DEFINE(PANGO_MICRO_VERSION, pango_micro_version(), [PANGO micro version])
+AC_DEFINE(PANGO_VERSION_MAJOR, pango_version_major(), [PANGO major version])
+AC_DEFINE(PANGO_VERSION_MINOR, pango_version_minor(), [PANGO minor version])
+AC_DEFINE(PANGO_VERSION_MICRO, pango_version_micro(), [PANGO micro version])
dnl libtool versioning
-m4_define([lt_current], [m4_eval(100 * pango_minor_version + pango_micro_version - pango_interface_age)])
+m4_define([lt_current], [m4_eval(100 * pango_version_minor + pango_version_micro - pango_interface_age)])
m4_define([lt_revision], [pango_interface_age])
m4_define([lt_age], [m4_eval(pango_binary_age - pango_interface_age)])
VERSION_INFO="lt_current():lt_revision():lt_age()"
@@ -158,7 +158,7 @@ changequote([,])dnl
dnl declare --enable-* args and collect ac_help strings
m4_define([debug_default],
- m4_if(m4_eval(pango_minor_version() % 2), [1], [yes], [minimum]))
+ m4_if(m4_eval(pango_version_minor() % 2), [1], [yes], [minimum]))
AC_ARG_ENABLE(debug,
AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
@@ -853,6 +853,39 @@ AC_CHECK_HEADERS(unistd.h)
# Honor aclocal flags
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+dnl ===========================================================================
+AC_CONFIG_COMMANDS([pango/pango-features.h],
+ [featuresfile=pango/pango-features.h
+ outfile=$featuresfile.tmp
+ AC_MSG_NOTICE([creating $featuresfile])
+ cat >$outfile <<_EOF
+/* Generated by configure. Do not edit */
+#ifndef PANGO_FEATURES_H
+#define PANGO_FEATURES_H
+
+#define PANGO_VERSION_MAJOR $PANGO_VERSION_MAJOR
+#define PANGO_VERSION_MINOR $PANGO_VERSION_MINOR
+#define PANGO_VERSION_MICRO $PANGO_VERSION_MICRO
+
+#define PANGO_VERSION_STRING "$PANGO_VERSION_MAJOR.$PANGO_VERSION_MINOR.$PANGO_VERSION_MICRO"
+
+_EOF
+ # TODO: define macros for enabled features/backends here
+
+ echo '' >>$outfile
+ echo '#endif' >>$outfile
+
+ if cmp -s $outfile $featuresfile; then
+ AC_MSG_NOTICE([$featuresfile is unchanged])
+ rm -f $outfile
+ else
+ mv $outfile $featuresfile
+ fi
+],[
+ PANGO_VERSION_MAJOR=$PANGO_VERSION_MAJOR
+ PANGO_VERSION_MINOR=$PANGO_VERSION_MINOR
+ PANGO_VERSION_MICRO=$PANGO_VERSION_MICRO
+])
AC_CONFIG_FILES([
Makefile
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 7fc22b0a..a3d665a0 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -98,7 +98,8 @@ endif
EXTRA_DIST += \
layout.fig \
layout.eps \
- version.xml.in
+ version.xml.in \
+ check.docs
BUILT_EXTRA_DIST = $(man_MANS)
@@ -112,3 +113,5 @@ dist-hook-local:
for f in $(srcdir)/TEXT/* ; do \
test -f $$f && cp -p $$f $(distdir)/TEXT; \
done
+
+TESTS = check.docs
diff --git a/docs/check.docs b/docs/check.docs
new file mode 100755
index 00000000..6703691f
--- /dev/null
+++ b/docs/check.docs
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+LANG=C
+
+test -z "$srcdir" && srcdir=.
+status=0
+
+if ! test -f pango-undocumented.txt -a -f pango-unused.txt; then
+ echo At least one of pango-undocumented.txt and pango-unused.txt not found.
+ echo Skipping test.
+ exit 0
+fi
+
+status=0
+
+unused=`cat pango-unused.txt`
+if test -n "$unused"; then
+ echo Unused documentated symbols:
+ cat pango-unused.txt
+ status=1
+fi
+if ! grep '^0 symbols incomplete' pango-undocumented.txt >/dev/null ||
+ ! grep '^0 not documented' pango-undocumented.txt >/dev/null; then
+ echo Incomplete or undocumented symbols:
+ cat pango-unused.txt
+ status=1
+fi
+
+exit $status
diff --git a/docs/pango-docs.sgml b/docs/pango-docs.sgml
index 0b64ff0e..a9bfe030 100644
--- a/docs/pango-docs.sgml
+++ b/docs/pango-docs.sgml
@@ -27,6 +27,7 @@
<!ENTITY pango-Misc-Utils SYSTEM "xml/utils.xml">
<!ENTITY markup-format SYSTEM "pango_markup.sgml">
<!ENTITY pango-querymodules SYSTEM "pango-querymodules.xml">
+<!ENTITY pango-Version SYSTEM "xml/pango-version.xml">
<!ENTITY version SYSTEM "version.xml">
]>
<book id="index">
@@ -70,6 +71,7 @@
&PangoEngineShape;
&pango-Modules;
&pango-Misc-Utils;
+ &pango-Version;
</chapter>
<chapter id="tools">
@@ -104,4 +106,7 @@
<index role="1.14">
<title>Index of new symbols in 1.14</title>
</index>
+ <index role="1.16">
+ <title>Index of new symbols in 1.16</title>
+ </index>
</book>
diff --git a/docs/pango-sections.txt b/docs/pango-sections.txt
index ba268e5e..c684a02d 100644
--- a/docs/pango-sections.txt
+++ b/docs/pango-sections.txt
@@ -970,3 +970,18 @@ pango_language_get_sample_string
pango_is_zero_width
pango_quantize_line_geometry
</SECTION>
+
+<SECTION>
+<TITLE>Version Checking</TITLE>
+<FILE>pango-version</FILE>
+PANGO_VERSION_ENCODE
+PANGO_VERSION
+PANGO_VERSION_MAJOR
+PANGO_VERSION_MINOR
+PANGO_VERSION_MICRO
+PANGO_VERSION_STRING
+PANGO_VERSION_CHECK
+pango_version
+pango_version_string
+pango_version_check
+</SECTION>
diff --git a/docs/tmpl/pango-version.sgml b/docs/tmpl/pango-version.sgml
new file mode 100644
index 00000000..dbdb41a2
--- /dev/null
+++ b/docs/tmpl/pango-version.sgml
@@ -0,0 +1,110 @@
+<!-- ##### SECTION Title ##### -->
+Version Checking
+
+<!-- ##### SECTION Short_Description ##### -->
+Tools for checking Pango version at compile- and run-time.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+The capital-letter macros defined here can be used to check the version of
+Pango at compile-time, and to <firstterm>encode</firstterm> Pango versions into
+integers.
+
+The functions can be used to check the version of the linked Pango library
+at run-time.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO PANGO_VERSION_ENCODE ##### -->
+<para>
+This macro encodes the given Pango version into an integer. The numbers
+returned by %PANGO_VERSION and pango_version() are encoded using this macro.
+Two encoded version numbers can be compared as integers.
+</para>
+
+@major: the major component of the version number
+@minor: the minor component of the version number
+@micro: the micro component of the version number
+
+
+<!-- ##### MACRO PANGO_VERSION ##### -->
+<para>
+The version of Pango available at compile-time, encoded using
+PANGO_VERSION_ENCODE().
+</para>
+
+
+
+<!-- ##### MACRO PANGO_VERSION_MAJOR ##### -->
+<para>
+The major component of the version of Pango available at compile-time.
+</para>
+
+
+
+<!-- ##### MACRO PANGO_VERSION_MINOR ##### -->
+<para>
+The minor component of the version of Pango available at compile-time.
+</para>
+
+
+
+<!-- ##### MACRO PANGO_VERSION_MICRO ##### -->
+<para>
+The micro component of the version of Pango available at compile-time.
+</para>
+
+
+
+<!-- ##### MACRO PANGO_VERSION_STRING ##### -->
+<para>
+A string literal containing the version of Pango available at compile-time.
+</para>
+
+
+
+<!-- ##### MACRO PANGO_VERSION_CHECK ##### -->
+<para>
+Checks that the versoin of Pango available at compile-time is not older than
+the provided version number.
+</para>
+
+@major: the major component of the version number
+@minor: the minor component of the version number
+@micro: the micro component of the version number
+
+
+<!-- ##### FUNCTION pango_version ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+
+<!-- ##### FUNCTION pango_version_string ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+
+<!-- ##### FUNCTION pango_version_check ##### -->
+<para>
+
+</para>
+
+@required_major:
+@required_minor:
+@required_micro:
+@Returns:
+
+
diff --git a/examples/renderdemo.c b/examples/renderdemo.c
index d94053f7..f3c61f35 100644
--- a/examples/renderdemo.c
+++ b/examples/renderdemo.c
@@ -560,6 +560,10 @@ show_version(const char *name,
{
g_printf("%s (%s) %s\n", prog_name, PACKAGE_NAME, PACKAGE_VERSION);
g_printf("module interface version: %s\n", MODULE_VERSION);
+
+ if (PANGO_VERSION != pango_version())
+ g_printf("\nLinked Pango library has a different version: %s\n", pango_version_string ());
+
exit(0);
}
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"