]> granicus.if.org Git - libass/commitdiff
ass: make font_provider API private
authorwm4 <wm4@nowhere>
Fri, 28 Aug 2015 12:51:09 +0000 (14:51 +0200)
committerwm4 <wm4@nowhere>
Fri, 28 Aug 2015 12:51:39 +0000 (14:51 +0200)
We were discussing whether this should be public or private. It could be
public, because the API is potentially useful, and is relatively simple.
On the other hand, the API is not necessarily final, and making it
public would prevent us from improving/fixing it.

Make it private for now - making it public later is much easier than
having to break the public API later.

libass/ass.h
libass/ass_font.h
libass/ass_fontselect.h
libass/ass_types.h
libass/libass.sym

index 1fb571b43f23f31ae9e2ca14db5cd580c3f1daee..5fdee10b9f86220eb4b7d7a52824918fd711b56e 100644 (file)
@@ -471,41 +471,6 @@ void ass_set_selective_style_override(ASS_Renderer *priv, ASS_Style *style);
  */
 int ass_fonts_update(ASS_Renderer *priv);
 
-/**
- * \brief Create an empty font provider. A font provider can be used to
- * provide additional fonts to libass.
- * \param priv parent renderer
- * \param funcs callback functions
- * \param private data for provider callbacks
- *
- */
-ASS_FontProvider *
-ass_create_font_provider(ASS_Renderer *priv, ASS_FontProviderFuncs *funcs,
-                         void *data);
-
-/**
- * \brief Add a font to a font provider.
- * \param provider the font provider
- * \param meta font metadata. See struct definition for more information.
- * \param path absolute path to font, or NULL for memory-based fonts
- * \param index index inside a font collection file
- * \param psname PostScript name of the face (overrides index if present)
- * \param data private data for font callbacks
- * \return success
- *
- */
-int
-ass_font_provider_add_font(ASS_FontProvider *provider,
-                           ASS_FontProviderMetaData *meta, const char *path,
-                           unsigned int index, const char *psname, void *data);
-
-/**
- * \brief Free font provider and associated fonts.
- * \param provider the font provider
- *
- */
-void ass_font_provider_free(ASS_FontProvider *provider);
-
 /**
  * \brief Set hard cache limits.  Do not set, or set to zero, for reasonable
  * defaults.
index fb6462be31cecfcfa24f43b3cf0e6fe41050e600..693cabf1e0238ef3113636e5b3e90eee17a3083f 100644 (file)
@@ -26,7 +26,6 @@
 
 typedef struct ass_font ASS_Font;
 typedef struct ass_font_desc ASS_FontDesc;
-typedef struct ass_font_stream ASS_FontStream;
 
 #include "ass.h"
 #include "ass_types.h"
@@ -59,11 +58,6 @@ struct ass_font {
     double size;
 };
 
-struct ass_font_stream {
-    GetDataFunc func;
-    void *priv;
-};
-
 void charmap_magic(ASS_Library *library, FT_Face face);
 ASS_Font *ass_font_new(Cache *font_cache, ASS_Library *library,
                        FT_Library ftlibrary, ASS_FontSelector *fontsel,
index 267b6fe2b9c9f4f329c3d79cdd21a15b81945ee7..2c03a1668f84ef964cf58a97bfad2b7f23aa0975 100644 (file)
@@ -31,6 +31,151 @@ typedef struct font_info ASS_FontInfo;
 #include "ass.h"
 #include "ass_font.h"
 
+typedef struct font_provider ASS_FontProvider;
+
+/* Font Provider */
+typedef struct ass_font_provider_meta_data ASS_FontProviderMetaData;
+
+/**
+ * Get font data. This is a stream interface which can be used as an
+ * alternative to providing a font path (which may not be available).
+ *
+ * This is called by fontselect if a given font was added without a
+ * font path (i.e. the path was set to NULL).
+ *
+ * \param font_priv font private data
+ * \param output buffer; set to NULL to query stream size
+ * \param offset stream offset
+ * \param len bytes to read into output buffer from stream
+ * \return actual number of bytes read, or stream size if data == NULL
+ */
+typedef size_t  (*GetDataFunc)(void *font_priv, unsigned char *data,
+                               size_t offset, size_t len);
+
+/**
+ * Check if a glyph is supported by a font.
+ *
+ * \param font_priv font private data
+ * \param codepont Unicode codepoint (UTF-32)
+ * \return non-zero value if codepoint is supported by the font
+ */
+typedef int     (*CheckGlyphFunc)(void *font_priv, uint32_t codepoint);
+
+/**
+ * Destroy a font's private data.
+ *
+ *  \param font_priv font private data
+ */
+typedef void    (*DestroyFontFunc)(void *font_priv);
+
+/**
+ * Destroy a font provider's private data.
+ *
+ * \param priv font provider private data
+ */
+typedef void    (*DestroyProviderFunc)(void *priv);
+
+/**
+ * Add fonts for a given font name; this should add all fonts matching the
+ * given name to the fontselect database.
+ *
+ * This is called by fontselect whenever a new logical font is created. The
+ * font provider set as default is used.
+ *
+ * \param lib ASS_Library instance
+ * \param provider font provider instance
+ * \param name font name (as specified in script)
+ */
+typedef void    (*MatchFontsFunc)(ASS_Library *lib,
+                                  ASS_FontProvider *provider,
+                                  char *name);
+
+/**
+ * Substitute font name by another. This implements generic font family
+ * substitutions (e.g. sans-serif, serif, monospace) as well as font aliases.
+ *
+ * The generic families should map to sensible platform-specific font families.
+ * Aliases are sometimes used to map from common fonts that don't exist on
+ * a particular platform to similar alternatives. For example, a Linux
+ * system with fontconfig may map "Arial" to "Liberation Sans" and Windows
+ * maps "Helvetica" to "Arial".
+ *
+ * This is called by fontselect when a new logical font is created. The font
+ * provider set as default is used.
+ *
+ * \param priv font provider private data
+ * \param name input string for substitution, as specified in the script
+ * \param meta metadata (fullnames and n_fullname) to be filled in
+ */
+typedef void    (*SubstituteFontFunc)(void *priv, const char *name,
+                                      ASS_FontProviderMetaData *meta);
+
+/**
+ * Get an appropriate fallback font for a given codepoint.
+ *
+ * This is called by fontselect whenever a glyph is not found in the
+ * physical font list of a logical font. fontselect will try to add the
+ * font family with match_fonts if it does not exist in the font list
+ * add match_fonts is not NULL. Note that the returned font family should
+ * contain the requested codepoint.
+ *
+ * Note that fontselect uses the font provider set as default to determine
+ * fallbacks.
+ *
+ * \param font_priv font private data
+ * \param codepoint Unicode codepoint (UTF-32)
+ * \return output font family, allocated with malloc(), must be freed
+ *         by caller.
+ */
+typedef char   *(*GetFallbackFunc)(void *font_priv,
+                                   ASS_FontProviderMetaData *meta,
+                                   uint32_t codepoint);
+
+typedef struct font_provider_funcs {
+    GetDataFunc     get_data;       /* optional/mandatory */
+    CheckGlyphFunc  check_glyph;    /* mandatory */
+    DestroyFontFunc destroy_font;   /* optional */
+    DestroyProviderFunc destroy_provider; /* optional */
+    MatchFontsFunc  match_fonts;    /* optional */
+    SubstituteFontFunc subst_font;  /* optional */
+    GetFallbackFunc fallback_font;  /* optional */
+} ASS_FontProviderFuncs;
+
+/*
+ * Basic font metadata. All strings must be encoded with UTF-8.
+ * At minimum one family is required.
+ */
+struct ass_font_provider_meta_data {
+
+    /**
+     * List of localized font family names, e.g. "Arial".
+     */
+    char **families;
+
+    /**
+     * List of localized full names, e.g. "Arial Bold".
+     * The English name should be listed first to speed up typical matching.
+     */
+    char **fullnames;
+    int n_family;       // Number of localized family names
+    int n_fullname;     // Number of localized full names
+
+    int slant;          // Font slant value from FONT_SLANT_*
+    int weight;         // Font weight in TrueType scale, 100-900
+                        // See FONT_WEIGHT_*
+    int width;          // Font weight in percent, normally 100
+                        // See FONT_WIDTH_*
+};
+
+typedef struct ass_font_stream ASS_FontStream;
+
+struct ass_font_stream {
+    // GetDataFunc
+    size_t  (*func)(void *font_priv, unsigned char *data,
+                    size_t offset, size_t len);
+    void *priv;
+};
+
 ASS_FontSelector *
 ass_fontselect_init(ASS_Library *library,
                     FT_Library ftlibrary, const char *family,
@@ -45,4 +190,39 @@ void ass_fontselect_free(ASS_FontSelector *priv);
 ASS_FontProvider *ass_font_provider_new(ASS_FontSelector *selector,
         ASS_FontProviderFuncs *funcs, void *data);
 
+/**
+ * \brief Create an empty font provider. A font provider can be used to
+ * provide additional fonts to libass.
+ * \param priv parent renderer
+ * \param funcs callback functions
+ * \param private data for provider callbacks
+ *
+ */
+ASS_FontProvider *
+ass_create_font_provider(ASS_Renderer *priv, ASS_FontProviderFuncs *funcs,
+                         void *data);
+
+/**
+ * \brief Add a font to a font provider.
+ * \param provider the font provider
+ * \param meta font metadata. See struct definition for more information.
+ * \param path absolute path to font, or NULL for memory-based fonts
+ * \param index index inside a font collection file
+ * \param psname PostScript name of the face (overrides index if present)
+ * \param data private data for font callbacks
+ * \return success
+ *
+ */
+int
+ass_font_provider_add_font(ASS_FontProvider *provider,
+                           ASS_FontProviderMetaData *meta, const char *path,
+                           unsigned int index, const char *psname, void *data);
+
+/**
+ * \brief Free font provider and associated fonts.
+ * \param provider the font provider
+ *
+ */
+void ass_font_provider_free(ASS_FontProvider *provider);
+
 #endif                          /* LIBASS_FONTCONFIG_H */
index f56a754cb7b1bc1d629d2064ef75419af5ef87ad..f4a6ae5ec99f24197cac69ba8837dc4e438c461a 100644 (file)
@@ -45,142 +45,6 @@ typedef struct ass_renderer ASS_Renderer;
 typedef struct render_priv ASS_RenderPriv;
 typedef struct parser_priv ASS_ParserPriv;
 typedef struct ass_library ASS_Library;
-typedef struct font_provider ASS_FontProvider;
-
-/* Font Provider */
-typedef struct ass_font_provider_meta_data ASS_FontProviderMetaData;
-
-/**
- * Get font data. This is a stream interface which can be used as an
- * alternative to providing a font path (which may not be available).
- *
- * This is called by fontselect if a given font was added without a
- * font path (i.e. the path was set to NULL).
- *
- * \param font_priv font private data
- * \param output buffer; set to NULL to query stream size
- * \param offset stream offset
- * \param len bytes to read into output buffer from stream
- * \return actual number of bytes read, or stream size if data == NULL
- */
-typedef size_t  (*GetDataFunc)(void *font_priv, unsigned char *data,
-                               size_t offset, size_t len);
-
-/**
- * Check if a glyph is supported by a font.
- *
- * \param font_priv font private data
- * \param codepont Unicode codepoint (UTF-32)
- * \return non-zero value if codepoint is supported by the font
- */
-typedef int     (*CheckGlyphFunc)(void *font_priv, uint32_t codepoint);
-
-/**
- * Destroy a font's private data.
- *
- *  \param font_priv font private data
- */
-typedef void    (*DestroyFontFunc)(void *font_priv);
-
-/**
- * Destroy a font provider's private data.
- *
- * \param priv font provider private data
- */
-typedef void    (*DestroyProviderFunc)(void *priv);
-
-/**
- * Add fonts for a given font name; this should add all fonts matching the
- * given name to the fontselect database.
- *
- * This is called by fontselect whenever a new logical font is created. The
- * font provider set as default is used.
- *
- * \param lib ASS_Library instance
- * \param provider font provider instance
- * \param name font name (as specified in script)
- */
-typedef void    (*MatchFontsFunc)(ASS_Library *lib,
-                                  ASS_FontProvider *provider,
-                                  char *name);
-
-/**
- * Substitute font name by another. This implements generic font family
- * substitutions (e.g. sans-serif, serif, monospace) as well as font aliases.
- *
- * The generic families should map to sensible platform-specific font families.
- * Aliases are sometimes used to map from common fonts that don't exist on
- * a particular platform to similar alternatives. For example, a Linux
- * system with fontconfig may map "Arial" to "Liberation Sans" and Windows
- * maps "Helvetica" to "Arial".
- *
- * This is called by fontselect when a new logical font is created. The font
- * provider set as default is used.
- *
- * \param priv font provider private data
- * \param name input string for substitution, as specified in the script
- * \param meta metadata (fullnames and n_fullname) to be filled in
- */
-typedef void    (*SubstituteFontFunc)(void *priv, const char *name,
-                                      ASS_FontProviderMetaData *meta);
-
-/**
- * Get an appropriate fallback font for a given codepoint.
- *
- * This is called by fontselect whenever a glyph is not found in the
- * physical font list of a logical font. fontselect will try to add the
- * font family with match_fonts if it does not exist in the font list
- * add match_fonts is not NULL. Note that the returned font family should
- * contain the requested codepoint.
- *
- * Note that fontselect uses the font provider set as default to determine
- * fallbacks.
- *
- * \param font_priv font private data
- * \param codepoint Unicode codepoint (UTF-32)
- * \return output font family, allocated with malloc(), must be freed
- *         by caller.
- */
-typedef char   *(*GetFallbackFunc)(void *font_priv,
-                                   ASS_FontProviderMetaData *meta,
-                                   uint32_t codepoint);
-
-typedef struct font_provider_funcs {
-    GetDataFunc     get_data;       /* optional/mandatory */
-    CheckGlyphFunc  check_glyph;    /* mandatory */
-    DestroyFontFunc destroy_font;   /* optional */
-    DestroyProviderFunc destroy_provider; /* optional */
-    MatchFontsFunc  match_fonts;    /* optional */
-    SubstituteFontFunc subst_font;  /* optional */
-    GetFallbackFunc fallback_font;  /* optional */
-} ASS_FontProviderFuncs;
-
-/*
- * Basic font metadata. All strings must be encoded with UTF-8.
- * At minimum one family is required.
- */
-struct ass_font_provider_meta_data {
-
-    /**
-     * List of localized font family names, e.g. "Arial".
-     */
-    char **families;
-
-    /**
-     * List of localized full names, e.g. "Arial Bold".
-     * The English name should be listed first to speed up typical matching.
-     */
-    char **fullnames;
-    int n_family;       // Number of localized family names
-    int n_fullname;     // Number of localized full names
-
-    int slant;          // Font slant value from FONT_SLANT_*
-    int weight;         // Font weight in TrueType scale, 100-900
-                        // See FONT_WEIGHT_*
-    int width;          // Font weight in percent, normally 100
-                        // See FONT_WIDTH_*
-};
-
 
 /* ASS Style: line */
 typedef struct ass_style {
index 8a6826ad065a777d46b16250f72c9123387615e6..5cdca1fcf55766fb93876d06062ba576e5d4a33f 100644 (file)
@@ -42,6 +42,3 @@ ass_set_line_position
 ass_set_pixel_aspect
 ass_set_selective_style_override_enabled
 ass_set_selective_style_override
-ass_create_font_provider
-ass_font_provider_add_font
-ass_font_provider_free