diff options
author | Owen Taylor <otaylor@redhat.com> | 2001-09-18 20:05:20 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2001-09-18 20:05:20 +0000 |
commit | a49e070d24242c0297e6325587c4bc135e13e26c (patch) | |
tree | 0510d066cc185e9d0b1b736736da5266d259878e /pango/pango-font.h | |
parent | 39f3626e34e0522e0bdec591f6c0334307d39625 (diff) | |
download | pango-a49e070d24242c0297e6325587c4bc135e13e26c.tar.gz |
Up to 0.19.
Tue Sep 18 15:47:08 2001 Owen Taylor <otaylor@redhat.com>
* configure.in (PANGO_MINOR_VERSION): Up to 0.19.
* pango/pango-font.h pango/pango-fontmap.[ch] pango/fonts.c
pango/pangoxft-fontmap.c pango/pangoft-fontmap.c pango/pango-context.[ch]
pango/pangox-fontmap.c: Add new PangoFontFace and PangoFontFamily
object types, and change the font listing API to list faces and
families, instead of face names and font descriptions.
* pango/pango-font.h pango/fonts.c: Make PangoFontDescription
an opaque heap-allocated structure, add accessors and
convenience functions.
* pango/pango-font.h pango/pango-private.h: Make PangoFontMetrics
heap allocated, protect the structure definition with
#ifdef PANGO_ENABLE_BACKEND, and add getters for the fields.
* pango/pango-attributes.[ch] ( pango_attr_iterator_get_font):
instead of providing a base font description and one to fill
in, provide a single font description to modify based on
the attributes.
* pango/pango-attributes.[ch]: Fix PangoAttrFontDesc to have
a PangoFontDescription by reference, not by value.
* pango/pango-utils.[ch]: make pango_parse_style() and friends
take pointers to individual enumerations instead of to a
PangoFontDescription structure.
* pango/*.c: Fix for the PangoFontDescription and PangoFontMetrics
changes.
* pango/pango-{break,engine,indic,ot,xft}.h pango/Makefile.am
pango/opentype/Makefile.am: Protect portions with
PANGO_ENABLE_ENGINE to shrink the public API.
* modules/*/Makefile.am: -DPANGO_ENABLE_ENGINE.
* pango/{pangox.h,pangox-private.h} modules/basic/basic-x.c: Move
pango_x_font_get_unknown_glyph() into public header since it is
used from modules.
* pango/pango-{context,font,fontmap,modules.utils}.h pango/Makefile.am:
Protect portions with PANGO_ENABLE_BACKEND to shrink the public API.
* pango/*.h: Use G_BEGIN/END_DECLS
* examples/viewer-qt.[cc,h]: Fix for changes to font listing API,
PangoFontDescription.
* pango/pango-indic.h modules/indic/*: Since we install this
header fix it up to Pango conventions, namespece
ZERO_WIDTH_JOINER, ZERO_WIDTH_NON_JOINER.
* docs/pango-sections.txt: Updated.
Diffstat (limited to 'pango/pango-font.h')
-rw-r--r-- | pango/pango-font.h | 231 |
1 files changed, 183 insertions, 48 deletions
diff --git a/pango/pango-font.h b/pango/pango-font.h index b59038f2..e6d1cc0d 100644 --- a/pango/pango-font.h +++ b/pango/pango-font.h @@ -22,15 +22,13 @@ #ifndef __PANGO_FONT_H__ #define __PANGO_FONT_H__ -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - #include <pango/pango-coverage.h> #include <pango/pango-types.h> #include <glib-object.h> +G_BEGIN_DECLS + typedef struct _PangoFontDescription PangoFontDescription; typedef struct _PangoFontMetrics PangoFontMetrics; @@ -74,6 +72,14 @@ typedef enum { PANGO_STRETCH_ULTRA_EXPANDED } PangoStretch; +typedef enum { + PANGO_FONT_MASK_FAMILY = 1 << 0, + PANGO_FONT_MASK_STYLE = 1 << 1, + PANGO_FONT_MASK_VARIANT = 1 << 2, + PANGO_FONT_MASK_WEIGHT = 1 << 3, + PANGO_FONT_MASK_STRETCH = 1 << 4, + PANGO_FONT_MASK_SIZE = 1 << 5 +} PangoFontMask; /* CSS scale factors (1.2 factor between each size) */ #define PANGO_SCALE_XX_SMALL ((double)0.5787037037037) @@ -84,53 +90,199 @@ typedef enum { #define PANGO_SCALE_X_LARGE ((double)1.4399999999999) #define PANGO_SCALE_XX_LARGE ((double)1.728) -struct _PangoFontDescription -{ - char *family_name; - - PangoStyle style; - PangoVariant variant; - PangoWeight weight; - PangoStretch stretch; - - int size; -}; - -struct _PangoFontMetrics -{ - int ascent; - int descent; - int approximate_char_width; - int approximate_digit_width; -}; +/* + * PangoFontDescription + */ #define PANGO_TYPE_FONT_DESCRIPTION (pango_font_description_get_type ()) GType pango_font_description_get_type (void); +PangoFontDescription *pango_font_description_new (void); PangoFontDescription *pango_font_description_copy (const PangoFontDescription *desc); +PangoFontDescription *pango_font_description_copy_static (const PangoFontDescription *desc); +guint pango_font_description_hash (const PangoFontDescription *desc); gboolean pango_font_description_equal (const PangoFontDescription *desc1, const PangoFontDescription *desc2); void pango_font_description_free (PangoFontDescription *desc); void pango_font_descriptions_free (PangoFontDescription **descs, int n_descs); +void pango_font_description_set_family (PangoFontDescription *desc, + const char *family); +void pango_font_description_set_family_static (PangoFontDescription *desc, + const char *family); +G_CONST_RETURN char *pango_font_description_get_family (const PangoFontDescription *desc); +void pango_font_description_set_style (PangoFontDescription *desc, + PangoStyle style); +PangoStyle pango_font_description_get_style (const PangoFontDescription *desc); +void pango_font_description_set_variant (PangoFontDescription *desc, + PangoVariant variant); +PangoVariant pango_font_description_get_variant (const PangoFontDescription *desc); +void pango_font_description_set_weight (PangoFontDescription *desc, + PangoWeight weight); +PangoWeight pango_font_description_get_weight (const PangoFontDescription *desc); +void pango_font_description_set_stretch (PangoFontDescription *desc, + PangoStretch stretch); +PangoStretch pango_font_description_get_stretch (const PangoFontDescription *desc); +void pango_font_description_set_size (PangoFontDescription *desc, + gint size); +gint pango_font_description_get_size (const PangoFontDescription *desc); + +PangoFontMask pango_font_description_get_set_fields (const PangoFontDescription *desc); +void pango_font_description_unset_fields (PangoFontDescription *desc, + PangoFontMask to_unset); + +void pango_font_description_merge (PangoFontDescription *desc, + const PangoFontDescription *desc_to_merge, + gboolean replace_existing); +void pango_font_description_merge_static (PangoFontDescription *desc, + const PangoFontDescription *desc_to_merge, + gboolean replace_existing); + +gboolean pango_font_description_better_match (const PangoFontDescription *desc, + const PangoFontDescription *old_match, + const PangoFontDescription *new_match); + PangoFontDescription *pango_font_description_from_string (const char *str); char * pango_font_description_to_string (const PangoFontDescription *desc); char * pango_font_description_to_filename (const PangoFontDescription *desc); +/* + * PangoFontMetrics + */ +PangoFontMetrics *pango_font_metrics_ref (PangoFontMetrics *metrics); +void pango_font_metrics_unref (PangoFontMetrics *metrics); +int pango_font_metrics_get_ascent (PangoFontMetrics *metrics); +int pango_font_metrics_get_descent (PangoFontMetrics *metrics); +int pango_font_metrics_get_approximate_char_width (PangoFontMetrics *metrics); +int pango_font_metrics_get_approximate_digit_width (PangoFontMetrics *metrics); + +#ifdef PANGO_ENABLE_BACKEND + +PangoFontMetrics *pango_font_metrics_new (void); + +struct _PangoFontMetrics +{ + guint ref_count; + + int ascent; + int descent; + int approximate_char_width; + int approximate_digit_width; +}; + +#endif /* PANGO_ENABLE_BACKEND */ + +/* + * PangoFontFamily + */ + +#define PANGO_TYPE_FONT_FAMILY (pango_font_family_get_type ()) +#define PANGO_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FAMILY, PangoFontFamily)) +#define PANGO_IS_FONT_FAMILY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FAMILY)) + +typedef struct _PangoFontFamily PangoFontFamily; +typedef struct _PangoFontFace PangoFontFace; + +GType pango_font_family_get_type (void) G_GNUC_CONST; + +void pango_font_family_list_faces (PangoFontFamily *family, + PangoFontFace ***faces, + int *n_faces); +G_CONST_RETURN char *pango_font_family_get_name (PangoFontFamily *family); + +#ifdef PANGO_ENABLE_BACKEND + +#define PANGO_FONT_FAMILY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass)) +#define PANGO_IS_FONT_FAMILY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FAMILY)) +#define PANGO_FONT_FAMILY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FAMILY, PangoFontFamilyClass)) + +typedef struct _PangoFontFamilyClass PangoFontFamilyClass; + +struct _PangoFontFamily +{ + GObject parent_instance; +}; + +struct _PangoFontFamilyClass +{ + GObjectClass parent_class; + + void (*list_faces) (PangoFontFamily *family, + PangoFontFace ***faces, + int *n_faces); + const char * (*get_name) (PangoFontFamily *family); +}; + +#endif /* PANGO_ENABLE_BACKEND */ + +/* + * PangoFontFace + */ + +#define PANGO_TYPE_FONT_FACE (pango_font_face_get_type ()) +#define PANGO_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT_FACE, PangoFontFace)) +#define PANGO_IS_FONT_FACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT_FACE)) + +GType pango_font_face_get_type (void) G_GNUC_CONST; + +PangoFontDescription *pango_font_face_describe (PangoFontFace *face); +G_CONST_RETURN char *pango_font_face_get_face_name (PangoFontFace *face); + +#ifdef PANGO_ENABLE_BACKEND + +#define PANGO_FONT_FACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT_FACE, PangoFontFaceClass)) +#define PANGO_IS_FONT_FACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT_FACE)) +#define PANGO_FONT_FACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT_FACE, PangoFontFaceClass)) + +typedef struct _PangoFontFaceClass PangoFontFaceClass; + +struct _PangoFontFace +{ + GObject parent_instance; +}; + +struct _PangoFontFaceClass +{ + GObjectClass parent_class; + + const char * (*get_face_name) (PangoFontFace *face); + PangoFontDescription * (*describe) (PangoFontFace *face); +}; -/* Logical fonts - */ +#endif /* PANGO_ENABLE_BACKEND */ -typedef struct _PangoFontClass PangoFontClass; +/* + * PangoFont + */ #define PANGO_TYPE_FONT (pango_font_get_type ()) #define PANGO_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONT, PangoFont)) -#define PANGO_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT, PangoFontClass)) #define PANGO_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONT)) + +GType pango_font_get_type (void) G_GNUC_CONST; + +PangoFontDescription *pango_font_describe (PangoFont *font); +PangoCoverage * pango_font_get_coverage (PangoFont *font, + PangoLanguage *language); +PangoEngineShape * pango_font_find_shaper (PangoFont *font, + PangoLanguage *language, + guint32 ch); +PangoFontMetrics * pango_font_get_metrics (PangoFont *font, + PangoLanguage *language); +void pango_font_get_glyph_extents (PangoFont *font, + PangoGlyph glyph, + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); + +#ifdef PANGO_ENABLE_BACKEND + +#define PANGO_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONT, PangoFontClass)) #define PANGO_IS_FONT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONT)) #define PANGO_FONT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONT, PangoFontClass)) +typedef struct _PangoFontClass PangoFontClass; + struct _PangoFont { GObject parent_instance; @@ -150,29 +302,12 @@ struct _PangoFontClass PangoGlyph glyph, PangoRectangle *ink_rect, PangoRectangle *logical_rect); - void (*get_metrics) (PangoFont *font, - PangoLanguage *language, - PangoFontMetrics *metrics); + PangoFontMetrics * (*get_metrics) (PangoFont *font, + PangoLanguage *language); }; -GType pango_font_get_type (void) G_GNUC_CONST; - -PangoFontDescription *pango_font_describe (PangoFont *font); -PangoCoverage * pango_font_get_coverage (PangoFont *font, - PangoLanguage *language); -PangoEngineShape * pango_font_find_shaper (PangoFont *font, - PangoLanguage *language, - guint32 ch); -void pango_font_get_metrics (PangoFont *font, - PangoLanguage *language, - PangoFontMetrics *metrics); -void pango_font_get_glyph_extents (PangoFont *font, - PangoGlyph glyph, - PangoRectangle *ink_rect, - PangoRectangle *logical_rect); +#endif /* PANGO_ENABLE_BACKEND */ -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS #endif /* __PANGO_FONT_H__ */ |